Testare un’applicazione Mobile
iOS • Programmazione • Sviluppo Applicazioni Android • Sviluppo Applicazioni iOS • Sviluppo Applicazioni macOS
Quando si parla di test, specialmente con uno sviluppatore, l’unica cosa che viene in mente sono gli Unit Test o gli UI Unit Test, cioè i test automatizzati che permettono di tenere sotto controllo il codice dell’applicazione.
Inutile dire che sono importantissimi e permettono di avere sotto controllo il codice e il suo comportamento evitando di incontrare regressioni o problemi durante le fasi di sviluppo.
Ma questi test non bastano per garantire il successo di un’applicazione così come il suo corretto funzionamento.
Le applicazioni per dispositivi Mobile sono soggette a molte condizioni che il software non sempre è in grado di comprendere e controllare, quindi è necessario un controllo manuale da parte di un utente umano.
Di quali situazioni stiamo parlando?
Prenderò come esempio le applicazioni iOS ma solo perché le conosco molto bene e quindi posso creare esempi concreti.
In base alle tecnologie utilizzate nell’app è necessario testare alcuni comportamenti e accertarsi che siano gestiti in modo corretto.
Ad esempio:
Richiesta di permessi
Può sembrare banale ma richiedere i permessi, ad esempio per la location, non significa solo scrivere il codice nel punto giusto ma gestire tutto il flusso in modo corretto, ad esempio:
- Cosa accade quando l’utente non accetta i permessi? Viene correttamente indicato?
- Cosa accade quando l’utente rimuove i permessi in un secondo momento? Viene correttamente indicato?
- Quando viene indicato che i permessi non sono stati dati, viene data la possibilità di attivarli in modo semplice e chiaro?
- Se i permessi sono fondamentali per l’uso dell’app, questa funziona in modo corretto anche senza tali permessi? Se no, cosa accade?
Networking
Se l’applicazione fa uso del network per scaricare o caricare informazioni, significa dover gestire tutte le situazioni. Ad esempio:
- Cosa accade quando l’applicazione si avvia senza connessione? Viene avvisato l’utente in modo adeguato?
- Cosa accade se l’applicazione non ha alcun dato e non ha connessione?
- Cosa accade se la connessione cade durante il download delle informazioni? Viene gestita in modo corretto ed avvisato l’utente?
- Cosa accade quando la connessione torna disponibile? I dati vengono aggiornati in modo automatico?
Comportamenti della UI
Alcune applicazioni possono funzionare sia in modalità Portrait che Landscape, oppure sono disponibili anche in versione Tablet (iPad) con la possibilità di essere utilizzate in multitasking.
In queste circostanze la UI è soggetta a cambiamenti continui, spesso alcuni di questi vengono tralasciati o non visti.
- Quando l’applicazione cambia orientamento in Landscape, la status bar scompare. È il corretto comportamento?
- Quando l’applicazione cambia orientamento in Landscape la TabBar e la NavigationBar diventano più piccole. Le icone sono ben renderizzate?
- Dopo il ridimensionamento la UI si adegua in modo corretto? Le ScrollBar mantengono le posizioni e la giusta rappresentazione?
Comportamenti dell’app
Durante l’esecuzione di un’applicazione possono avvenire situazioni impreviste che devono essere testate e gestite in modo corretto.
- Quando arriva una chiamata, nei device non-borderless la status bar cambia dimensione, la UI continua a funzionare in modo corretto, specie le ScrollBar?
- Quando l’applicazione passa allo stato di inattività e sospensione, il sistema operativo può killare l’app senza preavviso. Se accade questa situazione i dati dell’utente vengono salvati?
- Nella situazione precedente, quando l’utente apre di nuovo l’app, si ritrova i dati e la UI dove l’aveva lasciata?
- Se l’utente decide di passare ad un’altra applicazione durante il download o l’upload dei dati, cosa accade? Continua il processo o viene fermato? E l’utente viene avvisato in caso di problemi?
Come vedete ci sono davvero tantissimi casi di cui dobbiamo tenere conto e queste sono solo alcune delle domande a cui un tester deve rispondere.
Purtroppo il software automatizzato non può controllare ogni singola situazione, in particolar modo dove il comportamento e la sensazione umana è un punto fondamentale.
Questi test sono un mix tra test di UX (User Experience) e test di qualità (Q/A Test) e sono davvero importanti affinché il software possa avere successo.
Buildtest
Per facilitare questo genere di testing da parte mia e dei miei tester ho realizzato un Tool chiamato Buildtest che è composto da un gestionale web e un SDK per iOS.
Attraverso questo Tool posso compilare la lista dei test da effettuare per ogni revisione dell’app ed attendere il responso da parte dei tester.
Proprio perché moltissimi test si ripetono per ogni applicazione, a prescindere dalle sue funzionalità , con Buildtest posso importare direttamente una lista pre-configurata di test da far eseguire per ogni app.
Il tool è gratuito, quindi potete usarlo in libertà , ma nel caso fatemi sapere come vi siete trovati!
Conclusioni
Il mondo del testing è immenso e ogni sviluppatore, Project Manager e CTO ha una personale opinione data dalle esperienze passate.
Per questo è importante condividere tali esperienze per migliorare non solo i prodotti che realizziamo ma anche la nostra vita davanti al monitor 😉