Software testing: cos'è, tipologie e modalità per collaudare software e app

GUIDE E HOW-TO

Software testing: cos'è, tipologie e modalità per il collaudo del software e delle app

Che si tratti di app, web, chatbot o dispositivi IoT, realizzare un software senza errori significa avere clienti soddisfatti, processi fluidi e un’immagine positiva del brand. Ecco come e quando effettuare test con gli utenti con le nuove metodologie, e quali sono i vantaggi del crowdtesting in un mondo in cui i cicli di vita del software sono sempre più brevi

09 Giu 2020

Elisabetta Bevilacqua

Realizzare un software a prova di errore e capace di soddisfare anche l’utente più esigente dovrebbe essere l’obiettivo di qualunque sviluppatore ed è senz’altro il sogno del business delle aziende, in una fase in cui la digitalizzazione sta diventando pervasiva. Il software infatti non solo è parte integrante dei processi di business ma sta diventando il principale strumento di relazione con i clienti.

Testing del software: perché è importante

Il testing del software, relativo a una app o a un sito Web, a una soluzione IoT o a un chatbot, è indispensabile per garantirne la qualità, sia per scoprire gli errori (bug) sia per offrire all’utente finale una User eXperience (UX) sempre più soddisfacente e rispondente alle sue aspettative. È noto che la stragrande maggioranza dei clienti (il 72% secondo le analisi di Stardust) passa alla concorrenza in caso di esperienza negativa e, dopo aver provato una sola volta un’app fallimentare, non vuole riutilizzarla (l’84% dei clienti secondo Techcruch).
Nei modelli di sviluppo tradizionali (waterfall) il testing del software è previsto generalmente a conclusione della scrittura del codice mentre nella logica agile/DevOps, sempre più diffusa, è parte integrante del modello di sviluppo che prevede un continuo miglioramento in base ai feedback.

L’impatto sul business del collaudo del software

Un software applicativo dovrebbe dare risposta ad un’esigenza di business che ne definisce gli obiettivi. Se ne dovrà dunque tenere conto in tutto il suo ciclo di vita, dallo sviluppo al collaudo fino alla messa in produzione, ivi comprese le successive messe a punto per rispondere a nuove esigenze e trasformazioni tecnologiche. Il rilascio di applicazioni difettose, di qualità non adeguata, non rispondenti ai requisiti né alle aspettative dei clienti finali, può avere gravi ricadute sul business. Mettere in produzione un software che contiene errori può infatti ledere l’immagine dell’azienda all’esterno e creare malfunzionamenti nei processi interni, con conseguenze economiche e per la reputazione aziendale.

Quando effettuare un software testing

Visti i tempi sempre più ristretti di rilascio, potrebbe essere utile effettuare test del software già a livello prototipale soprattutto per verificare in una fase preliminare che le esigenze di business siano soddisfatte.
A volte invece, anche con la falsa aspettativa di ridurre i tempi, il collaudo viene svolto internamente poco prima del rilascio, sulla base di casi di test preparati dal team interno, demandando l’accettazione finale del software ai committenti interni, che spesso non hanno le competenze specifiche.
Per le ragioni sopra esposte il software testing dovrebbe essere svolto da persone esperte, terze sia rispetto al team di sviluppo interno sia rispetto al committente.
Il processo di collaudo del software può essere realizzato nelle diverse fasi di sviluppo: si può ad esempio effettuare quando il software è ancora nella versione alpha (prima della sua distribuzione) e in versione beta (quando viene rilasciato in una versione preliminare).
In ogni caso, prima del rilascio finale sono necessari più cicli di testing per ridurre le probabilità di errori. Il testing del software è infatti un processo iterativo, poiché ogni errore individuato e risolto può generare o evidenziare nuovi errori. Va inoltre ripetuto ogni volta che il codice viene modificato o nel caso in cui cambino le caratteristiche degli ambienti in cui opera per verificare che siano integrabili o che non generino una regressione.

Tipologie di test funzionali del software

