Guida

Smoke test, cos’è, come funziona, esempi e vantaggi

In ambito informatico, lo smoke test serve a controllare le funzionalità di base di un software e consente di fornire un feedback veloce su aspetti critici ed elementari del suo funzionamento. Permette così agli sviluppatori di scoprire eventuali bug, e di porvi rimedio, prima che il programma sia sottoposto a ulteriori verifiche, facendo risparmiare tempo e contribuendo ad aumentare il livello di qualità del codice. Ecco quali sono i tipi di smoke test che si possono condurre e perché conviene farli

Pubblicato il 24 Dic 2021

SMOKE TEST

“La frase smoke test deriva dal test dell’hardware elettronico. Si inserisce una nuova scheda e si accende la corrente. Se vedete del fumo provenire dalla scheda, spegnete l’alimentazione. Non c’è bisogno di fare altri test”. Questa definizione di smoke test o smoke test, a seconda che ci si riferisca al tipo di prova o al suo processo, è contenuta nel volume Lessons Learned in Software Testing di Cem Kaner, James Bach e Brett Pettichord. Dall’hardware la terminologia è passata al software, per poi essere adottata anche come modello di verifica della validità di un’idea prima del lancio sul mercato del prodotto o del servizio da parte di una startup.

Cos’è lo smoke test

In ambito informatico, lo smoke test viene utilizzato per testare le funzionalità di base di un software e rappresenta quindi uno dei primi, se non il primo test, che ne anticipa il rilascio. Consente di fornire un feedback veloce su aspetti critici ed elementari rispondendo a domande del tipo “il programma viene eseguito correttamente?”, “l’interfaccia utente si apre?”, “cliccando sui pulsanti principali accade qualcosa?”. In pratica, rende evidente la necessità o meno di condurre altri test successivi più specifici. Tipicamente, perciò, offre un riscontro immediato sul processo di sviluppo e sul codebase.

Come ricorda il libro di Kaner, Bach e Pettichord, “gli smoke test coprono ampiamente le caratteristiche del prodotto in un tempo limitato” e aiutano a capire che “se le caratteristiche chiave non funzionano o se i bug chiave non sono ancora stati risolti, il vostro team non sprecherà ulteriore tempo nell’installazione o nel testing”.

Quando si usa lo smoke test

Lo smoke test viene fatto ogni volta che le nuove funzionalità del software vengono sviluppate e integrate con una build esistente per assicurarsi che tutte le funzionalità critiche girino correttamente. Inoltre, quando c’è un cambiamento nella build, viene eseguito uno smoke test che garantisca la stabilità del software. Di conseguenza, è consigliabile sia per provare un nuovo codice che diventerà la base di un nuovo software sia per controllare le nuove build che sono sviluppate per essere integrate con il software esistente.

Lo smoke test può anche essere usato per decidere se annunciare un rilascio in produzione o se tornare indietro in base quanto emerge dai risultati dell’indagine preliminare svolta. In questo modo la maggior parte dei difetti si identifica nelle fasi iniziali del ciclo di vita dello sviluppo del software e questo permette di evitare che si proceda negli step seguenti.

New call-to-action

Chi esegue lo smoke test

Lo smoke test viene eseguito dal team QA (Quality Assurance) che, oltre a determinare i requisiti principali a cui l’applicazione sotto osservazione deve rispondere, controlla che non si riscontrino dei bug. I tester QA svolgono l’esame dopo che gli sviluppatori hanno consegnato loro la nuova build di un’applicazione. Se il codice passa lo smoke test, si sottopone la build del software a test più rigorosi, come quelli di unità e di integrazione. Se lo smoke test mostra delle lacune nel software, allora si richiede agli sviluppatori l’invio di un’altra build. Le altre figure coinvolte nello smoke test sono gli UX (User Experience) Designer che conducono il test dal punto di vista dell’esperienza utente (UX). Sono loro ad appurare, ad esempio, l’accessibilità del sistema e della UI (User Interface), il meccanismo di login o la corrispondenza tra la selezione di una funzione e l’azione corrispettiva.

Come funziona lo smoke test

Esistono 3 modi di eseguire uno smoke test: manuale, automatico e ibrido. Prima di spiegare in cosa consistono, è bene sottolineare alcuni accorgimenti che bisogna adottare in tutte e 3 le modalità. Anzitutto, è necessario decidere il numero di casi di smoke test di cui si ha bisogno per evitare di doverlo ricalcolare in un momento successivo. In secondo luogo, è opportuno preparare i casi e lo script di test adattandoli al tipo di business in cui si opera.

