Cos'è il test app e perché è importante
L'app testing è l'attività di valutazione e verifica del corretto funzionamento di un'app rispetto alle specifiche iniziali e alle aspettative del cliente.
Ma chi se ne occupa? Se non se ne parla in fase contrattuale si rischia di dare per scontato un'attività molto importante. E se infine manca rischia di diventare una criticità quando si solleveranno problemi a seguito del rilascio delle app.
La necessità del controllo della qualità nello sviluppo delle app è ben percepita dalle aziende che hanno già avuto esperienza in merito, mentre chi si approccia per la prima volta rischia di sottovalutare questo aspetto trovandosi a sostenere dei costi non previsti dopo che le app sono sullo store.
I difetti del software possono danneggiare la reputazione di un marchio, creando frustrazione nei clienti e determinando il loro abbandono.
La Nissan, ad esempio, ha dovuto richiamare oltre 1 milione di auto a causa di un difetto di software nei rilevatori dei sensori degli airbag. O un bug del software che ha causato il fallimento del lancio di un satellite militare da 1,2 miliardi di dollari (fonte). I numeri parlano chiaro. I malfunzionamenti del software negli Stati Uniti sono costati all'economia 1,1 trilioni di dollari in risorse nel 2016. Inoltre, hanno avuto un impatto su 4,4 miliardi di clienti (fonte).
Le tipologie dell'app testing
Il test delle app può essere svolto in molti modi - equivalenti a quelli di molti sviluppi software -, quelli più noti ed usati sono:
- Test funzionale: verifica le funzioni emulando gli scenari dell'azienda, in base ai requisiti funzionali.
- Test di integrazione: garantisce che i componenti o le funzioni del software funzionino insieme.
- Test di regressione: verifica se le nuove funzioni interrompono o peggiorano la funzionalità.
- Test di sforzo: verifica lo sforzo che può sostenere il sistema prima di riportare un errore.
- Test di fruibilità: valuta la facilità di utilizzo, da parte di un cliente, dell'app per completare un'attività.
- Test di unità: conferma che ogni unità software funzioni come previsto. Un'unità è il componente testabile più piccolo di un'applicazione. Solitamente questo test viene fatto a livello di codice e automatizzato e non come processo di verifica da parte di un team di persone.
Questo elenco non vuol dire che ad ogni progetto ha senso fare tutti questi test (sarebbe anti-economico) ma che ci sono tante metodologie che si possono applicare in base allo scenario.
Il tipo di test più utilizzato è il test funzionale soprattutto in fase di primo rilascio, seguito dal test di integrazione e regressione nei rilasci successivi delle app.
Il test di sforzo è considerato quando lo scenario applicativo prevede un flusso di utenti e/o di dati che richieda tale evidenza.
Il test di fruibilità è quello che a tutti piacerebbe fare: richiede la creazione di un gruppo di utenti che effettuino questo tipo di test e che poi restituiscano i propri feedback; è un'attività che necessita di tempo e di più persone e vien quindi tenuto in considerazione quando le condizioni al contorno lo permettono. Questo tipo di test è quello più indicato nel beta testing o nel crowd testing di cui parliamo tra poco.
Unicità dell'app testing rispetto ad altri ambiti software
Come già detto in altri articoli su questo blog (ad esempio nell'articolo in cui abbiamo parlato dei costi delle app) le app sono software con caratteristiche uniche e questo si ripercuote anche nella fase di testing.
Fare i test di un'app significa controllare un elenco di casi d'uso per ciascun sistema operativo target (solitamente iOS e Android) per varie versioni degli stessi (solitamente il sottoinsieme di versioni che sono maggiormente adottate in quel momento) per varie dimensioni e risoluzioni di schermi.
Le terminologie del test app in base a chi li svolge
Nelle offerte economiche e negli incontri con noi o con aziende simili alla nostra i termini che spesso vengono usati sono i seguenti e determinano più la responsabilità di chi li svolge rispetto alla metodologia.
Alpha testing
Chiamiamo alpha il test app fatto dall'azienda stessa che realizza l'app. Questo è importante e per noi fondamentale che l'azienda stessa si preoccupi di effettuare tutti i casi di test che permettono di toccare tutti gli aspetti funzionali di progetto e, se gradito, di fornire un report dei test fatti.
Questa attività è importante per scremare tutti i bug più evidenti al termine della fase di sviluppo e rendere i primi rilasci già un'app di qualità.
Il difetto dell'alpha testing è che è effettuato dallo stesso team che ha sviluppato l'app in un ambiente "controllato" che può differire per nulla, poco o molto dallo scenario effettivo in cui verrà utilizzata l'app.
Facciamo un esempio: una Connective App che comunica con un prodotto IoT - ad esempio un termostato smart - viene testata in alpha testing nel laboratorio del nostro ufficio o del nostro cliente; lo scenario riproduce il più possibile lo scenario reale, ma non è come fare il testing nell'impianto casalingo degli utenti. E' per questo che è importante il beta testing che descriviamo ora.
Beta testing o Field testing (test sul campo)
Viene chiamato beta testing il test app fatto da un gruppo di utenti conosciuti che possono provare l'app in anteprima nell'effettivo scenario applicativo.
Questi utenti provano le funzionalità dell'app, segnalano crash, bug o imprecisioni che in fase di sviluppo o alpha testing non è stato possibile rilevare.
È anche detto "field testing" (o test sul campo) proprio per il fatto che viene svolto nello stesso ambiente in cui ci si aspetta verrà utilizzata l'app una volta rilasciata al pubblico.
Crowd testing
Nel crowd testing chi svolge i test è "la folla", ovvero un insieme di utenti che non conoscono le specifiche di progetto e magari neanche le funzionalità stesse dell'app ma la provano come farebbero gli utenti finali e restituiscono feedback su cosa si sarebbero aspettati, cosa gli è piaciuto e cosa non hanno capito.
Questa tipologia di testing è utile, come dicevamo in precedenza, per i test di fruizione e per verificare se l'app è chiara o se ha dei difetti di usabilità o di contenuto.
Test automatizzati
Un altra modalità di testing è quella automatizzata: è la definizione a livello di codice di alcune casistiche di test (solitamente le più critiche) che possono essere verificate in automatico ad ogni rilascio, così da essere confidenti che l'introduzione di nuove funzionalità non vada ad inficiare quelle già presenti (test di regressione).
Solitamente i test automatizzati vengono introdotti in un'app dai team composti da un numero importante di sviluppatori e fortemente incentrati sul prodotto che hanno evoluzioni rapide.
Il workflow dei test app funzionali in Tiknil
Quanto vale il test app rispetto all'intero progetto?
Una nostra stima per esperienza è che la fase di alpha testing può essere stimata, in termini di tempi e costi, tra il 15 e il 30% delle attività di sviluppo, in base alla complessità dei test e dello scenario.
Pensiamo che questa informazione possa essere utile al lettore in fase di valutazione di un progetto app per capire quanto impatta se è compresa in un'offerta o quanto è il "costo nascosto" del testing se è un'attività che non viene proposta.
La tua azienda ha già svolto un progetto app e ti sei accorto che la fase di testing non è stata considerata adeguatamente?