# Automazione del collaudo del software

In informatica, l'automazione del collaudo del software consiste nello sviluppo di apposito software che interagisce con il software da collaudare senza bisogno dell'intervento di un operatore umano, e fornisce all'utente un rapporto di qualità.
Il risultato del processo di automazione del collaudo è il "collaudo automatizzato". Se invece il collaudo del software consiste nell'utilizzo del prodotto quasi come se fosse la normale operatività di tale sistema software, si parla di "collaudo manuale". Tra questi due estremi, si possono avere varie posizioni intermedie, in cui parte del lavoro è automatizzato, ma è sempre richiesta la presenza del collaudatore. In tali casi, si parla di "collaudo parzialmente automatizzato" o di "collaudo semi-automatizzato".

## Descrizione

Nel collaudo manuale, tipico del software interattivo, il collaudatore utilizza il software come farebbe l'utente, ma cercando di attivare il maggior numero possibile di funzioni e le configurazioni più variegate. Quando il collaudatore constata un comportamento inatteso, ne prende nota e prosegue a collaudare altre funzionalità.
Nel collaudo automatico, il collaudatore può usare due tecniche di base:
* Scrive a mano del software di collaudo.
* Esegue il software da collaudare in un ambiente di collaudo che registra le operazioni dell'utente.
La prima tecnica richiede che il collaudatore sia un programmatore che conosca l'architettura interna del software da collaudare. Il software di collaudo, tipicamente scritto in un linguaggio ad altissimo livello, può interagire con il software da collaudare in vari modi:
* chiamando direttamente le singole routine di tale software;
* chiamando le routine esportate (ossia pubblicate) da un modulo;
* inviando al programma da collaudare dei messaggi di comunicazione tra processi;
* lanciando il programma da collaudare in una modalità in cui riceve due file, uno dal quale legge i dati di input, e l'altro nel quale scrive i dati di output.
Qualunque sia la tecnica di comunicazione adottata, quando il software da collaudare risponde, il programma di collaudo confronta le risposte ottenute con i risultati attesi. In caso di discrepanza, viene generato un resoconto.
La tecnica della registrazione delle operazioni dell'utente può essere attuata anche da un collaudatore che non sa programmare o che non conosce l'architettura interna del software da collaudare. Ha tuttavia due notevoli inconvenienti:
* C'è un'alta probabilità che, quando il software da collaudare viene modificato, le registrazioni siano improprie, e quindi da rifare.
* L'ambiente di collaudo non fornisce strumenti automatici per determinare se il software ha il comportamento atteso.
Questa tecnica è indicata per collaudi solo parzialmente automatizzati, in quanto è sempre necessario che il collaudatore verifichi visivamente se il software si comporta come dovrebbe.
Solitamente, l'automazione del collaudo viene effettuata dopo aver sviluppato una procedura di collaudo manuale.
L'introduzione della automazione nelle prove di collaudo è un processo costoso ed è da considerarsi una aggiunta e non una sostituzione del collaudo manuale. L'investimento può tuttavia fornire un ritorno economico nel lungo termine, sia in quanto consente di effettuare il collaudo di regressione a basso costo, sia in quanto consente la tecnica di sviluppo software detta "sviluppo guidato dal collaudo" (in inglese, "Test Driven Development").
Un settore di ricerca attivo è quello sulle generazione automatica dei requisiti di prova (test cases).
Una tendenza crescente nello sviluppo del software è l'uso di architetture di collaudo automatizzato di modulo a scatola bianca della famiglia xUnit (che comprende JUnit e NUnit).

### Strumenti per automazione del collaudo

* JUnit
* NUnit