La capacità di attenzione media di un essere umano è inferiore a 9 secondi! Ti sei mai chiesto perché? La maggior parte delle applicazioni mobili nate negli ultimi tempi ti obbliga a scorrere un feed dove il cervello è ormai programmato a non osservare nulla per più di pochi secondi. Questo ha portato a una significativa riduzione della capacità di attenzione dell’utente medio.
Con la moltitudine di applicazioni mobili disponibili negli store, arriva la grande responsabilità di testare le app mobili e di scalare gli sforzi di regression testing. Ed è qui che tornano utili i tool di mobile testing.
Sono stato uno dei primi utilizzatori dei framework di mobile testing e, secondo la mia esperienza, concentrarsi su automazione, form factor e test di performance ha avuto un ruolo altrettanto importante per scalare e aumentare l’impatto nel mondo mobile. In questo articolo, condividerò le tecniche più efficaci per automatizzare i test delle tue applicazioni mobili.
Test delle Applicazioni Mobili: Componenti da Considerare
Testare su qualsiasi piattaforma specifica presenta le proprie sfide, ma con il mobile ci sono ulteriori parametri che bisogna prendere in considerazione. Che tu effettui test manuali o test automatizzati, oltre ai test funzionali, i tuoi casi di test devono concentrarsi su:
Connettività
È importante affrontare cosa succede se un utente utilizza il suo dispositivo mobile in modalità aereo o offline, cosa avviene se la banda subisce fluttuazioni, ecc., per assicurarti che l’app funzioni correttamente.
Localizzazione
Soprattutto per le applicazioni mobili che dipendono dal GPS o da servizi basati sulla posizione, i test devono essere eseguiti simulando la posizione con tool come MobileSpy, Location Spoofer ecc.; altrimenti sarebbe difficile testare—ad esempio: se vuoi simulare uno scenario di test per un’app di ride-sharing, dove qualcuno sta richiedendo una corsa da New York e sono state apportate modifiche sui microservizi backend specifici per trovare un autista in quella località. Senza simulazione, i test non forniranno risultati accurati.
Sistema Operativo
In particolare, con i numerosi telefoni Android oggi presenti sul mercato, testare tutte le versioni disponibili del sistema operativo è praticamente impossibile - quindi, come si può dare una priorità? Con iOS, ci sono ulteriori sfide imposte da Apple relative alle versioni di Xcode associate ai cambiamenti di versione del sistema operativo.
Oggi molte aziende ricorrono a fornitori terzi come BrowserStack per utilizzare simulatori/emulatori su vari sistemi operativi, effettuare test su dispositivi e test cross browser.
Le icone della UI sono diverse a seconda della piattaforma del sistema operativo: Windows, iOS e Android e, quando si tratta di automazione dei test, la maggior parte di noi finisce per utilizzare i simulatori—quelli Android richiedono molto più tempo per caricarsi mentre i dispositivi iOS sono più veloci.
Le diverse combinazioni di tasti sui dispositivi mobili in base al sistema operativo per scattare screenshot utili al debugging sono un’informazione cruciale per chiunque testi applicazioni mobili.
Form Factor
Durante lo sviluppo di applicazioni mobili, ci sono 5 principali form factor che vanno considerati per i diversi sistemi operativi, oltre alla modalità verticale o orizzontale su ognuno di questi tipi di dispositivi:
| Dispositivo | Dimensione schermo |
| Dispositivi mobili piccoli | 3,5 pollici o meno |
| Dispositivi mobili medi | da 3,5 a 5 pollici |
| Tablet | da 5 a 7 pollici |
| Tablet piccoli | da 7 a 8,5 pollici |
| Tablet a grandezza intera | 8,5 pollici o più |
Come Scegliere il Framework Giusto per l’Automazione Mobile
Considerare i form factor durante la creazione delle applicazioni mobili significa garantire la reattività dell’app quando viene aperta su dispositivi mobili e sistemi operativi differenti. Quando l’app viene usata su scala globale e le aziende vogliono aumentare la base utenti, sarà necessario prendere questa decisione già nelle prime fasi dello sviluppo per preferire framework come React Native, invece dello sviluppo nativo per Android o iOS.
In caso contrario, le aziende finiranno per spendere tempo e risorse successivamente per effettuare refactoring e redesign delle app passando a framework React Native. Questo impatta direttamente il numero di team e i costi di manutenzione, dato che i framework React Native permettono di sviluppare sia applicazioni iOS che Android.
Quando le applicazioni mobili vengono sviluppate con framework React Native, si riduce anche il carico dei test automatizzati, poiché basta mantenere un solo framework di automazione dei test per entrambi i sistemi iOS e Android.
Ci sono diversi modi per sviluppare applicazioni mobili. Alcune aziende scelgono di utilizzare linguaggi di programmazione nativi come Java e Objective C per applicazioni Android e iOS rispettivamente. Il vantaggio nell’uso delle lingue native è la possibilità di offrire funzionalità ricche alle applicazioni.
D'altra parte, gli id degli elementi saranno diversi su entrambe le piattaforme—il che significa che avremo bisogno di framework di test nativi separati per testare lo stesso come Espresso su Android, XCUITest su iOS, ecc.
React Native è un altro linguaggio di programmazione comunemente utilizzato per sviluppare applicazioni mobili responsive che è stato reso open source da Facebook. L'obiettivo era quello di unificare gli sforzi di sviluppo mobile su entrambe le piattaforme in modo che possa esserci un unico team e così gli id degli elementi su entrambe le app saranno gli stessi—il che richiede solo un unico framework di test come Appium per aiutare a testare le applicazioni mobili.
Quando si tratta di automatizzare i test delle applicazioni mobili, scegliere i giusti strumenti di automazione QA può fare una differenza significativa nell'efficienza dei test.
Come automatizzare i test delle applicazioni mobili iOS
Durante i test manuali ci sono diversi criteri a cui bisogna attenersi: la maggior parte delle aziende che sviluppano app iOS specificano chiaramente quali sistemi operativi e versioni sdk sono supportati. Questo aiuta a limitare gli sforzi di test.
Per poter scalare gli sforzi di test del software, dobbiamo investire nell'automazione. Ci sono molti framework popolari che supportano l'automazione dei test delle app mobili iOS, tra i quali limitiamo la discussione ai seguenti 2 strumenti di automazione:
- XCUITest
- Appium
| XCUITest | Appium |
| Framework per app native che può risiedere all'interno del codice sorgente iOS. | Framework di test isolato che è costruito all'esterno del codice sorgente. |
| Scritto in Objective C o Swift | Scritto in Java, Python, ecc. |
| Explicit waits che applicano una condizione. | Implicit waits che comportano l'uso di sleep(), rendendo i test instabili. |
| Mock delle risposte API backend utilizzando librerie open source come Mockingjay | Supporta l'uso di server mock. |
| Essendo un framework nativo, può essere utilizzato solo per testare applicazioni iOS. | Poiché i test risiedono all'esterno del codice sorgente e possono essere scritti in linguaggi come Java, Python, ecc, può essere utilizzato per testare applicazioni cross-platform come Windows, iOS e Android purché gli id degli elementi siano gli stessi su entrambe le piattaforme. |
Ho utilizzato server mock per simulare le chiamate al backend e testare esclusivamente l'interfaccia utente come segue, creando una classe base:

