Proprio come un prodotto fisico viene testato per verificare se soddisfa il comportamento e le specifiche desiderate, così viene testato anche il software. Il test del software può essere eseguito manualmente da persone o utilizzando strumenti. Uno strumento di test automatizzato è un software utilizzato per testare il software di destinazione, ovvero il software in esame. Tale strumento esegue vari test sul software di destinazione e determina se i test vengono superati con successo.
Il software deve essere testato per garantire che vengano generati risultati corretti, che gli input validi vengano accettati ed elaborati correttamente e che gli input non validi vengano rifiutati. Il test è necessario per determinare se i risultati vengono generati rapidamente, il software funziona bene anche se un gran numero di persone vi accede contemporaneamente e così via. I test manuali vengono spesso utilizzati, ma dipendono dall’accuratezza delle persone che li eseguono. Il test manuale del software richiede tempo e un numero significativo di persone per la maggior parte delle applicazioni non banali, aumentando così il costo. Inoltre, i test per migliaia di utenti simultanei o grandi volumi di dati non possono essere eseguiti facilmente in modo manuale.
L’automazione del test è l’uso di strumenti per testare il software. Uno strumento di test automatizzato è esso stesso un software che può essere sviluppato, acquistato o acquisito. Lo strumento in genere avvia l’esecuzione del software di destinazione e passa vari input al software di destinazione per testare varie condizioni. Valuta gli output corrispondenti del software di destinazione e tiene traccia dell’esito positivo/negativo di ciascun test. Al termine di una serie di test, lo strumento fornisce in genere un riepilogo dei risultati in modo da poter determinare rapidamente il numero e la gravità dei difetti.
Uno strumento di test automatizzato può funzionare in due modi. In primo luogo, può essere code-driven, ovvero lo strumento può essere strettamente correlato al codice scritto in modo da verificare che i risultati per i vari input siano corretti. In secondo luogo, può essere basata su un’interfaccia utente in cui le attività degli utenti come i movimenti del mouse, gli input della tastiera, gli input vocali, ecc. vengono imitati e gli output forniti agli utenti vengono esaminati per verificarne la correttezza. In quest’ultimo caso, le attività effettive di una persona potrebbero essere registrate e quindi riprodotte dallo strumento, oppure tali attività potrebbero essere generate da uno script di comandi fornito allo strumento.
Sul mercato sono disponibili strumenti di test automatizzati per scopi generici. La maggior parte è piuttosto costosa, ma alcuni strumenti sono disponibili gratuitamente. Se il software di destinazione è altamente specifico o unico, è probabile che uno strumento di test debba essere sviluppato su misura da quel team di software stesso. Come con tutti i software, gli strumenti stessi hanno dei limiti e funzionano correttamente solo quando vengono forniti buoni dati di input. Se non si alimenta una serie di test relativamente completa, lo strumento non aiuterà a determinare la qualità del software di destinazione.
Uno strumento di test automatizzato ha molti vantaggi. Una volta creata una serie di test, i test possono essere eseguiti più rapidamente di quanto una persona possa eseguirli. I test possono essere eseguiti durante la notte o in orari strani, lasciando le persone libere di concentrarsi su ciò che sanno fare meglio. I test possono essere eseguiti più e più volte per determinare se gli errori si sono insinuati nel software di destinazione quando viene modificato nel tempo.