Perché dovresti automatizzare un test?

Perché automatizzare un test? Quali vantaggi otteniamo con l'automazione dei test?

Molto spesso, quando le persone vengono coinvolte in test automatizzati, il loro obiettivo principale si sposta dalla progettazione di buoni test per garantire che il codice automatizzato possa effettivamente eseguire ed eseguire il test.

Durante lo sprint, quando i membri del team sono sotto pressione per fornire le storie in un lasso di tempo limitato, di solito non c'è abbastanza tempo per testare tutti gli scenari pianificati, per non parlare della scrittura di script di test automatizzati per testare la nuova funzionalità.


Possiamo impantanarci con i dettagli del lavoro, codificare, rivedere, eseguire e dimenticare il motivo principale perché in realtà automatizziamo un test!



Perché automatizziamo un test?

Questa è una delle domande che mi pongo quando intervisto i candidati per un ruolo di Test Automation e, con mia sorpresa, molti candidati sembrano perdere il motivo principale e più importante per automatizzare un test. Alcune delle risposte che ricevo dai candidati sono abbastanza credibili, ma ancora non la risposta che sto cercando. Alcune delle risposte che ottengo alla domanda precedente sono:


Aumenta la copertura del test

Questa risposta è abbastanza valida, ma come definiamo la copertura? Se abbiamo 100 test, come possiamo misurare la percentuale di copertura?

Con una pratica matura di automazione dei test in atto, potresti eseguire centinaia di test in un periodo di tempo relativamente breve.

Per questo motivo, possiamo creare più casi di test, più scenari di test e testare con più dati di input per una determinata funzionalità, ottenendo così maggiore sicurezza che il sistema funzioni come previsto.

Tuttavia, nei test e in particolare nell'automazione dei test, più test non significano davvero una migliore qualità o più possibilità di trovare bug.


In un post di Martin Fowler, dove discute Copertura del test , menziona

Se rendi un determinato livello di copertura un obiettivo, le persone cercheranno di raggiungerlo. Il problema è che i numeri di copertura elevati sono troppo facili da raggiungere con test di bassa qualità. Al livello più assurdo che hai AssertionFreeTesting . Ma anche senza di ciò si ottengono molti test alla ricerca di cose che raramente vanno male, distraendoti dal testare le cose che contano davvero.

Risparmia tempo

Questa risposta è anche vera in quanto puoi dedicare tempo prezioso a test esplorativi interessanti mentre i test automatizzati sono in esecuzione. Tuttavia, per una nuova funzionalità che è stata sviluppata, potrebbe effettivamente essere necessario più tempo per scrivere script automatizzati piuttosto che testare la funzionalità manualmente nel primo istante.

Quindi, è importante notare che per risparmiare tempo dai test automatizzati, è necessario uno sforzo iniziale maggiore nello scripting dei test automatizzati, assicurandosi che siano revisionati dal codice e che non ci siano intoppi nell'esecuzione dei test automatizzati.


Trova altri bug

Questa risposta a volte mi preoccupa perché non ho mai visto alcuna metrica che suggerisca che siano stati rilevati più bug dall'automazione rispetto ai test manuali / esplorativi. I test automatizzati generalmente verificano la presenza di eventuali regressioni nel sistema dopo l'implementazione del nuovo codice.

C'è sempre più possibilità di trovare bug nelle nuove funzionalità che nelle funzionalità esistenti. Inoltre, ci sono altri motivi perché i test automatizzati non riescono a trovare difetti

Sostituire i tester manuali

Questa è probabilmente la risposta peggiore che ho sentito riguardo al motivo per cui automatizziamo un test. Esiste una chiara distinzione tra ciò che fa un tester manuale e ciò che controlla un test automatizzato. Il test automatizzato non è un test, è un controllo dei fatti.

Per poter automatizzare un test, dobbiamo conoscere il risultato atteso in modo da poter verificare il risultato valido o non valido. Questo è ciò che ci dà vero o falso, positivo o negativo, passa o fallisce.


Il test, d'altra parte, è un esercizio di indagine, in cui progettiamo ed eseguiamo test simultaneamente. Molte cose possono comportarsi diversamente dove solo un osservatore umano attento può notarlo.

Saranno sempre necessari buoni tester manuali a causa della diversa mentalità e della capacità di mettere in discussione il sistema.



Migliora la qualità

Sebbene i test automatizzati siano in grado di darci un feedback rapido e di avvisarci sullo stato di salute di un'applicazione, in modo da poter annullare qualsiasi modifica al codice che ha danneggiato il sistema, i test automatici da soli non migliorano la qualità. Solo perché abbiamo un'automazione dei test matura in atto non garantisce che nessun bug sfugga alla produzione.

Possiamo migliorare la qualità assicurandoci che le pratiche corrette siano seguite dall'inizio alla fine di un ciclo di sviluppo. La qualità non è un ripensamento; dovrebbe essere cotto dall'inizio. Non è sufficiente affidarsi a test automatizzati per avere un quadro della qualità del prodotto.




Allora, qual è il motivo principale per cui automatizziamo un test?

La risposta breve è ripetibilità . Automatizziamo un test perché dobbiamo eseguire gli stessi test più e più volte. Vorresti automatizzare un test se dovessi eseguirlo una sola volta e dimenticartene? Ovviamente no! Il tempo e gli sforzi che dedichi all'automazione del test, avresti potuto eseguirlo manualmente.

Ora, per definizione, automatizziamo i test ripetibili, cioè i test di regressione, che dobbiamo eseguire frequentemente.

Quindi, la prossima volta, quando vuoi automatizzare un test, fai un passo indietro e pensa con che frequenza è probabile che tu lo esegua? Vale davvero la pena di automatizzare il test?