Prova diverse dimensioni di schermo e finestra

I test sono parte integrante del processo di sviluppo dell'app. In genere, le app vengono eseguite su un emulatore o su un dispositivo per verificare manualmente che il codice funzioni come previsto. Tuttavia, i test manuali richiedono molto tempo, sono soggetti a errori e spesso non sono gestibili per le app 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 fattori di forma diversi.

Per identificare regressioni su diverse dimensioni di finestre e schermi, implementa test automatici per verificare che il comportamento e l'aspetto della tua app siano coerenti nei diversi fattori di forma. I test automatici identificano i problemi nella fase iniziale, riducendo il rischio che influiscano sull'esperienza utente.

Che cosa testare

Quando sviluppi UI realizzate per diverse dimensioni di schermi e finestre, presta particolare attenzione a due aspetti:

  1. In che modo gli attributi visivi di componenti e layout sono diversi su finestre di dimensioni diverse
  2. In che modo lo stato viene conservato nelle modifiche alla configurazione

Attributi visivi

Che tu personalizzi o meno le UI per dimensioni di finestre diverse, devi verificare che vengano visualizzate correttamente. Prendi in considerazione larghezze e altezze compatte, medie ed estese. Consulta Classi delle dimensioni delle finestre per i punti di interruzione consigliati.

Figura 1. Schermata "Per te" in Ora in Android con finestre di diverse dimensioni

Inoltre, l'app potrebbe non eseguire il rendering di alcuni componenti nel sistema di progettazione come previsto quando i relativi vincoli di dimensione vengono allungati.

Se la tua app ha layout adattivi per diverse dimensioni delle finestre, devi disporre di test automatici per evitare le regressioni. Ad esempio, correggere un margine su un telefono può generare incoerenze nel layout del tablet. Crea test dell'interfaccia utente per verificare il comportamento di layout e componenti oppure crea test di screenshot per verificare visivamente i layout.

Ripristino dello stato

Le app in esecuzione su dispositivi come tablet vengono ruotate e ridimensionate molto più spesso rispetto alle app sui telefoni. Inoltre, i pieghevoli introducono nuove funzionalità del display, come il pieghevole e l'apertura, che possono attivare modifiche alla configurazione. L'app deve essere in grado di ripristinare lo stato quando si verificano queste modifiche alla configurazione. Devi anche scrivere test che confermino che l'app ripristina correttamente lo stato.

Figura 2. Dispositivo pieghevole piegato, aperto in orizzontale, in posizione aperta e ruotato in orizzontale e a metà aperto (piano di appoggio).

Innanzitutto, verifica che l'app non si arresti in modo anomalo quando vengono apportate modifiche alla configurazione. Assicurati che ogni UI della tua app sia in grado di 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 dell'ipotesi di persistenza dell'attività.

Esistono diversi modi per testare le modifiche alla configurazione, ma nella maggior parte dei casi esistono due modi per farlo:

  • In Compose, 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 della UI 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. perché tutte le modifiche alla configurazione che ricreano l'attività hanno ripercussioni simili. Tuttavia, alcune modifiche alla configurazione potrebbero attivare meccanismi di ripristino dello stato diversi su dispositivi specifici.

Ad esempio, quando un utente visualizza un'interfaccia utente con i dettagli dell'elenco su un pieghevole aperto e chiude il dispositivo per passare al display frontale, 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 avvengono sui dispositivi che passano da un display all'altro o che entrano in modalità multi-finestra, hai a disposizione diverse opzioni:

  • Utilizzando qualsiasi dispositivo, ridimensiona lo schermo durante il 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 posizioni specifiche nei pieghevoli, poiché le modifiche alla postura non attivano una modifica della configurazione.
  • Utilizzando un dispositivo o un emulatore che supporti le funzionalità che vuoi testare, attiva le relative modifiche alla configurazione. Ad esempio, un pieghevole o un tablet possono essere controllati utilizzando il dispositivo Espresso per spostarsi da piegato a aperto in orizzontale. Consulta la sezione Dispositivo espresso di Librerie e strumenti per testare diverse dimensioni dello schermo per alcuni esempi.
Figura 3. Piegare e aprire il dispositivo.

Tipi di test per schermi e dimensioni di finestre differenti

Utilizza il tipo di test appropriato per ogni caso d'uso per verificare che il test funzioni correttamente in diversi fattori di forma:

  • I test del comportamento dell'interfaccia utente avviano alcune parti dell'interfaccia utente dell'app, ad esempio la visualizzazione di un'attività. I test verificano che alcuni elementi esistano o abbiano attributi specifici . I test potrebbero facoltativamente eseguire azioni utente simulate. Per le viste, utilizza Espresso. Jetpack Compose dispone delle proprie API di test. I test del comportamento della UI possono essere strumentati o locali. I test strumentali vengono eseguiti su dispositivi o emulatori, mentre i test dell'UI locale vengono eseguiti su Robolectric sulla JVM.

    Utilizza i test del comportamento della UI per verificare che l'implementazione della navigazione in 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 degli screenshot acquisiscono uno screenshot di un'interfaccia utente o di un componente e confrontano l'immagine con uno screenshot approvato in precedenza. Questo è un modo molto efficace per proteggersi dalle regressioni, poiché un singolo screenshot può coprire un gran numero di elementi e le relative proprietà visive. Puoi eseguire test degli screenshot sulla JVM o sui dispositivi. Sono disponibili più framework di test degli screenshot.

Infine, potresti aver bisogno di test delle unità per testare la funzionalità delle unità logiche che si comportano in modo diverso a seconda del tipo di dispositivo o delle dimensioni della finestra, ma i test delle unità sono meno comuni in quest'area.

Passaggi successivi

Per ulteriori informazioni su come implementare i controlli contenuti in questo documento, consulta Librerie e strumenti.