Testing dell'app e usabilità: creare una propria app nativa – parte 4
Dopo aver concluso lo sviluppo della vostra app, il prossimo passo da intraprendere è quello di testare l'app. Così facendo l'app viene verificata sulla base del suo funzionamento, dell'usabilità e della compatibilità con diversi dispositivi e sistemi operativi. La maggior parte degli sviluppatori, dopo aver creato l'app e stabilito il suo design, vogliono rilasciare l'applicazione il più velocemente possibile, ma prima di vendere il software nell'app store è necessario controllare la capacità dell'app in diversi ambiti. I metodi classici sono ad esempio i test della performance, della compatibilità e dell’usabilità, racchiusi insieme ad altri procedimenti nel termine "Testing di app mobili su dispositivi" (anche chiamato "Mobile testing"). Per compiere questo passaggio ci si può affidare a strumenti per il testing delle app.
Perché è importante effettuare il mobile testing?
Un'app per avere successo non solo deve offrire dei contenuti convincenti e venir pubblicizzata bene, ma deve soprattutto funzionare senza problemi ed essere progettata in maniera user-friendly. Perciò, indipendentemente si tratti di un'applicazione per i dispostivi mobili o di una per il desktop, è necessario svolgere alcuni test essenziali prima di rilasciarla.
Testando le app si aggiunge però ancora un altro fattore aggravante: l'adattamento ai diversi dispositivi risulta nelle app native più dispendioso rispetto a quello degli altri software. Nei primi anni dello sviluppo delle app questo adattamento avveniva in modo ancora più facile perché esistevano solo pochi tipi di smartphone. Oggigiorno la varietà è molto più vasta e ogni dispositivo mobile presenta diverse funzioni. Ogni modello di smartphone o tablet è dotato di un hardware differente e per quanto riguarda i componenti integrati, sono soprattutto decisivi per il corretto funzionamento di un'applicazione aspetti quali il processore (CPU), la memoria ad accesso casuale (RAM), oltre che le dimensioni e la risoluzione dello schermo.
Oltre all'hardware, anche il software di un dispositivo mobile ricopre un ruolo importante. Qui vengono messi in primo piano i diversi sistemi operativi di una piattaforma che determinano il funzionamento dell'app. In presenza di sistemi operativi datati, l'app può risultare appesantita e non funzionare come dovrebbe, visto il mancato aggiornamento che non ne consente un uso ottimale.
Non è tuttavia da sottovalutare la diffusione di vecchie versioni di Android e iOS: infatti, se si guarda alle diverse versioni di Android, si noterà che le vecchie versioni del sistema operativo di Google sono più utilizzate rispetto a quella attuale. Ciò dipende anche dal fatto che molti sviluppatori su Android non rilasciano aggiornamenti per la nuova versione o lo iniziano a fare solo in un secondo momento. Invece su iOS gli utenti ottengono molto più velocemente la nuova versione del sistema operativo sul proprio iPhone e iPad, mentre i dispositivi molto vecchi non ricevono più aggiornamenti da parte di Apple, anche se alcuni presentano versioni più vecchie.
La varietà di hardware e software sui dispositivi mobili viene indicata con il termine frammentazione che pone diverse sfide per la garanzia di qualità delle app. Proprio in questo punto entra in gioco il mobile testing, grazie al quale viene verificato se un'applicazione funziona basandosi su diversi requisiti e se fosse questo il caso, si controlla anche se si riscontrano difficoltà mentre è in uso. La ricerca e la risoluzione di possibili criticità dovrebbe garantire un'esperienza d'uso ottimale per il maggior numero possibile di utenti. Infatti solo se un'app dimostra una buona performance e una buona usabilità sul maggior numero possibile di dispositivi, si diffonderà maggiormente e potrà contare su un raggio di azione più ampio.
Come si testa un'app?
Ci sono test e test; in genere per la garanzia di qualità di un'app si utilizzano diversi approcci. Le questioni principali sulle quali interrogarsi sono quelle relative al modo di controllare la qualità dell'applicazione (test manuali o automatici) e riguardanti la loro esecuzione (test condotti sul dispositivo o tramite simulatori/emulatori).
Test manuali vs. test automatici
Test manuali dell'app (eseguiti dagli utenti) La tipica modalità utilizzata dal mobile testing è quella di effettuare test manuali, cioè le persone verificano l'applicazione sui rispetti dispositivi. Ma testare le applicazioni può richiedere tempo e risultare complesso (specialmente per le app Android) e il team di sviluppatori difficilmente potrà permettersi di procedere in questo modo. Spesso viene perciò richiesto a delle persone di provare l'applicazione. In questo caso viene radunato un gruppo (nel migliore dei casi molto grande, in modo da essere il più possibile rappresentativo), che usa l'app attenendosi alle indicazioni date per svolgere il test e che esprime infine una propria valutazione. Queste persone reclutate per il test hanno il vantaggio di non conoscere affatto l'app, quindi non sanno come dovrebbe funzionare, e forniscono così un giudizio veritiero di un potenziale utente. Oltre a questo tipico modo di procedere, nel mobile testing manuale è anche da prendere in considerazione il crowdtesting. I servizi di crowdtesting mettono a disposizione dei tester tra i quali scegliere, così potete selezionare delle persone che rientrano nel vostro target e che proveranno la vostra app sui loro dispositivi. Il crowdtesting non avviene quindi in un ambiente di test, ma nell'habitat naturale dell'utente, cosa che rende i risultati più verosimili e quindi ne aumenta la loro efficacia. Per le app iOS (ma anche per watchOS e tvOS) con il TestFlight Beta Testing si può inviare un invito per testare l'app fino ad un massimo di 2000 utenti e così organizzerete i crowdtest autonomamente. Anche Google offre agli sviluppatori software diverse opzioni per effettuare test beta, pubblici o privati, di app Android. Test delle app automatici (eseguiti con i tool per il mobile testing) Al contrario dei test manuali, i controlli automatizzati si utilizzano soprattutto per quegli ambiti in cui è necessario verificare processi specifici continuamente per diverse condizioni. Per i test delle app automatici si ricorre a software specifici. Il maggiore vantaggio consiste nel tempo che si risparmia durante i test: quando si utilizzano programmi simili, infatti, in un batter d'occhio possono essere eseguiti dei test che richiederebbero molto più tempo per un utente in carne ed ossa. È però da tenere presente che l'automatizzazione non è adatta per tutti i tipi di test.
Dispositivi mobili fisici vs. simulatori/emulatori
Eseguire test su dispositivi mobili fisici
Testare le app sui rispettivi dispositivi mobili è la soluzione ideale per appurare la funzionalità di un'app in combinazione con specifici hardware e software. Tuttavia, test simili richiedono tempo e denaro, visto che per essere completi vanno eseguiti su molti smartphone e tablet e su ognuno di questi dispositivi dovrebbe essere nuovamente effettuato il test. Perciò la soluzione migliore è quella di rivolgersi a uno tra i tanti servizi di mobile testing, dove avrete accesso ad una serie di dispositivi mobili (chiamati spesso "Device lab" o "Test lab") con i quali potrete testare la vostra app.
Eseguire test con emulatori/simulatori
Gli emulatori e i simulatori sono dei programmi che imitano dei dispositivi precisi sui quali si possono testare virtualmente le applicazioni. I risultati ottenuti non sono però affidabili al cento per cento, in quanto non tutte le interazioni utente possono essere simulate così come avverrebbero realmente. Inoltre alcuni tipi di test dovrebbero essere effettuati su dispositivi fisici perché alcuni simulatori presentano dei limiti in alcuni ambiti.
Questi dispositivi virtuali non possono quindi sostituire i test eseguiti su quelli fisici, ma si configurano piuttosto come dei metodi complementari, particolarmente adatti per test automatici. Con il loro aiuto è possibile verificare velocemente il funzionamento di un'applicazione con diversi software e hardware. Molti emulatori e simulatori sono disponibili gratuitamente e ad esempio Android Studio e Xcode di Apple comprendono già programmi simili.
Diversi tipi di test
Oltre a diversi metodi, ci sono anche diversi aspetti che vanno testati di un'applicazione. I tipi di test delle app seguenti sono solo una selezione tra quelli irrinunciabili per la verifica di un'app per i dispositivi mobili. Inoltre ci sono anche test per la sicurezza, security testing, test per la localizzazione e tanti altri.
Functional testing/test per la funzionalità
Grazie ai test per la funzionalità controllate se l'app funziona davvero come vorreste. Infine si verifica il corretto funzionamento di tutti i contenuti delle app: si controlla ogni funzione, ogni schermo e ogni pulsante. Il functional testing ruota intorno alle seguenti domande:
- Si può installare l'app senza problemi e di nuovo disinstallarla?
- Tutti i contenuti dell’app funzionano come previsto?
- L'app continua a funzionare senza causare problemi, anche dopo averla minimizzata?
- Si verificano crash dell'app?
- L'utente riceve un appropriato messaggio di errore, in caso si verifichino errori?
Oltre all'app in sé, si dovrebbe controllare il comportamento dell'applicazione in determinati contesti:
- Si possono eseguire senza problemi applicazioni e funzioni del dispositivo, una volta che l'app è stata minimizzata?
- L'app si minimizza automaticamente, se riceve una chiamata?
- Si ricevono SMS e altre notifiche mentre l'app è in uso?
Test dell'usabilità
Con lo usability testing (test dell’usabilità) si verifica quanto l'app sia user-friendly. In questo caso un test automatico non è un'opzione, dato che solo gli utenti possono stabilire quanto un'applicazione risulti facile o meno da utilizzare. Anche l'uso di un emulatore o di un simulatore è poco utile per gli aspetti verificati da un test dell'usabilità perché solo su un dispositivo mobile si può valutare il funzionamento di un'applicazione. Solo così diventa chiaro come funzioni il touch screen, come si possa scorrere una pagina o come si prema sui tasti e quali siano i tempi di reazione dell'app a questi comandi. Durante un test dell'usabilità viene anche verificato se:
- il funzionamento dell'app è auto esplicativo? Vengono messe a disposizione delle spiegazioni per le funzioni più complicate?
- I contenuti dell'app sono posizionati in modo tale che l'utente giunga facilmente alle funzioni più importanti?
- I contenuti dell'app e il layout dell'interfaccia utente sono posizionati seguendo la stessa logica che si riscontra in tutta l'app e risultano intuitivi?
- I pulsanti sono posizionati in maniera ottimale e sono delle giuste dimensioni? Pensate anche al fatto che ci sono utenti con dita più grandi.
- I testi sono scritti in maniera efficace e sono formattati in una maniera ben leggibile, quindi né troppo grande, né troppo piccola?
Il test dell'usabilità è volto a far emergere problemi durante l'uso dell'app o dimenticanze nella visualizzazione user-friendly del layout. Per far in modo che si ottengano i risultati più efficaci possibili, dovreste prestare attenzione al fatto che il test venga effettuato da un numero sufficiente di utenti, usati come tester. Inoltre costituisce un vantaggio se gli utenti del test (o almeno la maggior parte) siano persone appartenenti al vostro target, così da poter ottimizzare l'utilizzo e la struttura del layout su misura per questo tipo di pubblico. Dai miglioramenti che ne risultano si può offrire agli utenti la migliore esperienza d'uso possibile.
Test della compatibilità
La compatibilità di un'app dovrebbe essere verificata per quanto riguarda l'hardware e il software in uso sui dispositivi mobili. Nel caso dell'hardware si deve ad esempio testare la visualizzazione dell'applicazione sui diversi display. Visto che ci sono diverse dimensioni e risoluzioni di schermo, si può giungere velocemente ad errori di visualizzazione e di adattamento, specialmente nel caso in cui non siano stati creati più layout per diversi formati di schermi.
Oltre al formato del display, a seconda dei dispositivi variano soprattutto la CPU e la RAM. Ricordate che i dispositivi mobili più vecchi non sono una rarità. Se create la vostra app non solo per i modelli attuali di smartphone e tablet, ma vi assicurate anche che l’app funzioni in maniera accettabile su quelli più datati, aumentate così automaticamente il suo raggio d'azione.
Per quanto riguarda il software dei dispositivi, si verifica che il funzionamento dell’app avvenga senza problemi su diverse versioni del sistema operativo; un test simile è importante specialmente nel caso di un'app Android perché per questa piattaforma vengono diffuse e utilizzate molte più versioni rispetto al sistema iOS di Apple.
Tramite il test della compatibilità, si può controllare a partire da quale tipo di hardware e software sono sorti i primi problemi che hanno inficiato il corretto funzionamento dell'app. Se si richiedono ai componenti dei dispositivi requisiti molto elevati, dovreste pensare ad una riduzione di alcuni requisiti di sistema, altrimenti il vostro target si ridurrà sensibilmente.
Test della performance
Con questo test si verifica quante risorse del sistema utilizza l'app in caso di un uso prolungato. In questo caso l'applicazione funziona costantemente ancora in maniera fluida o si verificano degli errori? In più si controlla che la batteria non risulti troppo sovraccaricata o che il dispositivo non si surriscaldi dopo un lungo periodo di utilizzo. Come nel test della compatibilità, vengono anche controllate le prestazioni dell'applicazione in determinate condizioni, ad esempio se il funzionamento dell'app cambia nel momento in cui sul disco fisso c'è poca memoria disponibile o la batteria è quasi scarica. Il test della performance deve rivelare in che misura situazioni specifiche si riflettano negativamente sul comportamento dell'app.
Se uno o più componenti si trovano in una situazione di sovraccarico, si parla di un test del carico (in inglese load testing) o stress test. Un esempio è lo stress test del server, in cui il comportamento dell'app viene verificato sul server dell'applicazione in caso di un elevato numero di visitatori. Su un'applicazione, dove le relative funzioni necessitano di una connessione Internet, un test del carico della rete deve far emergere come una connessione Internet debole si rifletta sulla funzionalità dell'app. Gli stress test devono indicare il carico che precisi componenti riescono a supportare, prima che se ne riduca il funzionamento.
Tool per il mobile testing
I test citati sopra non devono essere tutti svolti manualmente, poiché esistono diversi tool per il testing che alleggeriscono notevolmente il lavoro da fare in molti ambiti. Gli strumenti per il mobile testing presentati di seguito sono particolarmente adatti per iOS e Android, visto che la nostra serie sullo sviluppo delle app native tratta nello specifico di queste due piattaforme.
Appium
Appium è un programma open source multipiattaforma per l'automazione dei test, disponibile gratuitamente. Con questo tool non solo si possono testare app native Android e iOS, ma sono supportate per entrambe le piattaforme anche automatizzazioni dei test per app ibride e web app. Su Appium si utilizza la stessa interfaccia di programmazione sia per iOS sia per Android, così da poter riusare il codice scritto facilmente. I test creati qui possono essere eseguiti su dispositivi fisici, emulatori e simulatori. Appium è un software molto utile per condurre test automatici, ma che presuppone un'adeguata conoscenza.
TestFairy
Sul sito di TestFairy potete caricare la vostra app e invitare persone a provarla. Così l’applicazione può essere scaricata e utilizzata, e quindi potete organizzare autonomamente una sorta di crowdtesting. Il tool dispone di una funzione di rapporto degli errori e può creare un video che mostra come si utilizza l’app. Esiste una versione gratuita di TestFairy e una Enterprise a pagamento.
Ubertesters
Ubertesters è una piattaforma che vi aiuta nel beta test della vostra app, così avete il controllo completo sui test e ricevete dei rapporti dettagliati. Sulla piattaforma potete lavorare insieme in team senza problemi, scovare facilmente con diversi strumenti gli errori del programma, creare diverse versioni di test di un’app, verificarla ed eseguire crowdtest (ad esempio test per la funzionalità e dell’usabilità). Ubertesters è offerto in diversi pacchetti con una grande varietà di funzioni, di cui la variante con meno features è gratuita.
Risolvere gli errori rilevati dell’app
Se un emulatore rileva degli errori, dovreste verificarli di nuovo con un dispositivo fisico prima di cimentarvi nella risoluzione degli errori. Infatti non tutti i problemi che emergono dall’emulazione di un’app si riscontrano quando la si utilizza realmente. Solo se si verificano dei problemi mentre si usa l’app sui dispositivi mobili, è tempo di agire. Ma come si riconosce qual è il fattore scatenante che fa emergere un errore in una funzione? Testando le app non è possibile risalire ad una diagnosi degli errori esatta. Alcuni tool per il mobile testing possono aiutare, ma ciò non toglie che spetta a voi analizzare spesso i problemi e i malfunzionamenti dell’app in maniera autonoma. Solitamente sono causati da una programmazione errata o dal fatto che alcuni componenti del dispositivo non sono completamente compatibili con l’applicazione.
Una volta individuato il motivo di un erroneo funzionamento dell’applicazione, dovete valutare in che misura è importante risolvere il problema e se è possibile farlo senza danneggiare la funzionalità dell’app in generale. Ovviamente nella versione finale non dovrebbero più risultare errori generali perché tutte le feature fondamentali (come la navigazione o la visualizzazione dei contenuti delle applicazioni) devono essere funzionanti in qualsiasi momento.
Più difficile risulta la decisione a favore o contro la risoluzione degli errori se la causa non risiede in una programmazione errata dell’app, ma è riconducibile ad un problema di un preciso software o hardware. Ciò riguarda il più delle volte sistemi operativi superati o componenti dei dispositivi datati o poco performanti che rallentano o impediscono l’esecuzione di una o più funzioni dell’app. Se fosse questo il caso, dovreste analizzare accuratamente i risultati alla fine del mobile testing: quali elementi hardware o software potrebbero essere responsabili del fatto che la funzione non viene eseguita in modo regolare? Anche la logica “trial and error” potrebbe essere d’aiuto.
Quanto devono essere elevati i requisiti hardware e software richiesti all’app?
Sicuramente il raggio d’azione della vostra app si allarga, se la progettate in modo tale che sia funzionante su molti vecchi dispositivi. L’adattamento di un’app al maggior numero possibile di dispositivi mobili ha però i suoi limiti. Le applicazioni dotate di funzioni che necessitano di un processore più potente e/o di molta RAM, a volte non possono essere impostate in modo ottimale sui vecchi hardware. Un altro esempio: se un’applicazione richiede una connessione Internet potente, non si dovrebbe adattare a tutti i costi anche per una connessione Internet debole.
Alcune app hanno semplicemente bisogno di precisi requisiti tecnici, per esempio alcune richiedono delle dimensioni dello schermo specifiche per essere eseguite. Un altro esempio è l’app di YouTube, che funziona solo quando si può avere a disposizione un tasso di trasmissione dei dati sufficientemente veloce, ma risulta comunque una delle app più scaricate. Dovreste diminuire e adattare la varietà di funzioni per diffondere maggiormente l’app, a patto però di non ridurre più del dovuto la funzionalità dell’app.
Effettuare numerosi test per la vostra applicazione costituisce l’ultimo passo dello sviluppo delle app. Sicuramente ne deriva molto lavoro, di cui però verrete ricompensati sotto tutti i punti di vista: grazie al mobile testing vi assicurate che il maggior numero di utenti possibile possa utilizzare in modo ottimale la vostra applicazione. Prestate attenzione quando eseguite i test a bilanciarli bene, in modo che venga testato sia l’utilizzo sui dispositivi fisici, sia quello sugli emulatori e/o sui simulatori.
Se avete controllato a fondo la vostra app e non avete riscontrato errori gravi o malfunzionamenti o se li avete già risolti, ce l’avete fatta: avete trasformato la vostra idea in un’app e l’applicazione può ora essere infine rilasciata nell’app store. Tuttavia, ci sono ancora alcuni compiti da compiere prima di poter concludere definitivamente la creazione della vostra app.
Da un lato dovreste ripetere alcuni dei test eseguiti di tanto in tanto perché un controllo continuo garantisce che l’app anche in futuro funzioni senza problemi e così anche gli utenti possono continuare a beneficiare di un’app senza errori. Da eseguire regolarmente sono soprattutto i test della compatibilità e della performance.
Dall’altro, l’inserimento dell’applicazione negli app store di Apple e Google richiede anche un certo impegno. Prima dovete registrarvi e loggarvi negli store, per poter vendere lì la vostra app. Di questo passaggio ne trattiamo più dettagliatamente nella quinta parte della nostra serie dedicata alla registrazione nell’App Store di Apple e alla registrazione su Google Play Store. Inoltre, dopo aver rilasciato la vostra app, potete ottimizzare ancora il ranking dell’applicazione su Google Play Store e nell’App Store di Apple.