Un framework di automazione dei test è un insieme di strumenti utilizzati per eseguire test automatizzati del software. I framework di automazione dei test offrono vantaggi significativi rispetto ai test manuali e sono comunemente utilizzati nello sviluppo rapido di software. Questi framework consentono agli sviluppatori di software di creare test, eseguire test e analizzare i risultati dei test. Un framework di automazione dei test potrebbe essere guidato da codice, dati, un’interfaccia utente grafica (GUI) o una combinazione di questi.
I framework di automazione dei test sono necessari per soddisfare le esigenze di uno sviluppo rapido del software. Nel classico ciclo di vita dello sviluppo del software a cascata, il test del software era una fase discreta eseguita dopo l’implementazione o la codifica. Pertanto, i test eseguiti dall’uomo erano tipici.
Molti team di sviluppo hanno sostituito il modello a cascata con varie metodologie di sviluppo software agili, che in genere richiedono uno sviluppo rapido e iterativo. Il rapido sviluppo ha creato la necessità di test rapidi. Un framework di automazione dei test consente a un team di software di eseguire test frequenti e automatizzati su una base di codice. Ad esempio, invece di richiedere una fase di test separata dopo lo sviluppo, un team che utilizza un framework di automazione dei test potrebbe scegliere di eseguire una suite completa di test durante la notte, nonché blocchi più piccoli di test automatizzati durante il giorno man mano che vengono apportate modifiche all’origine codice.
Il tipo di framework più comunemente usato è il framework basato sul codice, che viene utilizzato per eseguire test white-box. I framework basati sul codice richiedono agli sviluppatori di scrivere piccoli frammenti di codice, sotto forma di unit test, per testare le funzionalità o le prestazioni del software. Gli sviluppatori che utilizzano framework basati sul codice devono aver cura di scrivere il proprio software in modo verificabile, ovvero il codice deve essere modularizzato in modo tale che un test unitario possa chiamare un frammento di codice e verificare il risultato. Questi framework in genere includono un’implementazione di xUnit, dove “x” varia in base al linguaggio di programmazione testato.
I framework di test basati su GUI vengono utilizzati per eseguire test black-box, utilizzando uno strumento software come farebbe un utente, tramite input da mouse e tastiera. Potrebbero essere costituiti da script scritti dagli sviluppatori per esercitare una serie di funzionalità, oppure potrebbero essere costituiti da script generati da strumenti, come script di registrazione e riproduzione. Un potenziale svantaggio di questi framework è che lo script si interromperà ogni volta che la GUI cambia. Alcuni framework di automazione della GUI potrebbero generare uno script che può essere modificato da uno sviluppatore in caso di modifiche alla GUI e altri potrebbero richiedere all’utente di creare una nuova sessione di registrazione e riproduzione.
I framework di test basati sui dati eseguono test del software utilizzando i dati e questi test in genere funzionano con tabelle di dati che specificano sia gli input che gli output. I dati possono essere conservati in varie posizioni, come database, fogli di calcolo o file di testo. Gli script possono essere scritti per eseguire metodi software che accettano gli input come parametri e per convalidare il valore restituito del metodo software rispetto all’output. Qualsiasi altra cosa che può essere variata, come l’ambiente in cui viene eseguito il test, può essere archiviata con i dati e separata dallo script di test. Un vantaggio fornito da questi framework è la separazione di dati e logica, che spesso porta a una minore manutenzione a lungo termine.