Ho alcuni test di integrazione molto lenti che usano Selenium e richiedono molte impostazioni del database. I tempi di setup e di smontaggio sono nell'ordine di decine di secondi mentre i corpi del test impiegano solo pochi secondi ciascuno. Dato che ci sono centinaia di questi test, questo si aggiunge molto.
Il mio posto precedente ha un elaborato sistema di pooling / riutilizzo delle risorse che identifica quali finestre del browser / tabelle del database sono in uno stato "buono" e le riutilizza invece di ricreare. Questo riduce il tempo di setup / demolizione a quasi 0 per test (quando nessun test fallisce)!
Ho trascorso alcuni giorni a fare una versione semplificata del codice di riutilizzo del browser Selenium e questo ha prodotto ottimi risultati. Tuttavia, il codice di manutenzione del database sarebbe molto più difficile (ad esempio, la mia vecchia posizione utilizza Hibernate per ricreare lo schema, che non posso usare qui). Stimo che ci vorrebbe almeno una settimana di lavoro, ma dal momento che il tempo risparmiato è solo in CI, trovo difficile mettere il mio manager a bordo. Credo che una svolta più rapida aiuterebbe anche lo sviluppo dei test quotidiani, ma a nessuno sembra importare.
Mi chiedo quanto tempo le persone normalmente spendono per l'ottimizzazione del test di integrazione lento, specialmente in piccoli gruppi (3-4 persone). E in che modo le persone giustificano un'ottimizzazione coinvolta come sopra?
Modifica:
Un po 'più dettagli sui costi: i test di integrazione vengono eseguiti su scatole Jenkins condivise durante la notte. Richiedono 1-2 ore a seconda di quanti test falliscono e quanto è occupato il box del database condiviso.
Li usiamo principalmente per i test di regressione. Il passaggio è un requisito per l'approvazione dell'uscita; tuttavia, la gestione consente di rilasciare correzioni / hotfix minori con solo i test di integrazione unità e non Selenium più veloci.
Conosco due casi nell'ultimo anno che sono stati rilasciati bug che sarebbero stati catturati dai test del selenio. Speravo di poterlo eliminare completando i test entro un periodo di tempo.
Inoltre, è possibile risparmiare un po 'di tempo di sviluppo poiché ogni esecuzione manuale di un particolare test sarà più veloce. Ma un calcolo del back-of-the-envelope mostra il tempo trascorso in attesa che i test eseguano account di almeno l'1% del tempo di sviluppo, quindi probabilmente non vale la pena di ottimizzare ulteriormente ...