Da quando gli utenti mobile hanno superato in percentuale quelli desktop, le App sono diventate per molte aziende un canale fondamentale per la gestione della relazione digitale con gli stakeholder: consentono di stabilire un contatto più intimo con gli utenti, grazie alla possibilità di offrire maggiore personalizzazione e di inviare facilmente notifiche push.
Un infinito numero di applicazioni affollano gli store e differenziarsi è sempre più arduo: garantire usabilità efficace e costante diventa un requisito fondamentale. Stabilità e qualità non bastano: devono durare nel tempo.
Al rilascio di ogni progetto, la fase di testing è determinante per escludere anomalie e garantire adeguate performance alle funzionalità.
Nel caso specifico del rilascio di un’applicazione mobile, lo UI testing prevede una serie di test funzionali per verificare che l’intera applicazione, compresa la sua interfaccia utente, funzioni correttamente. Gli aspetti da verificare sono:
- APPROVAZIONE: l’app deve rispettare i requisiti funzionali e grafici specificati dal cliente.
- STABILITÀ: non deve terminare in maniera improvvisa ed inaspettata.
- FEDELTÀ: deve avere resa grafica coerente – entro certi limiti – su tutti i device. Nell’ambito Android, la verifica dell’aspetto “fedeltà” è molto importante, dato l’elevato numero di device differenti in termini di dimensioni, versione di software e produttori su cui un’app viene eseguita. È buona pratica quindi eseguire UI test su quanti più device possibile, tenendo conto che l’emulazione è meno affidabile di un test su un dispositivo fisico.
- REGRESSIONE: tutti i punti precedenti devono rimanere rispettati durante lo sviluppo.
L’attività di UI testing può essere realizzata da una persona manualmente, utilizzando l’app e navigando le varie schermate. È un metodo impegnativo, perché richiede molto tempo, tester di provata esperienza e comporta un seppure minimo margine d’errore.
Il metodo più efficiente ed efficace è quello automatico. Senza tester umani, e senza la necessità di numerosi device su cui testare la resa, il procedimento diventa veloce, affidabile e ripetibile. Può essere implementato seguendo due modalità, che analizzeremo nel dettaglio.
I due approcci per lo UI testing automatico
Testing tramite algoritmo
Test realizzato tramite un algoritmo, che tenta di visitare tutte le schermate dell’app, interagendo con i widget presenti in esse. Anche in questo caso viene effettuata un’analisi “visiva” degli screenshot, ma non è necessario lo script e il suo relativo aggiornamento in caso di modifiche. Data la natura non pilotabile dell’algoritmo, non è possibile focalizzare il test su particolari funzionalità.
Testing tramite script
Il test automatico è guidato da uno script, realizzato da un tester secondo un obiettivo di interesse (per esempio creazione e salvataggio di un preventivo). Al termine del processo si effettua un’analisi visiva degli screenshot, sia essa automatica o non. Questo approccio offre la possibilità di focalizzare l’esecuzione del test su percorsi particolari e ben definiti, per scoprire regressioni che “rompono l’esecuzione”. Per contro, richiede un planning precedente da parte di una persona con esperienza e – a fronte di cambiamenti dell’app – è necessario aggiornare anche lo script stesso.
Scopri di più sulla fase di rollout di un nostro progetto
I migliori tool per lo UI testing di un’app
Per chi volesse approfondire la questione dal lato tecnico, esistono diversi strumenti per lo UI testing automatico.
Tra i tool che consentono di realizzare testing tramite algoritmo troviamo Test Lab e Amazon AWS Cloud.
- Pro: per utilizzarli è sufficiente effettuare un upload dell’app, senza introdurre particolari SDK o librerie.
- Contro: potrebbero servire svariati tentativi o molto tempo per raggiungere il punto di cui è richiesta l’analisi. Inoltre vengono esplorate sezioni non utili (es. caricamento di documenti tramite fotocamera).
Seguendo l’approccio di testing tramite script, si possono seguire due strade.
- Nella prima lo script viene creato utilizzando linguaggi specifici della piattaforma in esame (Espresso per Android e XCUITest per Android). Una volta definito, lo script viene caricato e il sistema poi si occupa di sincronizzare l’esecuzione, eseguendo degli screenshot. Servizi che consentono questa modalità sono Firebase Test Lab, Amazon Device Farm, Sea Cloud Test di Experitest e pCloudy.com.
- La seconda strada percorribile è quella dell’utilizzo della piattaforma Appium: applicativo open source in grado di eseguire app iOS e Android e pilotarle tramite driver appositi, senza dover installare in esse SDK o librerie apposite. Servizi che offrono questa possibilità sono Kobiton, BrowserStack, Saucelabs.com; oppure è possibile un’installazione in house, ma è necessario disporre di quanti più device possibile.
Due casi pratici di UI testing di un’applicazione
Riassumiamo brevemente due casi pratici in cui abbiamo utilizzato il tool Espresso per Android: nello specifico lo strumento Espresso Test Recorder, che ci ha permesso di registrare l’interazione dell’utente, trasformandola in uno script senza l’intervento manuale del tester.
Il caso ARAG – Aggiunta di una voce in una schermata
Poco prima di andare in produzione si è voluto modificare alcune schermate dell’app per introdurre un testo configurabile. Per evitare che tale testo non fosse leggibile su alcuni device o che andasse a “rompere” l’interfaccia grafica, si è eseguito un breve script di UI Test per verificare le schermate modificate su device non presenti in azienda.
Il caso Gruppo Italiano Vini – Splash screen
Lo splash screen dell’app prevede un’immagine di background e un logo centrato. In fase di avvio dell’app il controllo dell’ingombro delle immagini è ridotto e vi era il rischio che su alcuni device tale logo uscisse dai bordi. Si è quindi eseguito uno script su Firebase Test Lab per verificare su quanti più device possibile che tale intervento fosse corretto.
In entrambi i casi, grazie all’utilizzo di sistemi automatici per il test UI, siamo riusciti a garantire efficienza nel processo (no device e meno costi per le risorse), mantenendo nel tempo la qualità delle funzionalità grazie al controllo continuo dei sistemi automatici.