Recentemente, ci è stato chiesto di contribuire a un articolo di blog che avrebbe dovuto riguardare una "migliore pratica" per implementare l'automazione dei test in un ambiente DevOps. Anche se non siamo in disaccordo con la premessa dell'articolo, vale a dire che l'automazione dei test in un ambiente DevOps è una buona idea, abbiamo pensato che scrivere un articolo sull'automazione dei test fosse un po' uno sforzo inutile, poiché la maggior parte delle informazioni era già facilmente disponibile.
Quindi, invece di scrivere un articolo sull'implementazione dell'automazione dei test in a Struttura DevOps, abbiamo deciso di scrivere un articolo sul motivo per cui vorresti implementare l'automazione dei test in primo luogo, poiché ci sono ancora molti casi d'uso in cui una suite di test guidata manualmente ha perfettamente senso.

Il test manuale non è l'ideale
L'idea alla base dell'implementazione automazione di test in un ambiente DevOps significa rimuovere l'elemento umano dai test. Idealmente, vorresti automatizzare il più possibile il processo di test, in modo che anche se non sei un esperto di devops, puoi almeno avere fiducia che il test sia stato eseguito con un'alta qualità.
Il test manuale è, tuttavia, un processo lento e macchinoso, soggetto a errori e un'esperienza frustrante per chiunque debba ripeterlo più volte. Per un tester di test manuale, l'esecuzione di ogni test può richiedere ore, persino giorni.
Immagina di dover svolgere la stessa attività più e più volte, per 10 ore al giorno, per un mese di fila, solo per completare l'intero processo di test e trovare qualche centinaio di bug. È un mese della tua vita passato, solo per trovare qualche centinaio di bug, al ritmo di un caso di test ogni due giorni.
Ancora peggio è il fatto che i test manuali vengono spesso eseguiti in modo ad hoc, senza un vero piano o strategia in atto. Poiché di solito si tratta di un processo che richiede molto tempo e non vi è alcun incentivo a renderlo più rapido, alcuni test potrebbero non essere mai ripetuti e molte delle scorciatoie che possono essere automatizzate facilmente finiscono per essere ignorate.
L'automazione dei test consente una migliore pianificazione e riduce gli sprechi
Ora, quando pianifichi la tua strategia di test, non puoi effettivamente pianificare ogni scenario. Tuttavia, con i test automatizzati, puoi scrivere uno script che attiverà una serie prevista di eventi e, poiché questi eventi sono del tutto deterministici, puoi effettivamente calcolare in modo abbastanza accurato quanto tempo ci vorrà per eseguire la suite di test.
Di conseguenza, puoi stimare in modo abbastanza accurato la quantità di risorse (ore-uomo) necessarie per il progetto, presupponendo che tutti i test vengano superati. Naturalmente, questo varierà a seconda che ti imbatti o meno in qualche intoppo lungo il percorso, ma generalmente è una buona idea pianificare il peggio, quindi non finirai per sorprenderti trovando un mucchio di bug, dopotutto. .
Inoltre, poiché il test automatizzato è solitamente un processo abbastanza rapido e semplice, puoi eseguirlo insieme allo sviluppo del software stesso. Ciò significa che sia lo sviluppatore che il tecnico del test possono continuare a lavorare sulla stessa base di codice, garantendo allo stesso tempo che i test vengano eseguiti come previsto e in modo tempestivo.
Ad esempio, supponiamo che tu stia implementando un'app Web con Node.js, Backbone e Marionette e devi testare la funzionalità dell'app. Puoi facilmente impostare una pipeline CI/CD che avvierà automaticamente una VM, installerà tutte le dipendenze richieste ed eseguirà i test ogni volta che una modifica viene inviata al ramo principale.
Di conseguenza, non solo ottieni una serie coerente di test che possono essere eseguiti più e più volte, ma puoi anche ottenere più valore dai tuoi sforzi di automazione, riducendo la quantità di intervento manuale che di solito è necessario.
I vantaggi dell’automazione dei test sono numerosi
Come abbiamo detto in precedenza, l’automazione dei test consente una migliore pianificazione e strategia, poiché puoi facilmente tenere traccia di tutti i test, del loro stato e dei problemi che incontrano.
Ciò significa che puoi facilmente determinare cosa è necessario fare per risolvere i problemi e passare al test successivo, invece di dover ricominciare da capo ogni volta che qualcosa va storto. Significa anche che puoi facilmente fornire alla persona che esegue i test la formazione e il supporto adeguati, quando necessario.
Inoltre, l'automazione dei test può essere un ottimo modo per trovare e monitorare nuovi bug e problemi che emergono nel software nel tempo. Uno dei motivi principali per cui le persone evitano i test automatizzati è perché pensano che non sia possibile scrivere un test che copra ogni eventualità.
Tuttavia, questo è tutt'altro che vero, poiché ogni bug e problema riscontrato viene registrato in un registro da qualche parte e da lì è solo questione di cercare il registro e implementare la correzione. Il fatto che questo sia solitamente un processo semplice e richieda un intervento manuale minimo, ne vale ancora di più la pena.
Inoltre, con i test automatizzati, puoi creare facilmente una serie di test standard, che verranno eseguiti più e più volte, come parte del processo di creazione. Di conseguenza, tutti i membri del team possono vedere rapidamente come funziona il programma, senza doverlo eseguire da soli o dipendere da qualcun altro per interpretare i risultati per loro.
Inoltre, poiché i test sono solitamente scritti in una sorta di "scatola nera", nel senso che non dipendono da particolari dettagli di implementazione, oltre all'insieme di input previsti, dovrebbero essere portabili su qualsiasi piattaforma e quindi meno inclini a errori e più facilmente verificabili.
Sintesi
Tutto sommato, implementare l'automazione dei test in un ambiente DevOps può essere una buona idea, purché si disponga del team giusto e dell'approccio giusto. Innanzitutto, assicurati di avere qualcuno che abbia esperienza sia nella scrittura di test funzionali che di prestazioni.
Inoltre, assicurati che il team abbia una sufficiente padronanza del processo, in modo che sia motivato a portarlo avanti fino alla fine e lavorerà con te, come una singola unità, per identificare gli ostacoli e trovare soluzioni.
Infine, assicurati di avere qualcuno responsabile della pianificazione, del coordinamento e dell'esecuzione dei test, poiché questo determinerà il risultato dei tuoi sforzi, più di ogni altra cosa.