Ora che la classe base è pronta, aggiungo il test vero e proprio sfruttando il page object design pattern come segue:

Come automatizzare i test delle applicazioni mobili Android
Ci sono oltre 2 miliardi di dispositivi Android attivi nel mondo. Testare la tua applicazione Android su diversi dispositivi e tipi di sistemi operativi è quasi impossibile! Per questo le aziende dichiarano esplicitamente le versioni che supportano. Ciò garantisce anche una migliore esperienza utente.
I framework di automazione Android aiutano sicuramente ad accelerare i processi di test come Robotium, Selendroid, ecc. e, per lo scopo della nostra discussione, limitiamoci agli strumenti di automazione: Espresso e Appium:
| Espresso | Appium |
| Framework nativo che può risiedere all'interno della codebase sorgente Android. | Framework di test isolato che viene sviluppato al di fuori della codebase sorgente. |
| Scritto in Java e Kotlin | Scritto in Java, Python, ecc. |
| Attese esplicite, operazioni asincrone supportate tramite la funzionalità delle idling resources | Attese implicite che prevedono l'utilizzo di sleep(), rendendo i test instabili. |
| Mock delle risposte del backend utilizzando librerie open source come Mockito e Retrofit builder | Supporta l'uso di server mock. |
| Essendo un framework nativo, può essere utilizzato solo per testare applicazioni Android. | Poiché i test risiedono al di fuori della codebase sorgente e possono essere scritti in linguaggi come Java, Python, ecc., può essere utilizzato per testare applicazioni cross-platform sia su iOS che su Android, purché gli id degli elementi siano uguali su entrambe le piattaforme. |
Uno dei vantaggi nell'utilizzo dei framework nativi per app è la possibilità di utilizzare server mock per simulare le chiamate API al backend e testare così esclusivamente l'interfaccia utente. Ecco un esempio di codice su come l'ho implementato:

