L'affidabilità dei test automatizzati: una questione di contesto e strategia
Giorgio BrajnikLa domanda “Mi devo fidare dei test automatizzati?” è complessa e la risposta dipende da numerosi fattori. Contrariamente a quanto si potrebbe pensare, la scelta tra esecuzione manuale o automatica non è l’elemento più critico.
L’idea fondamentale è che le esecuzioni dei test forniscono informazioni sullo stato dell’applicazione testata, e che quindi la fiducia nei test si riflette nell’affidabilità che associamo a queste informazioni, e quindi alle decisioni che prendiamo (ad es. di rilasciare o meno).
Il cuore della questione risiede in due tipi di errori che un test può generare: i falsi allarmi e i mancati allarmi. In scenari reali, è praticamente impossibile eliminare completamente entrambi questi errori.
Nel caso di CrowdStrike ci si potrebbe chiedere se e in che modo di diversi attori abbiamo valutato questi aspetti.
Per valutare l’affidabilità di questi test, dobbiamo considerare diversi aspetti:
Tipologia del sistema e profilo di rischio
La natura del sistema da testare e il suo profilo di rischio sono cruciali. Dobbiamo chiederci:
- Si tratta di un prototipo a breve termine o di un sistema a lungo termine?
- Ci sono rischi per la vita umana o possibili danni fisici?
- Quali sono i potenziali danni finanziari o legali?
La risposta a queste domande influenza direttamente l’approccio al testing e il livello di affidabilità richiesto.
Strategia di testing
Una strategia di testing ben strutturata è fondamentale. Consideriamo:
- Sono stati implementati vari livelli di testing (di unità? di componente? di integrazione? di sistema? di accettazione?)
- Esistono meccanismi di monitoraggio?
- Quanti mock non validati sono stati utilizzati?
Una strategia completa riduce il rischio di mancati allarmi e aumenta l’affidabilità complessiva del processo di testing.
Frequenza e analisi
La frequenza con cui vengono eseguiti i test è un altro fattore chiave:
- Con che frequenza vengono eseguiti i test?
- Viene effettuata regolarmente un’analisi dei rischi?
- I risultati delle esecuzioni dei test vengono esaminati attentamente?
Un’esecuzione frequente e un’analisi costante dei risultati permettono di identificare tempestivamente eventuali problemi e di adattare la strategia di testing.
Qualità dei test
La qualità intrinseca dei test è cruciale:
- Quale livello di copertura producono i test?
- Vengono sviluppati nuovi test in base alle esigenze emergenti?
- Chi sono le persone che li scrivono? sulla base di cosa?
Il concetto di copertura è fondamentale. Una buona copertura del codice, delle funzionalità e dei casi d’uso aiuta a capire meglio quale possa essere l’affidabilità dei test automatizzati.
Qualità del processo di test
Spesso, i problemi si annidano nelle “pieghe” del sistema:
- Ci sono gap tra i diversi livelli di testing?
- Esistono lacune nel testing di come componenti del sistema interagiscono tra loro?
- Ci sono lacune nel testing di come un componente possa venir configurato?
Un processo di test di alta qualità mira a identificare e colmare questi gap, aumentando l’affidabilità complessiva.
In conclusione, l’affidabilità dei test automatizzati non è una questione binaria, ma dipende da un complesso intreccio di fattori. Un approccio olistico che consideri tutti questi aspetti può portare a un sistema di testing robusto e affidabile. La chiave sta nel continuo monitoraggio, analisi e miglioramento del processo di testing, adattandolo alle specifiche esigenze e rischi del sistema in questione.
Alla fin fine tutti noi vorremmo evitare di trovarci in situazioni come questa:

Pubblicato originariamente come Articolo LinkedIn.
