Un test difettoso è un'analisi del codice dell'applicazione web che non riesce a produrre lo stesso risultato ogni volta che viene eseguita la stessa analisi. Ogni volta che viene scritto un nuovo codice per sviluppare o aggiornare il software del computer, una pagina Web o un'app, è necessario testarlo durante il processo di sviluppo per assicurarsi che l'applicazione faccia ciò che dovrebbe fare quando viene rilasciata per l'uso. Logicamente, quando viene sottoposto più volte allo stesso test, il codice produrrà lo stesso risultato: l'applicazione funzionerà correttamente ogni volta, superando così il test, oppure non funzionerà correttamente ogni volta, fallendo così il test.
Tuttavia, apparentemente a caso, occasionalmente lo stesso test dello stesso codice produrrà risultati diversi. A volte mostrerà che il codice ha superato il test e l'applicazione ha funzionato come pianificato, ea volte mostrerà che il codice ha fallito il test e non ha funzionato come pianificato. Quando il test non riesce a produrre un risultato coerente, il test è considerato difettoso.
I test traballanti possono essere causati da vari fattori:
- un problema con il codice appena scritto
- un problema con il test stesso
- qualche fattore esterno che compromette i risultati del test
Una volta che un test è considerato difettoso, ci sono diversi approcci per gestire i risultati confusi. Alcuni sviluppatori ignoreranno completamente la debolezza, supponendo che il problema sia con il test e non con il codice appena scritto. Altri eseguiranno nuovamente il test più volte e torneranno indietro per indagare ulteriormente se il test fallisce un certo numero di volte di seguito, indicando loro un vero fallimento.
Tuttavia, l'approccio più sicuro - l'unico modo per scoprire veramente se c'è un bug nel codice - è fermare lo sviluppo dell'applicazione, investigare a fondo la causa del test difettoso e risolverlo. Se non viene risolto e c'è davvero un problema con il codice, un problema potrebbe finire per portare a un altro e un altro poiché più è costruito sul codice difettoso.
Quando si investiga la causa di un test difettoso, lo sviluppatore dovrà raccogliere dati per cercare di scoprire le differenze all'interno dei risultati apparentemente casuali al fine di isolare la causa dei test falliti. Il codice dovrebbe essere riesaminato, così come il test stesso, e se non vengono rilevati problemi, sarà necessario esaminare i fattori esterni per vedere se potrebbero essere al centro del problema. Lo sviluppatore potrebbe verificare se i test che hanno superato sono stati eseguiti in una certa ora del giorno mentre quelli che hanno avuto esito negativo sono stati eseguiti in un momento diverso della giornata, se alcuni programmi erano in esecuzione sul computer dello sviluppatore contemporaneamente a test non riusciti che lo erano non viene eseguito quando i test sono stati superati o se i test che non hanno avuto esito positivo lo hanno fatto nello stesso punto del test o in momenti diversi durante il test.
A volte, la causa del test difettoso è semplice da diagnosticare e può essere risolta rapidamente. Questo è lo scenario migliore. Altre volte, non vi è alcuna soluzione facile e, sebbene potenzialmente costoso e dispendioso in termini di tempo, lo sviluppatore potrebbe dover eliminare il test e riscriverlo da zero per garantire l'accuratezza dei risultati del test.
Sfortunatamente, i test difettosi non sono rari: Google, ad esempio, riferisce che il 16 percento dei suoi test mostra un certo livello di difettosità. Possono arrestare temporaneamente la produzione, ma possono essere affrontati e risolti.