Il software testing è quella particolare attività di verifica del corretto funzionamento di un programma informatico rispetto alle aspettative. Oggi i team di sviluppo eseguono un numero infinito di test e controlli per accertarsi di offrire un prodotto di qualità prima del lancio ufficiale sul mercato.
Tra i tantissimi tipi di interventi abbiamo il cosiddetto sanity test, ovvero una specifica forma di valutazione che si attua quando viene aggiunta una nuova build del software oppure quando vengono inserite piccole modifiche al codice. Andiamo allora a comprendere nel dettaglio come funzionano i sanity test, a cosa servono e quali vantaggi offrono per le aziende produttrici.
In cosa consiste il sanity test?
Il sanity test è una categoria di test del software che viene svolto dai tester per assicurarsi che una nuova versione dell’app o del programma funzioni a dovere. Questo è un processo abbastanza rapido che evita agli sviluppatori di perdere tempo e risorse in test più rigidi su build non ancora pronte.
Generalmente il sanity test viene eseguito dopo la correzione di un difetto o bug per accertarsi che le modifiche apportate non abbiano generato altri bug e se le funzionalità introdotte svolgono il loro compito. Dopo aver installato la nuova build, i tester lanciano il sanity test per verificare che tale versione sia funzionale e che le correzioni siano state implementate nel modo giusto.
Se le correzioni ai bug funzionano, i tester ritengono superato il sanity test. Se invece tali modifiche non danno il risultato sperato, la build in questione viene rigettata e inviata nuovamente agli sviluppatori per essere corretta.
Di solito il sanity test viene realizzato su un software stabile, ma non per forza funzionale. Per esempio, dopo che sono state aggiunte modifiche ad una build, i tester possono svolgere un sanity test per controllare che le correzioni funzionino alla perfezione prima di lanciare un test di regressione.
Dunque, il sanity test si esegue dopo lo smoke test che serve ad accertare se una build è stabile oppure no, e prima di un test di regressione. Ad occuparsi di questa tipologia di test sono in genere i tester dopo avere ricevuto una versione stabile del programma. Si realizzano test su singoli elementi della build, come le singole funzionalità modificate o specifici bug corretti.
I benefici derivanti dal sanity test
Con i sanity test è possibile risparmiare fatica e lavoro in quanto evitano ai team di sprecare tempo in controlli più approfonditi prima di essere sicuri che le principali funzioni della build funzionino correttamente. Sono quindi indispensabili per costruire un software di qualità e privo di bug. Ecco quali sono i principali vantaggi offerti dal sanity test:
- È veloce ed efficace: è un sistema rapido ed efficiente per essere certi che le funzionalità più importanti di un software funzionino correttamente. Si possono eseguire sanity test in meno di un’ora e se il test è superato, i tester danno il via per continuare ulteriori test;
- Non necessita di documentazione: come gli altri test di integrazione, anche il sanity test non è scritto. Ciò significa che i tester non devono scrivere i criteri di errore/superamento di ogni test. Dunque, tale test può essere eseguito in maniera veloce e casuale, senza timore di provocare interruzioni nel lavoro;
- È in grado di individuare gli oggetti mancanti: i sanity test sono utili per trovare oggetti mancanti che possono essere determinanti per il buon funzionamento della build. Poiché tali test sono utilizzati per controllare le singole funzionalità, in questo caso è più semplice trovare specifici bug rispetto agli smoke test e agli altri test iniziali;
- Riesce a prevenire problemi gravi: i test di sanità possono essere d’aiuto per prevenire malfunzionamenti e difetti nelle prime fasi di test, impedendo il diffondersi di bug più gravi durante lo sviluppo. Identificare i problemi con largo anticipo è fondamentale per rientrare nei tempi di sviluppo ed evitare problemi costosi;
- Viene eseguito dai tester: i sanity test sono sempre svolti dai tester, a differenza di altre forme di testing comuni, come lo smoke test, che possono essere eseguiti anche dagli sviluppatori.
Sanity test manuali
Il sanity test manuale viene svolto manualmente dai tester umani. In questo caso, i tester convalidano personalmente le caratteristiche del software controllando i risultati dei diversi casi di test e confrontandoli con i risultati attesi.
In teoria i test manuali sono più dettagliati di quelli automatizzati in quanto permettono di eseguire verifiche più approfondite ed esplorative. Questo perché, mentre i controlli automatizzati seguono uno script predefinito, i tester umani usano il proprio intuito e giudizio per analizzare processi e funzionalità che potrebbero necessitare di ulteriori indagini. Ciò vuole dire che possono improvvisare o uscire fuori dal “copione”.
I sanity test manuali non richiedono risorse specifiche e possono esplorare componenti differenti della build del software. Il rovescio della medaglia è che hanno bisogno di molto tempo e non possono essere svolti con la stessa regolarità di quelli manuali. Inoltre, c’è sempre spazio per l’errore umano.
Sanity test automatizzati
I sanity test automatizzati sono ormai sempre più diffusi tra i team di tester che hanno le risorse e le competenze tecniche per poterli implementare. L’automazione consente di attuare questi test con maggiore frequenza e di standardizzarne il processo.
Questo è dunque il metodo più rapido ed efficiente di eseguire i sanity test, ma al contempo le aziende produttrici devono destinare maggiori introiti e tempo alla costruzione e gestione dei sistemi di automazione. Ovviamente nelle società più piccole si andrebbero a sottrarre risorse economiche a compiti fondamentali come la correzione di bug e lo sviluppo.
Possiamo dire che i sanity test automatizzati sono più efficienti di quelli manuali, non hanno limitazioni nella regolarità di esecuzione, coprono una gamma più ampia di campioni e naturalmente non possono risentire di errori umani.
D’altra parte, i test automatizzati non includono la soggettività e non possono approfondire gli scenari che non sono previsti dallo script. Infine, richiedono una spesa economica decisamente superiore rispetto ai test manuali che non tutte le imprese possono permettersi.
Sanity test, smoke test e test di regressione
Esattamente come lo smoke test, il sanity test serve a verificare se alcune funzionalità del software funzionano nel modo corretto. Ad ogni modo, a differenza dello smoke test il test di sanità si focalizza su una o due di queste funzionalità che sono quelle modificate o riparate.
Altra differenza importante è che lo smoke test viene svolto solo su build iniziali e instabili. Inoltre, garantisce una visione più estesa della funzionalità di una build, mentre il sanity test offre una visuale più limitata, ma più profonda di un particolare elemento della versione del software.
Il sanity test è comunque una sottoclasse dei test di regressione che vengono svolti sempre su build stabili. La discriminante principale è che i sanity test controllano solo specifiche aree del codice che sono state modificate.
Al contrario, i test di regressione verificano ogni componente del codice corretto per assicurarsi che tutto funzioni come dovrebbe. Altra differenza riguarda l’ordine cronologico di esecuzione. Infatti, il sanity test viene eseguito per primo, mentre il regression test completo avviene soltanto se il sanity test è stato superato.