La stabilità dei test automatici è un aspetto importante per un CI/CD sicuro e la fiducia nell'automazione.
Storia della questione
All'inizio i test automatici venivano eseguiti manualmente e l'instabilità non rappresentava un grosso problema. Con l'aumento del numero di test e l'integrazione nei pipeline, l'emergere di flaky tests (test che falliscono a volte senza motivi apparenti) è diventato un grande problema.
Problema
I flaky tests portano a:
Soluzione
Cosa può aiutare:
Esempio di utilizzo delle attese:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
Caratteristiche chiave:
Risolgerà il problema dei flaky tests un retry di massa?
No, è solo una soluzione temporanea "tappabuchi". Non elimina la causa — maschera solo i problemi esistenti.
È possibile eseguire i test automatici solo di notte per evitare interruzioni a causa del carico?
Eseguire di notte non eliminerà l'instabilità, ridurrà solo la probabilità; il problema rimarrà, bisogna affrontarne le cause.
Tutti i flaky tests dovrebbero essere eliminati immediatamente?
No. Meglio cercare di localizzare la causa, correggerla — solo se non si riesce a renderla stabile o se è un test obsoleto, non pertinente — eliminarlo.
Il team ha fatto ricorso a retry di massa per i test che fallivano costantemente. Di conseguenza, l'elenco dei test "verdi" è aumentato, ma la qualità dei test automatici non è aumentata — i bug venivano trascurati.
Vantaggi:
Svantaggi:
Il team ha trovato e descritto le cause sistematiche dei flaky: dati non puliti, ritardi nell'UI, problemi di rete. Hanno corretto l'architettura, aggiunto attese appropriate, configurato l'ambiente — il numero di test instabili è drasticamente diminuito.
Vantaggi:
Svantaggi: