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 un’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 a 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.
Vantaggi applicativi del crowdtesting
Uno dei principali vantaggi che il crowdtesting offre nel percorso applicativo è la capacità di fornire risorse, se e quando servono, ai team di sviluppo e per le analisi di qualità. Il crowdtesting può operare in parallelo all’attività di sviluppo degli eventuali gruppi di testing interni, anche durante i fine settimana, i giorni festivi o quando i team non sono operativi. Ciò accelera enormemente il percorso di verifica, aumentandone al contempo l’efficacia, grazie al gran numero di tester che afferiscono alla piattaforma di crowdtesting.
Il crowdtesting può supportare le diverse fasi di sviluppo applicativo con diversi tipi di test: di copertura multidevice, esplorativo, di usability, test di regressione… Ne consegue la possibilità di effettuare test estensivi minimizzando i costi e i tempi.
L’eliminazione di costi fissi, sostituiti da una spesa complessivamente contenuta, i rapidi tempi di risposta e la grande copertura dei campi di esplorazione, consentono di impiegare il crowdtesting nelle diverse fasi di avanzamento applicativo, con notevoli risparmi nella realizzazione dei progetti. È infatti stato valutato che il costo del software è influenzato dalla possibilità di evidenziare, attraverso il testing, gli errori in una fase anticipata del ciclo di vita dello sviluppo applicativo. Il costo per rimediare a un errore trovato dopo il rilascio del prodotto può, ad esempio, risultare fino a cinque volte superiore rispetto a quello necessario per correggere un bug scoperto in fase di progettazione (fonte: Systems Sciences Institute di IBM).
Il crowdtesting sostituisce infine i tradizionali test “sotto vuoto”, realizzati in laboratorio con numeri ridotti, un sistema lento e costoso, con tester reali, centinaia di migliaia di dispositivi veri, una logica pay per use.
Come integrare il crowdtesting in un progetto di UX research
Una delle caratteristiche del crowdtesting è la capacità di individuare visual bug e una User eXperience (UX) inadeguata che altre tipologie di test non sono in grado di rilevare.
Un servizio digitale, capace di offrire una UX coinvolgente e soddisfacente, è la condizione per differenziarsi dai concorrenti, andare incontro alle esigenze dei clienti, conquistarne la fiducia e la fedeltà.
Il coinvolgimento degli utenti reali fin dall’inizio e in tutte le fasi di design e di testing, che non può essere sostituito da test in laboratorio, è la condizione indispensabile per costruire esperienze positive ed evitare che un impatto negativo spinga i clienti ad abbandonare il brand.
Uno dei plus del crowdtesting è la sua capacità di individuare le criticità nella UX e mettere al centro del progetto applicativo le esigenze dell’utente. Il modello crowdtesting, per la sua stessa impostazione, è in grado di portare il punto di vista dello user sempre più a monte (il cosiddetto shift left testing), a partire dalla fase prototipale. All’interno di un progetto di UX research, i test di usabilità vanno ripetuti nel corso dello sviluppo fin dalle fasi di design, per poter correggere i difetti UX attraverso l’analisi dei feedback dell’utente reale. Il crowdtesting lo rende possibile anche grazie a una visione dettagliata di come le singole decisioni in fase di progettazione influiscano sulle modalità di utilizzo dei servizi digitali da parte dell’utente, come possano, ad esempio, incidere sul tasso di conversione, come ad esempio evidenzia il caso Lottomatica.
Come effettuare un crowdtesting
Il crowdtesting può dare risposte a una molteplicità di esigenze, che vanno dalla richiesta di mettere alla prova una nuova soluzione in fase di sviluppo alla volontà di verificare se i servizi digitali già rilasciati e utilizzati da un’ampia base di utenti siano adeguati all’evoluzione del mercato.
Nel primo caso il crowdtesting dovrà verificare non solo che i servizi digitali non contengano bug ma anche che possano rispondere alle esigenze degli utenti target, che siano allineati con il servizio offerto, che siano coerenti con l’immagine e l’identità aziendali.
Se il prodotto digitale è già sul mercato, il crowdtesting dovrà invece, in un’ottica di continuous improvement, verificare che la UX e la qualità del software siano stabili e che l’efficacia sia confrontabile con quella eventuali competitor nello stesso settore o in industry contigue.
Le due differenti esigenze, come pure il target a cui si rivolge il prodotto digitale, influiscono sulla definizione della community di tester selezionata, il primo compito della piattaforma di crowdtesting è selezionare gli utenti sulla base di competenze tecniche (per i test funzionali) o similarità con il reale end-user (test di usabilità). Un secondo passaggio è segmentare le azioni che i tester dovranno svolgere (la creazione degli “use case”) per arrivare alla raccolta dei dati (i bug o le frizioni di usabilità) e alla loro analisi che sarà riassunta in un report. Sulla base degli obiettivi di partenza potranno essere fornite indicazioni utili per il miglioramento della soluzione, anche sulla base di un benchmark di mercato.
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.