Il software testing funzionale ha come scopo principale valutare le funzionalità del programma per identificare bug e conseguenti malfunzionamenti che possono verificarsi in determinate condizioni di utilizzo.
I test possono essere finalizzati anche alla verifica di un’applicazione già testata in nuovi contesti (sistema operativo o sua nuova versione, trasformazione dell’ambiente in cui il software è inserito…) o a verificare la performance in particolari situazioni (test di carico, stress test). A svolgere i test funzionali sono generalmente professionisti che seguono un manuale scritto sulla base dell’obiettivo.
Esistono diverse tipologie di test: completamente manuali, semiautomatizzati (dove l’attività del tester è supportata da tool), totalmente automatizzati.

Modalità di testing: cosa fa un software tester (e come)

Come in precedenza accennato, il testing del software dovrebbe essere effettuato da persone esperte (team di test) terze rispetto al team di sviluppo, per poter avere una visione complessiva e imparziale del problema, più vicina all’utente finale che alla macchina e al linguaggio di programmazione.
Il tester, per verificare che il software rispetti i requisiti, deve eseguire una serie di test per individuare bug e verificare che effettui quanto indicato nelle specifiche.
Il team di test dovrà disporre, prima di iniziare le verifiche, di un manuale di test finalizzati a verificare la rispondenza ai risultati attesi sulla base dell’obiettivo: verificare la presenza di errori, le prestazioni, la UX. Il manuale o testbook dovrebbe indicare i componenti che saranno testati, le singole attività di testing, le risorse richieste e il calendario delle attività. A conclusione si dovrà redigere un report sui risultati ottenuti e collaborare eventualmente alle attività di correzione degli errori.

Il crowdtesting: cos’è e perché è efficace

Le modalità tradizionali di testing, per scovare i bug e per ottimizzare la UX, risultano troppo lenti e costosi per le esigenze attuali, in un mondo sempre più multipiattaforma, dove i requisiti non sono statici ma evolvono a ritmi sostenuti.
A queste sfide risponde l’approccio crowdtesting dove una community di tester qualificati viene chiamata a collaudare prodotti e servizi digitali. I tester possono essere selezionati sulla base del target del software e avere tutte le caratteristiche per mettersi nei panni di un utilizzatore reale o essere semplicemente esperti Bug Hunters.
Il vantaggio, rispetto a tester interni (a cui il crowdtesting è complementare), è l’approccio fresh eye, che consente di individuare bug che chi sviluppa o chi già conosce il prodotto non riesce a vedere. Un ulteriore vantaggio è la possibilità di aumentare enormemente il numero di combinazioni di device, sistemi operativi, connessioni, configurazioni, esperienze.
Per ultima ma non meno importante, la rapidità di risposta del crowdtesting a cui lavorano contemporaneamente più persone che eventualmente operano in parallelo con le attività di testing interne.

Crowdtesting per rispondere alle attuali sfide del software

AppQuality ha scelto fin dalla nascita un approccio crowdtesting applicato al software, in particolare per app, web, chatbot e dispositivi IoT. Dispone di una community qualificata e profilata di 15mila tester in Italia, e può raggiungere 220mila tester nel mondo. AppQuality seleziona di volta in volta il gruppo di tester sulla base dell’esperienza, del mercato (consumer o business), della provenienza, della lingua, ma anche più nello specifico sulla base dell’operatore telefonico o del conto corrente bancario.
La metodologia crowdtesting di AppQuality risulta particolarmente efficace soprattutto per la rapidità dei tempi di risposta, particolarmente critici nella fase attuale caratterizzata da rilasci di software sempre più frequenti. Nel caso di test funzionali si riescono ad ottenere feedback già dopo solo 24 ore, mentre il test esperienziale richiede un’attività più articolata basata su una metodologia (Thinking Aloud) che si avvale di riprese video e analizza sensazioni e problematiche manifestate dai tester, con l’analisi a valle di uno psicologo cognitivo.

In conclusione, in un mondo sempre più dominato dal software con cicli di vita sempre più brevi, un testing efficace deve essere in grado di dare risposte tempestive in tutte le fasi di sviluppo, dalla progettazione al rilascio e alla successiva ottimizzazione, sulla base delle esigenze degli utenti.

il metodo crowdtesting

@RIPRODUZIONE RISERVATA

Articolo 1 di 4