Test automatici e manuali: pro, contro e quale è meglio
Pubblicato: 2021-10-05Il testing è una parte insostituibile dello sviluppo del software. I test di qualità aiutano a combattere le violazioni della sicurezza, che attualmente costano alle aziende circa $ 25 al minuto secondo RiskIQ.
Nelle metodologie Agile, il test è un processo continuo che inizia proprio all'inizio dello sviluppo. Oggi i test possono essere eseguiti manualmente o automaticamente. Diamo un'occhiata al dilemma del test manuale e del test automatizzato . Imparerai i vantaggi dei test di automazione rispetto ai test manuali e viceversa e riceverai consigli su dove utilizzare quale approccio di test.
Contenuti:
- Differenza tra test manuali e test di automazione
- Vantaggi dei test di automazione
- Carenze dei test automatizzati
- Vantaggi del test manuale
- Carenze dei test manuali
- Test manuali vs test automatizzati
- Dove dovresti usare il test manuale?
- Dove dovresti usare i test automatici?
Qual è la differenza tra test manuali e test di automazione?
Il test manuale viene eseguito direttamente da uno specialista di assicurazione della qualità (QA) che esegue il software attraverso scenari di test basati sui requisiti. I QA testano uno scenario alla volta.
Nei test automatizzati, gli scenari di test vengono eseguiti dal software, che spesso consente di testare più scenari contemporaneamente. Tuttavia, affinché i test automatizzati funzionino, gli scenari di test devono essere preparati da uno specialista del controllo qualità dell'automazione , quindi i test automatizzati non sono esenti dal coinvolgimento umano. Per abilitare i test automatizzati, un QA scrive script in un linguaggio di programmazione a sua scelta, generalmente Python, C# o Java . Tali script vengono quindi avviati utilizzando strumenti come TestComplete, Selenium o Appium . Il software esegue i test più velocemente di un essere umano, ma ha bisogno di un essere umano per funzionare.
Infine, non tutti i test possono essere eseguiti dal software.
Vantaggi dei test di automazione
Perché ci sforziamo di automatizzare tutto in primo luogo? Perché (a) libera il nostro tempo per fare cose più divertenti e più importanti e (b) ci permette di raggiungere i nostri obiettivi più velocemente. Questo vale anche per lo sviluppo del software. Tuttavia, c'è di più nell'automazione dei test del software.
L'automazione consente di risparmiare tempo su attività che altrimenti richiederebbero molto tempo
Il test del software può richiedere molto tempo ed è spesso ripetitivo, ad esempio quando si verifica se un'applicazione si comporta come dovrebbe dopo un aggiornamento dell'app stessa o del sistema operativo. Sia iOS che Android vengono aggiornati frequentemente e talvolta tali aggiornamenti influiscono sulle funzionalità delle applicazioni. Se un aggiornamento influisce sulle funzionalità utilizzate dalla tua app, devi testare tali funzionalità per assicurarti che l'app funzioni correttamente con l'ultima versione del sistema operativo.
Tali attività ripetitive possono essere eseguite manualmente, ovviamente, ma richiedono molto tempo dai controlli di qualità. Invece, un QA può creare algoritmi per eseguire automaticamente questi test ripetitivi mentre il QA lavora per testare nuove funzionalità. Uno script può eseguire test fino a cinque volte più velocemente di una persona e il QA completerà alcune attività non automatizzate o scriverà più script contemporaneamente.
Inoltre, i test automatizzati possono essere eseguiti 24 ore su 24 , 7 giorni su 7 , mentre gli specialisti dei test manuali generalmente lavorano un tradizionale giorno di otto ore cinque giorni alla settimana.
Esempio: i test di regressione vengono ripetuti dopo ogni aggiornamento di una funzionalità, un'app o un sistema operativo. Questi test verificano se l'aggiornamento crea un bug o un conflitto tra le funzionalità. Ci vuole molto tempo perché un QA esegua e riesegui manualmente questi test dopo ogni aggiornamento.
Uno specialista dell'automazione QA può scrivere uno script di test una volta ed eseguire i test tutte le volte necessarie. Durante l'esecuzione di questi test, i QA manuali e di automazione possono essere impegnati a testare altre funzionalità.
L'automazione può aiutare a combattere l'errore umano
Le persone commettono errori e possono perdere le cose. Le macchine, se correttamente programmate, non commettono errori. E quando c'è un errore nel codice di test o nella sua esecuzione, lo saprai immediatamente poiché il test avrà esito negativo . Con i test automatizzati, non c'è "sembra funzionare come previsto": o funziona o non funziona.
Esempio: per mancanza di tempo o di specialisti, i controlli di qualità manuali possono non rilevare piccoli segni di bug nelle funzionalità . Tali bug possono portare a fallimenti davvero epici e risolverli nelle fasi successive dello sviluppo costerà molto più tempo (e denaro) rispetto a risolverli all'inizio.
Questo scenario non può verificarsi quando un computer esegue i test perché i computer (a) eseguono i test più velocemente delle persone e (b) non si distraggono, si stancano o non si abituano troppo al codice.
L'automazione può far risparmiare denaro (se applicata correttamente)
Questo è apparentemente semplice: quando un QA dedica meno tempo a un'attività, costa meno. Nei dibattiti sui test manuali rispetto a quelli automatizzati, questo fatto emerge spesso. Ed è vero in una certa misura: a lungo termine, automatizzare ciò che può essere automatizzato molto probabilmente ti farà risparmiare molte ore di lavoro per il controllo qualità e, quindi, molti soldi.
Tuttavia, c'è un altro lato della medaglia, poiché anche il software di test automatizzato costa denaro. Per questo motivo, l' automazione dei test viene spesso utilizzata su grandi progetti piuttosto che su progetti a breve termine in cui c'è poco da guadagnare.
Alcuni test possono essere eseguiti solo con test automatizzati
Quando si tratta di testare grandi applicazioni che dovrebbero essere utilizzate da molte persone contemporaneamente (software di videoconferenza o streaming, strumenti educativi online o giochi popolari), testare manualmente le loro prestazioni sotto stress è praticamente impossibile. I test che controllano se un'applicazione può sopportare un carico di diverse centinaia di utenti contemporaneamente senza problemi richiederebbero centinaia di tester. Non sembra una soluzione logica o economicamente praticabile, vero?
Tuttavia, uno script può emulare facilmente un tale carico. I test automatizzati sono necessari per i test di carico, stress e prestazioni. Tuttavia, questi test non sono necessari per ogni singola app sviluppata. Dovrai decidere se eseguirli separatamente per ciascun prodotto.
Carenze dei test automatizzati
Ora per i contro.
I test automatici sono più complessi dei test manuali
Gli script non si scrivono da soli. I QA li scrivono manualmente per ogni attività, e questo significa che un ingegnere dell'automazione QA ha bisogno di abilità di programmazione e conoscenza di almeno un linguaggio di programmazione (il più popolare per i test automatizzati è Python, Java e C#). Per impostare il test automatizzato, un QA compila uno scenario di test per l'esecuzione di uno script. Ogni scenario è scritto a mano, il che richiede tempo da parte di un QA.
Tuttavia, con attività ripetitive e attività che possono essere automatizzate , a lungo termine l'automazione è l'opzione migliore.
I test automatizzati non sono la risposta a tutti i problemi
Ci sono cose che i test automatizzati non possono fare con le tecnologie attuali. Ad esempio, non possono sostituire i test manuali quando si tratta di testare il design o la facilità d'uso : queste cose richiedono intuizioni umane. Tuttavia, anche i test sulla progettazione e la facilità d'uso di un'app non vengono sempre eseguiti dai QA: il feedback degli utenti può essere acquisito da un gruppo di utenti di test oltre ai dipendenti dell'azienda. Questo gruppo di prova può o non può essere pagato.
Un altro caso in cui il test automatizzato non è all'altezza è il test di funzionalità completamente nuove. Affinché uno specialista QA sappia come programmare uno script di test, deve sapere quali risultati deve aspettarsi .
La maggior parte dei test del software può essere automatizzata. Ma non tutto. Ci sono ancora casi in cui il test manuale è il metodo preferito. Parliamo un po' dei vantaggi dei test manuali rispetto ai test automatizzati .
Vantaggi del test manuale
La realtà dello sviluppo software moderno è che la maggior parte dei test viene ancora eseguita manualmente. Le ragioni variano da un'azienda all'altra. Ne evidenzieremo solo alcuni qui.
Il test manuale è più facile da implementare
È abbastanza semplice dotare la tua azienda di specialisti QA manuali qualificati anziché esperti di automazione. Molte attività di test manuali possono essere eseguite senza accesso al codice e senza conoscenza della codifica. Ecco perché a volte i test sono considerati l'ingresso nello sviluppo del software: puoi iniziare con il minimo indispensabile di conoscenze e acquisire competenze lungo il percorso . Ciò significa che sul mercato ci sono più QA manuali validi che specialisti in automazione.
Il test manuale è la scelta giusta per compiti estremamente complessi
Quando si testano funzionalità eccezionalmente complesse, il tempo per eseguire i test manuali e il costo per farlo a volte può essere inferiore al tempo e al denaro necessari per scrivere script di automazione. Inoltre, questi tipi di attività vengono solitamente completati solo una volta a causa delle loro specifiche. Ciò rende l'automazione inefficiente in termini di costi .
Tuttavia, ciò dipenderà almeno in parte anche dalle competenze del tuo QA, poiché uno specialista in automazione altamente qualificato è in grado di creare scenari complessi più velocemente e con maggiore precisione rispetto a un QA junior. Dovrai anche calcolare l'utilità della creazione di ogni script di automazione .
Il test manuale è più adatto per determinate attività
Il design dell'interfaccia, l'esperienza utente e l'usabilità non possono ancora essere testati dagli script. Questi test richiedono un feedback umano, a volte da specialisti del controllo qualità, altre volte da un gruppo di utenti di test.
Un altro caso è quando è necessario prestare maggiore attenzione a parti specifiche di un test: scrivere uno script per un test del genere è troppo complicato e di solito non affidabile quanto l'utilizzo di uno specialista che sa cosa cercare.
A volte, i QA eseguono anche i test spontaneamente, in modo insolito e senza preparazione. Questo è chiamato test ad hoc . I test ad hoc possono aiutarti a trovare difetti imprevisti. Per tali test, scrivere uno script è impossibile poiché non si sa quale risultato aspettarsi. Inoltre, tali script verrebbero probabilmente utilizzati solo una volta .
Esempio: un tipo di test ad hoc, chiamato test delle scimmie , mira a scoprire cosa è necessario fare per violare il sistema. Vengono eseguite azioni casuali per vedere se qualcosa provoca l'arresto anomalo del sistema.
Carenze dei test manuali
Ecco perché ora i test di automazione sono spesso preferiti rispetto ai test manuali.
Il test manuale è intrinsecamente più lento
La stessa attività che potrebbe richiedere a un QA umano diverse ore o addirittura giorni per essere completata richiederà pochi minuti o addirittura secondi per una macchina. I sistemi computerizzati e gli script analizzano i dati più velocemente di un essere umano. Il test manuale è noioso e richiede tempo, soprattutto con attività ripetitive, mentre l'automazione dei test condotta con una preparazione adeguata è rapida e semplice.
Il test manuale è soggetto a errori
Le persone possono perdere i dettagli quando si tratta di attività che vengono eseguite più e più volte, come testare nuovamente una funzionalità dopo ogni aggiornamento.
La distribuzione dell'attenzione su più punti in una singola attività può anche comportare problemi per un QA, rendendo i risultati dei test meno affidabili . Con funzionalità complesse, dovrai decidere caso per caso tra test manuali e automatizzati. A volte, l' automazione può essere irrazionalmente costosa e dispendiosa in termini di tempo a causa della complessità degli script, soprattutto se un test viene eseguito solo una volta.
A lungo termine, avere solo test manuali può essere più costoso
È vero che con i test automatizzati un'azienda ha bisogno di investire una somma a volte considerevole fin dall'inizio, sia sul software che sull'assunzione di personale qualificato (i QA dell'automazione costano più degli specialisti manuali).
Tuttavia, a seconda del tipo e del numero di test richiesti per il progetto, anche il test manuale può rappresentare un onere finanziario. Quando un progetto è grande e i test richiedono molto tempo per essere completati o vengono ripetuti più volte, il costo sale alle stelle . Questo problema dovrebbe essere affrontato all'inizio della pianificazione del progetto per valutare il costo di entrambe le opzioni e scoprire quale è economicamente più fattibile. Di solito, la decisione migliore è combinare test manuali e automatizzati.
Test manuali vs test automatizzati: la resa dei conti
Ora vediamo un confronto fianco a fianco tra test manuali e test automatizzati.
Test manuale | Test automatizzati |
---|---|
Richiede molto tempo per essere completato | Richiede molto meno tempo per essere completato |
Non richiede competenze di programmazione | Richiede capacità di programmazione |
Costo iniziale inferiore, ma più lunghi sono i test, maggiore è il costo | Richiede un investimento iniziale più elevato ma è più redditizio per progetti a lungo termine con molti test ripetitivi |
Maggiore possibilità di errori dovuti al fattore umano | Più precisi e affidabili se i test sono ben costruiti |
Compiti complessi richiedono specialisti aggiuntivi | Compiti complessi richiedono tempi di preparazione aggiuntivi |
Non è adatto per test di prestazioni, carico o stress | Non è adatto per test di usabilità, interfaccia utente o esperienza utente |
Dove dovresti usare il test manuale?
Ecco alcuni test che è meglio eseguire manualmente:
- Prova esplorativa. Questo è il test iniziale di funzionalità completamente nuove. Poiché la funzionalità coinvolta è nuova e non sono disponibili casi di test già pronti, l'automazione di questo tipo di test è impossibile.
- GUI visiva e test di usabilità. Il test delle interfacce utente e delle esperienze utente include una valutazione visiva e richiede l'osservazione umana.
- Test ad hoc. Si tratta di test spontanei eseguiti senza aderire a requisiti o documentazione e volti a svelare bug imprevisti.
Dove dovresti usare i test automatici?
L'automazione dei test viene utilizzata sempre di più oggi e appaiono nuovi casi che i test automatizzati possono gestire. Di seguito sono riportati solo alcuni esempi di casi in cui è consigliato il test automatizzato:
- Il test del fumo verifica le funzionalità principali. Di solito è un po' standardizzato e riutilizzabile.
- Il test di regressione ripete la funzionalità esistente dopo gli aggiornamenti dell'applicazione stessa o del sistema operativo ed è progettato per scoprire se si verificano conflitti.
- Il test delle prestazioni/carico viene utilizzato per testare le applicazioni destinate a un uso intensivo da parte di numerosi utenti contemporaneamente. Il test di carico simula un carico elevato per vedere se l'applicazione si blocca.
- Il test di stress è simile al test di carico e comporta la creazione di un carico virtuale sull'applicazione. Tuttavia, mentre i test di carico vengono eseguiti per vedere se l'app è in grado di sopportare un carico specifico, i test di stress mirano a scoprire dove si trova il limite del carico. In altre parole, porta l'app al punto di rottura.
- Esecuzione ripetuta. Alcuni test vengono eseguiti ripetutamente in determinati punti di sviluppo o sono test standard riutilizzabili per applicazioni diverse.
Allora qual è il verdetto?
Dopo aver confrontato i test manuali e automatizzati, non possiamo dire con certezza se i test automatizzati siano migliori dei test manuali.
Il test del software è un processo complesso e molto vario. A seconda di cosa viene testato, in quale fase e per quale scopo, verranno eseguiti diversi test. E questo, ovviamente, influisce sulla scelta tra test manuali e automatizzati. Alcuni test sono meglio automatizzati e altri dovrebbero ancora essere condotti manualmente .
Il modo migliore per le società di sviluppo software per migliorare le proprie competenze è combinare specialisti di test manuali e automatizzati , dividere saggiamente le attività di test tra loro e sfruttare al meglio entrambi i metodi. Ogni progetto può combinare test manuali e automatizzati in proporzioni diverse ed è meglio creare una strategia di test del progetto dall'inizio.