I test sono parte integrante del processo di sviluppo dell'app. In genere, esegui le app su un emulatore o un dispositivo per verificare manualmente che il codice funzioni come previsto. Tuttavia, i test manuali sono dispendiosi in termini di tempo, soggetti a errori e spesso non gestibili per le app che vengono eseguite su schermi e dispositivi di varie dimensioni. I problemi dei test manuali sono spesso il risultato dell'utilizzo di un singolo dispositivo per lo sviluppo. Di conseguenza, gli errori possono passare inosservati su altri dispositivi con diversi fattori di forma.
Per identificare le regressioni su finestre e schermi di dimensioni diverse, implementa test automatici per verificare che il comportamento e l'aspetto della tua app siano coerenti su diversi fattori di forma. I test automatici identificano i problemi in anticipo, attenuando il rischio che questi influiscano sull'esperienza utente.
Che cosa testare
Quando sviluppi UI realizzate per schermi e finestre di dimensioni diverse, presta particolare attenzione a due aspetti:
- Come gli attributi visivi dei componenti e dei layout sono diversi su finestre di dimensioni diverse
- In che modo lo stato viene conservato durante le modifiche alla configurazione
Attributi visivi
Indipendentemente dal fatto che tu personalizzi le UI per dimensioni diverse della finestra o meno, devi verificare che le UI vengano visualizzate correttamente. Tieni conto di larghezze e altezze che sono compatte, medie ed estese. Consulta la sezione Classi di dimensioni delle finestre per i breakpoint consigliati.
Inoltre, l'app potrebbe non visualizzare alcuni componenti del sistema di progettazione come previsto quando i limiti di dimensioni vengono superati.
Se la tua app ha layout adattabili per dimensioni diverse della finestra, devi avere test automatici per evitare regressioni. Ad esempio, fissare un margine su uno smartphone può portare a incoerenze di layout su un tablet. Crea test dell'interfaccia utente per verificare il comportamento dei layout e dei componenti oppure crea test di screenshot per verificare visivamente i layout.
Ripristino dello stato
Le app in esecuzione su dispositivi come i tablet vengono ruotate e ridimensionate molto più frequentemente rispetto alle app sui telefoni. Inoltre, i dispositivi pieghevoli introducono nuove funzionalità del display, come l'apertura e la chiusura, che possono attivare modifiche alla configurazione. L'app deve essere in grado di ripristinare lo stato quando si verificano queste modifiche alla configurazione. Inoltre, devi scrivere test che confermino che l'app ripristini correttamente lo stato.
Innanzitutto, verifica che l'app non abbia arresti anomali quando si verificano modifiche alla configurazione. Assicurati che ogni interfaccia utente della tua app possa gestire qualsiasi combinazione di rotazione, ridimensionamento o piegatura. Poiché le modifiche alla configurazione ricreano l'attività per impostazione predefinita, alcuni arresti anomali si verificano a causa di presupposti di persistenza dell'attività.
Esistono diversi modi per testare le modifiche alla configurazione, ma nella maggior parte dei casi esistono due modi per eseguire il test:
- In Componi, utilizza
StateRestorationTester
per simulare una modifica della configurazione in modo efficiente senza riavviare l'attività. Per ulteriori informazioni, consulta le sezioni seguenti. - In qualsiasi test dell'interfaccia utente, come Espresso o Compose, simula una modifica della configurazione chiamando
Activity.recreate()
.
In genere, non è necessario utilizzare dispositivi diversi per testare il ripristino dello stato in risposta alle modifiche alla configurazione. Questo perché tutte le modifiche alla configurazione che ricreano l'attività hanno ripercussioni simili. Tuttavia, alcune modifiche alla configurazione potrebbero attivare diversi meccanismi di ripristino dello stato su dispositivi specifici.
Ad esempio, quando un utente visualizza un'interfaccia utente elenco-dettagli su un dispositivo pieghevole aperto e chiude il dispositivo per passare al display anteriore, in genere l'interfaccia utente passa alla pagina dei dettagli. Un test automatico dovrebbe coprire questo ripristino dello stato dell'interfaccia utente, incluso lo stato di navigazione.
Per testare le modifiche alla configurazione che si verificano sui dispositivi quando passano da un display all'altro o attivano la modalità a più finestre, hai a disposizione diverse opzioni:
- Utilizzando qualsiasi dispositivo, ridimensiona lo schermo durante un test. Nella maggior parte dei casi, questo attiva tutti i meccanismi di ripristino dello stato che devi verificare. Tuttavia, questo test non funziona per la logica che rileva posture specifiche nei dispositivi pieghevoli, poiché le variazioni di postura non attivano una modifica della configurazione.
- Utilizzando un dispositivo o un emulatore che supporta le funzionalità che vuoi testare, attiva le modifiche di configurazione correlate. Ad esempio, un dispositivo pieghevole o un tablet può essere controllato utilizzando Espresso Device per passare dalla modalità chiusa a quella aperta in orizzontale. Per esempi, consulta la sezione Dispositivo Espresso di Librerie e strumenti per testare diverse dimensioni dello schermo.
Tipi di test per diverse dimensioni di schermo e finestra
Utilizza il tipo di test appropriato per ogni caso d'uso per verificare che funzioni correttamente su diversi fattori di forma:
I test di comportamento dell'interfaccia utente avviano una parte dell'interfaccia utente dell'app, ad esempio la visualizzazione di un'attività. I test verificano che determinati elementi esistano o abbiano attributi specifici . Se vuoi, i test possono eseguire azioni simulate degli utenti. Per le visualizzazioni, utilizza Espresso. Jetpack Compose ha le proprie API di test. I test del comportamento dell'interfaccia utente possono essere strumentati o locali. I test con strumenti vengono eseguiti su dispositivi o emulatori, mentre i test dell'interfaccia utente locale vengono eseguiti su Robolectric sulla JVM.
Utilizza i test di comportamento dell'interfaccia utente per verificare che l'implementazione della navigazione di un'app sia corretta. I test eseguono azioni come clic e scorrimenti. I test del comportamento dell'interfaccia utente controllano anche l'esistenza di determinati elementi o proprietà. Per ulteriori informazioni, consulta Automatizzare i test dell'interfaccia utente.
I test di screenshot acquisiscono uno screenshot di un'interfaccia utente o di un componente e confrontano l'immagine con uno screenshot approvato in precedenza. Si tratta di un modo molto efficace per difendersi dalle regressioni, in quanto un singolo screenshot può coprire un numero elevato di elementi e le relative proprietà visive. Puoi eseguire test di screenshot sulla JVM o sui dispositivi. Sono disponibili più framework di test degli screenshot. Per ulteriori informazioni, consulta i test degli screenshot.
Infine, potresti aver bisogno di test di unità per verificare la funzionalità di unità di logica che si comportano in modo diverso a seconda del tipo di dispositivo o delle dimensioni della finestra, ma i test di unità sono meno comuni in questo ambito.
Passaggi successivi
Per ulteriori informazioni su come implementare i controlli contenuti in questo documento, consulta la sezione Librerie e strumenti.