Un conto, infatti, è svolgere uno smoke test in un’azienda che sviluppa prodotti SaaS, un altro è farlo all’interno di un’organizzazione che offre piattaforme di e-commerce. Il terzo accorgimento da avere è quello di registrare i risultati di ciascun test per riuscire a determinare con chiarezza se l’esito è stato un successo o un fallimento. Soprattutto in questa seconda evenienza, avere a disposizione un quadro degli aspetti deficitari è essenziale per correggere gli errori.

Manuale

Il metodo manuale dello smoke test prevede il ricorso a tester umani e ha il vantaggio che può coinvolgere risorse diverse dagli sviluppatori. Ad esempio, se si pensa ai test sulla UI, possono essere affidati a persone senza competenza di programmazione in grado, però, di accertarsi che un’app funzioni ugualmente su dispositivi e sistemi operativi differenti. Questa modalità risulta essere più dispendiosa rispetto a quella automatica. Essa tuttavia consente di verificare l’effettivo utilizzo di un software da parte di una cliente reale prima che sia immesso sul mercato.

Automatico

Ovviamente, un processo di smoke test automatico è molto più veloce di uno manuale. Ciò non toglie che l’automazione comporti un altro progetto ad hoc di ingegneria del software. Al momento, gli strumenti più popolari in questo campo si concentrano sul browser con framework open source molto diffusi come Selenium. L’emulazione di come gli utenti interagiscono con un’applicazione nel browser, però, rischia di non tenere in considerazione una serie di variabili come gli eventi JavaScript, le chiamate asincrone alle API, il rendering dei caratteri in tempo reale ecc.

Ibrido

Lo smoke test ibrido combina le parti migliori dei test di tipo manuale e automatico. Contempla essenzialmente l’impiego di un po’ di automazione, ma senza rinunciare a un certo grado di lavoro umano manuale per testare il software. Probabilmente oggi rappresenta la soluzione migliore o più praticabile per garantire la fattibilità delle build.

Differenza con regression test

Simili agli smoke test, i regression test puntano a determinare la qualità del codice in una parte specifica del software. Servono ad assicurare che le modifiche a un programma non aggiungano nuovi bug che possano comprometterne inavvertitamente prestazioni o integrità. A differenza dei primi, però, sono approfonditi e dettagliati, tanto che possono richiedere alcune ore per essere completati. Volendo fare un paragone, se la natura degli smoke test è caratterizzata da alta copertura e bassa profondità, quella dei regression test, all’opposto, vede bassa copertura e alta profondità. Ad esempio, possono controllare esplicitamente se ogni link su una pagina web aggiornata continui a funzionare anche dopo la modifica o che l’aggiunta di un articolo al carrello di un sito e-commerce non causi alcun arresto nella navigazione dell’utente.

Vantaggi dello smoke test

Ciò che rende prezioso lo smoke test è il fatto che offre una garanzia molto affidabile della stabilità delle build, così da ridurre la quantità di lavoro che gli sviluppatori devono compiere nella ricerca di errori alla fine del ciclo di sviluppo. Poter trovare le fonti dei problemi in modo rapido ed efficiente significa che i team di sviluppo devono trascorrere meno tempo a “setacciare” il codice alla scoperta dei potenziali colpevoli. Con il vantaggio che lo smoke test lo fa in maniera molto semplice e con pochi passaggi, il che lo rende compatibile con altri test e altre metodologie implementate nell’organizzazione.

Questo vale anche per le integrazioni, poiché lo smoke test portato avanti su ogni componente di un software tende a generare un’integrazione complessivamente più fluida e stabile. Inoltre, la circostanza che lo tale test riesca a intercettare la maggior parte dei bug prima che arrivino agli utenti finali contribuisce a far aumentare la brand reputation dell’azienda che sviluppa il software. Fornire un prodotto di alta qualità significa, infatti, migliorare la customer experience e la soddisfazione dei clienti.

Esempi di smoke test

Gli esempi di smoke test possono essere diversi. Prendiamo il caso che si voglia testare la funzionalità di login di un’applicazione web attraverso cui un utente registrato è abilitato ad accedere con username e password. Il test prevede l’avvio dell’applicazione. Segue la possibilità di navigare nella pagina di login, di inserire un nome utente e una password validi. Infine, serve cliccare sul pulsante login. Se il login avviene senza problemi, il test si può considerare superato.

Al contrario, se con lo smoke test si vuole controllare il funzionamento del sign out, ma selezionando l’apposito pulsante l’utente non è in grado di raggiungere lo scopo, allora il test non è stato superato.

Sono soltanto due esempi tra i tanti che si potrebbero fare. Servono a far capire come lo smoking test possa essere un’opzione semplice, diretta ed estremamente efficace per accelerare la ricerca dei bug. per affiancare gli sviluppatori nei loro progetti, aiutandoli a migliorare notevolmente la qualità del codice nella prima fase di implementazione del software.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati