La Test Automation consiste nell’implementazione e l’uso di tecnologie software per la costruzione e l’esecuzione parziale o totale di casi di test ripetibili e consistenti, con l'obiettivo di ridurre i tempi ed i costi del software testing.

È un rafforzamento delle metodologie e dei processi utilizzati nel test manuale, anche se non sostituisce del tutto il test manuale, poiché alcune verifiche (ad esempio verifiche sul layout grafico e sull’usabilità del prodotto) restano più efficaci se eseguite manualmente.

Casi tipici di utilizzo della Test Automation riguardano i Test Funzionali di un prodotto, che spesso rendono necessario ripetere più volte lo stesso test con configurazioni differenti, con diversi browser (se si tratta di una applicazione web) o con differenti valori dei dati in ingresso. La necessità di molteplici ripetizioni con le stesse configurazioni si verifica anche a fronte di nuovi rilasci del SW, al fine di verificare che le modifiche apportate non abbiano introdotto delle regressioni (v. No Regression Testing). In questi casi, il test eseguito manualmente rende inefficiente il processo di test e spesso si rinuncia ad eseguire dei casi di test per i vincoli di costo e di tempo del progetto, compromettendo la qualità del prodotto.

Automatizzare il caso di test, in modo da essere eseguito senza l’intervento umano, riduce drasticamente il costo dell’esecuzione del test. L’automazione dei test ha un certo costo iniziale che viene ripagato nel tempo a seguito delle numerose riesecuzioni dei casi di test.

Oltre alla riduzione dei costi e all’aumento dell’efficienza del processo di test, ci sono altri motivi per cui si può trarre beneficio dall’automazione dei test. Per esempio:

  • nel caso di complessità dell’analisi dei risultati del test, poichè l’automazione della verifica riduce sensibilmente i tempi rispetto ad un’analisi manuale e la rende più efficace;
  • quando la verifica implica operazioni noiose e ripetitive, poichè il risultato del test manuale può essere facilmente condizionato da errori umani, mentre il test automatico esegue le stesse operazioni più volte con esattezza e precisione;
  • quando è necessario eseguire i casi di test in orario non lavorativo e con breve preavviso;
  • per eseguire veloci Sanity Check degli ambienti subito dopo il rilascio.

I benefici introdotti dalla Test Automation possono essere misurati tramite il calcolo del ROI. Questo indice dovrebbe essere preso in considerazione, in fase iniziale, per decidere se e quando conviene introdurre la Test Automation nel processo di test.
Quando si parla di Ritorno degli Investimenti per la Test Automation si trattano 3 diversi tipi di indicatori che riguardano gli aspetti di riduzione dei costi, di aumento dell’efficienza e di aumento dell’efficacia: ROI = (Gains -Investment Costs)/Investment Costs.
  • Simple ROI - Calcola il risparmio dei costi nell’automatizzare alcuni casi di test, basandosi sui costi necessari per l’automatizzazione e in termini di costi legati al tempo di esecuzione dei test. L’Automation Test ha un costo iniziale più alto rispetto ad una attività di test completamente manuale, data dai costi fissi legati al tool di automazione e delle macchine necessarie per l’esecuzione dei test e dai costi variabili per l’implementazione degli script di automazione. All’aumentare del numero di esecuzioni dei casi di test, si arriva ad un punto di pareggio, superato il quale si ottengono dei risparmi sui costi totali del processo di test.
  • Efficiency ROI - Calcola l’aumento dell’efficienza del processo di test tenendo conto del tempo risparmiato nell’eseguire i test in maniera automatica. Questo indice tiene conto che i test automatici possono essere eseguiti nell’intera giornata (24h) e non solo in orario lavorativo. Per cautela viene considerato un valore più piccolo di 18h al giorno di finestra temporale per l’esecuzione dei test automatici per avere una stima più conservativa.
  • Risk Reduction ROI - E’ un indice per indirizzare gli aspetti legati strettamente all’aumento dell’efficacia nell’uso dei test automatici (maggiore copertura, riduzione di bugs in produzione) ed è direttamente legato alla maggiore copertura dei test. L’automazione dei test consente di risparmiare tempo nell'esecuzione di test, che fornisce ai tester più tempo per un’analisi più approfondita dei risultati e per progettare, sviluppare ed eseguire nuovi test. Fornisce inoltre più tempo per test esplorativi. Ciò equivale a una maggiore copertura nei test che riduce il rischio bugs in produzione.
L’introduzione ed il progresso della Test Automation deve avvenire in maniera graduale nel processo di test. Assioma.net fa riferimento a tal fine al Test Maturity Model Integration (TMMI), uno dei più quotati standard di mercato per il miglioramento dei processi di testing.
Il modello parte da uno stato iniziale dove tutti i test sono eseguiti manualmente fino ad uno stato finale di ottimizzazione in cui i benefici dell’automazione sono massimi. Ad ogni passo successivo il ROI tende ad aumentare.
Una fase estremamente delicata, alla quale è necessario dedicare un’attenzione particolare, è il passaggio dalla fase iniziale a quella successiva. In questa transizione, infatti, viene selezionato il tool di automazione da utilizzare: fare una scelta sbagliata in questa fase significa rischiare di dover cambiare il tool in futuro, buttando via l'investimento effettuato e il lavoro svolto.

Per questo motivo Assioma.net propone un’attività preliminare di assessment per l’automazione, nella quale si conduce un progetto pilota per la verifica di fattibilità e la selezione del tool. L’attività di assesment consiste in due momenti principali:

  • una preliminare di raccolta informazioni di dettaglio su architetture e linguaggi utilizzati, al fine di individuare l'ambito per il progetto pilota;
  • un progetto pilota nel quale si implementano alcuni casi di test opportunamente selezionati per verificare la fattibilità dell’automazione e selezionare il tool più adatto, in base a considerazioni di compatibilità, funzionalità, usabilità, flessibilità e manutenibilità, e tenendo conto anche di necessità che potrebbero nascere con sviluppi futuri.
Nelle fasi successive del modello si procede ad alimentare in maniera incrementale la suite di test automatici, andando a selezionare i test che dovranno essere automatizzati. Questa selezione viene fatta in base a ben determinati criteri volti ad aumentare i benefici dell’automazione.