A seconda di come è sviluppata la vostra architettura a microservizi, potete ottenere la risposta dalla scheda Rete del vostro browser o direttamente dagli sviluppatori e fare riferimento ad essa all'interno del vostro test come segue:

Come potete vedere nell'esempio sopra, HomeTabPage viene richiamata all'interno del test, invece di dover validare esplicitamente ogni elemento—ho sfruttato il pattern page object nel framework nel modo seguente:

Strumenti di Test per App Mobile
Esistono diversi strumenti di testing nel settore e la scelta dipende da molteplici fattori:
- Competenze del team
- Obiettivo dell'automazione
- Destinatari dell'automazione: Product Manager/Vendite/Engineers/Testers
- Compatibilità tra framework di test e codice sorgente nativo
- Numero di app ibride
Diversi strumenti comunemente utilizzati nel settore includono:
- Selendroid
- Robotium
- Appium
- Testdroid
- UiAutomator
Non vuoi occuparti dei test internamente? Puoi anche affidarti a servizi di testing per app mobile che lo fanno per te.
Test delle Prestazioni delle Applicazioni Mobile
Durante il testing delle applicazioni mobile, oltre a concentrarci sull'automazione per aumentare la scalabilità dei test, dobbiamo anche dare priorità ai test delle prestazioni dal momento che giocano un ruolo fondamentale nel determinare se un utente continuerà a utilizzare la nostra applicazione.
Se lo schermo impiega più di 2 secondi a caricarsi, gli utenti diventano impazienti—questo si ricollega ai nostri studi sull'attenzione; quindi, per mantenere gli utenti è necessario investire nel performance testing.
Quando si testa la performance delle app, occorre identificare i KPI e fare benchmarking su di essi:
- Tempo massimo di risposta
- Tempo medio di risposta
- Throughput medio
- Numero massimo di utenti attivi per ogni sistema operativo e dispositivo
L'utilizzo di uno strumento di test per app mobile può semplificare le prove di performance. Ad esempio, Apptim può tracciare le metriche delle prestazioni lato utente finale—fornisce report completi per tutti i principali parametri di performance.
Per monitorare le prestazioni delle applicazioni mobili, possiamo utilizzare Firebase Performance Monitoring che offre il controllo sui dati delle prestazioni fornendo approfondimenti su come si comporta la tua app, suddividendo i dati di tracciamento e di rete in dimensioni come versione dell'app, paese, dispositivo e tipo di rete.
Esistono anche altri strumenti come Appium Studio, Sauce Labs, Testdroid, ecc. che offrono capacità simili di monitoraggio delle prestazioni.
Spero che questo articolo ti abbia fornito un'introduzione al testing delle applicazioni mobili e ai fattori critici a esso associati!
Per ulteriori best practice e suggerimenti per migliorare il tuo processo di sviluppo, iscriviti alla newsletter di The QA Lead.
Letture correlate:
Da non perdere:
- CHE COS'È TESTGEAR? PANORAMICA E TOUR DELLE FUNZIONALITÀ
- METRICHE DI MONITORAGGIO DEI SERVER DA TENERE SOTTO CONTROLLO PER LA SALUTE E LE PRESTAZIONI DEL SISTEMA
Elenco correlato di strumenti:
