Automatizzare i test dell'interfaccia utente

Testare le interazioni degli utenti contribuisce ad assicurarti che non riscontrino risultati inaspettati o che non abbiano un'esperienza negativa quando interagiscono con la tua app. Ti consigliamo di acquisire l'abitudine di creare test dell'interfaccia utente (UI) se devi verificare che l'UI della tua app funzioni correttamente.

Un approccio ai test dell'interfaccia utente è quello di chiedere a un tester umano di eseguire una serie di operazioni dell'utente sull'app di destinazione e di verificare che funzioni correttamente. Tuttavia, questo approccio manuale può richiedere molto tempo e essere soggetto a errori. Un approccio più efficiente è scrivere i test dell'interfaccia utente in modo che le azioni utente vengano eseguite in modo automatico. L'approccio automatico ti consente di eseguire i test in modo rapido e affidabile in modo ripetibile.

I test dell'interfaccia utente avviano un'app (o parte di essa), simulano le interazioni degli utenti e infine controllano che l'app abbia reagito in modo appropriato. Si tratta di test di integrazione che possono variare dalla verifica del comportamento di un piccolo componente a un grande test di navigazione che attraversa un intero flusso utente. Sono utili per verificare la presenza di regressioni e per verificare la compatibilità con diversi livelli API e dispositivi fisici.

Esegui test dell'interfaccia utente

  • Per eseguire test UI strumentati utilizzando Android Studio, implementa il codice di test in una cartella di test Android separata (src/androidTest/java). Il plug-in Android Gradle crea un'app di test in base al codice di test, quindi carica l'app di test sullo stesso dispositivo dell'app di destinazione. Nel codice di test, puoi utilizzare framework di test dell'interfaccia utente per simulare le interazioni degli utenti nell'app di destinazione, in modo da eseguire attività di test che coprono scenari di utilizzo specifici.
  • Puoi anche utilizzare Robolectric per eseguire test dell'interfaccia utente sulla JVM.

Architettura e configurazione dei test

L'architettura dell'app deve consentire ai test di sostituire parti dell'app per i doppi di test e devi utilizzare librerie che forniscono utilità per supportare il test. Ad esempio, puoi sostituire un modulo del repository di dati con una versione in memoria che fornisca al test dati deterministici falsi.

Diagrammi dell'architettura di produzione e test. Il diagramma di produzione mostra le origini dati locali e remote che forniscono dati al repository, che a sua volta li fornisce in modo asincrono all'interfaccia utente. Il diagramma di test mostra un repository falso che fornisce i suoi dati in modo sincrono all'interfaccia utente.
Figura 3: test di un'interfaccia utente sostituendo le relative dipendenze con elementi falsi.

L'approccio consigliato per sostituire le dipendenze è l'inserimento di dipendenze. Puoi creare il tuo sistema manualmente, ma ti consigliamo di utilizzare un framework DI come Hilt.

Perché testare automaticamente le UI?

Un'app per Android può avere come target migliaia di dispositivi diversi con molti livelli API e fattori di forma e l'alto livello di personalizzazione offerto dall'OS all'utente significa che la tua app potrebbe essere visualizzata in modo errato o addirittura arrestarsi in modo anomalo su alcuni dispositivi.

I test dell'interfaccia utente ti consentono di eseguire test di compatibilità, verificando il comportamento di un'app in diversi contesti. Ti consigliamo di eseguire i test dell'interfaccia utente su dispositivi diversi nei seguenti modi:

  • Livello API: 21, 25 e 30.
  • Impostazioni internazionali: inglese, arabo e cinese.
  • Orientamento: verticale, orizzontale.

Inoltre, le app devono controllare il comportamento non solo sugli smartphone. Devi eseguire il test su tablet, dispositivi pieghevoli e altri dispositivi. Scopri di più su come testare diverse dimensioni dello schermo.

Tipi di test UI

Questa sezione illustra due tipi di test dell'interfaccia utente:

  • I test di comportamento analizzano la gerarchia dell'interfaccia utente per fare affermazioni sulle proprietà degli elementi dell'interfaccia utente.
  • I test di screenshot acquisiscono screenshot di un'interfaccia utente e li confrontano con immagini approvate in precedenza.