Storicamente, nei progetti a lungo termine, l'automazione dei test tende ad essere un peso: i test venivano scritti "al volo", non supportati e, dopo anni, dovevano essere scartati. La frequente rotazione del team porta alla perdita di conoscenze, l'architettura dei test si dissolve e l'automazione si trasforma in "accumulo di script".
Problema: gli scenari di test diventano obsoleti, vengono a mancare i proprietari dei test, manca un'architettura documentata del sistema di test, non viene applicato il code review, si accumula debito tecnico. I nuovi membri del team hanno difficoltà a capire come e cosa è coperto dai test, e quale test risponde a cosa.
Soluzione — adottare pratiche GitFlow per i test automatici, scrivere codice leggibile e ben documentato per i test, utilizzare modelli di progettazione (come la Modular Test Architecture), automatizzare il mantenimento della documentazione (README, generazione automatica di report di copertura e attualità dei test). È fondamentale effettuare code review per i test automatici, descrivere gli scenari di test nella documentazione, implementare ownership attraverso la distribuzione della responsabilità.
Caratteristiche chiave:
Ha senso utilizzare l'analisi statica del codice dei test automatici?
Sì! L'analisi statica (linters, sonarQube, ecc.) aiuta a mantenere la qualità e l'uniformità del codice dei test, prevenendo l'emergere di codice "rapido e sporco".
Con quale frequenza bisogna ripulire i test automatici da scenari obsoleti?
Si raccomanda di rivedere l'attualità degli scenari ad ogni ciclo di rilascio (ad esempio, una volta al mese), per escludere funzionalità non pertinenti e non compromettere le metriche di stabilità.
Il 100% di copertura con test automatici aiuta a evitare l'obsolescenza dei test?
No. Anche con una copertura "totale", i test automatici possono diventare obsoleti a causa di cambiamenti nei requisiti e nell'architettura, se non vengono mantenuti in uno stato attuale.
In una grande azienda tutti i test erano collocati in un unico repository, scritti da chiunque e in qualsiasi modo. Dopo un anno, quasi nessuno era in grado di spiegare cosa fosse coperto e cosa no, la maggior parte degli scenari era obsoleta.
Vantaggi:
Svantaggi:
Per i test automatici è stato creato un piano maestro separato: ogni modulo aveva il proprio proprietario; la struttura del codice era descritta nel README, gli standard in CONTRIBUTING.md. Ogni PR nel repository di test richiedeva una code review con una checklist obbligatoria.
Vantaggi:
Svantaggi: