Prova diverse dimensioni di schermo e finestra

I test sono parte integrante del processo di sviluppo dell'app. Di solito 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 dovuti all'utilizzo di un solo dispositivo per lo sviluppo. Di conseguenza, gli errori possono passare inosservati su altri dispositivi con fattori di forma diversi.

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:

  1. Come gli attributi visivi dei componenti e dei layout sono diversi su finestre di dimensioni diverse
  2. 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 delle finestre o meno, devi verificare che le UI vengano visualizzate correttamente. Tieni conto di larghezze e altezze che sono compatte, medie ed estese. Per i punti di interruzione consigliati, consulta Classi di dimensioni della finestra.

Figura 1. La schermata "Per te" in Ora su Android in dimensioni diverse della finestra

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 di finestra diverse, devi avere test automatici per evitare regressioni. Ad esempio, la modifica di 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 realizza test degli 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. Devi anche scrivere test che confermino lo stato del ripristino corretto dell'app.

Figura 2. Dispositivo pieghevole piegato, aperto, aperto in orizzontale e semiaperto (da tavolo).

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 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. Questo 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 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 riguardare il ripristino dello stato della UI, incluso lo stato di navigazione.

Per testare le modifiche alla configurazione che si verificano sui dispositivi che passano da un display all'altro o che attivano la modalità multi-finestra, hai a disposizione più 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 pieghevoli, poiché le modifiche alla postura non attivano una modifica alla 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.
Figura 3. Chiusura e apertura del dispositivo.

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 strumentati vengono eseguiti su dispositivi o emulatori, mentre i test locali dell'interfaccia utente 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 degli 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 diversi framework per il test degli screenshot. Per ulteriori informazioni, consulta i test degli screenshot.

Infine, potresti aver bisogno di test delle unità per testare la funzionalità delle unità della logica che si comportano in modo diverso a seconda del tipo di dispositivo o della dimensione 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 la sezione Librerie e strumenti.