Ciò che dovresti testare dipende da fattori quali il tipo di app, il team di sviluppo, la quantità di codice legacy e l'architettura utilizzata. Le seguenti sezioni descrivono gli aspetti che un principiante potrebbe prendere in considerazione quando pianifica gli elementi da testare nella propria app.
Organizzazione delle directory di test
Un progetto tipico in Android Studio contiene due directory che contengono i test, a seconda dell'ambiente di esecuzione. Organizza i test nelle seguenti directory come descritto:
- La directory
androidTest
deve contenere i test eseguiti su dispositivi reali o virtuali. Questi test includono test di integrazione, test end-to-end e altri test in cui la JVM da sola non è in grado di convalidare la funzionalità dell'app. - La directory
test
deve contenere i test eseguiti sulla macchina locale, ad esempio i test delle unità. A differenza di quanto sopra, questi possono essere test eseguiti su una JVM locale.
Test delle unità essenziali
Quando segui le best practice, assicurati di utilizzare i test delle unità nei seguenti casi:
- Test delle unità per ViewModels, o presentatori.
- Test delle unità per il livello dati, in particolare i repository. La maggior parte del livello dati dovrebbe essere indipendente dalla piattaforma. In questo modo i test possono essere raddoppiati per sostituire i moduli del database e le origini dati remote nei test. Consulta la guida sull'utilizzo delle doppie prove in Android
- Test delle unità per altri livelli indipendenti dalla piattaforma, ad esempio il livello Dominio, come con casi d'uso e interattori.
- Test delle unità per classi di utilità come la manipolazione delle stringhe e la matematica.
Test dei casi limite
I test delle unità devono essere incentrati sia sui casi normali che sui casi limite. I casi limite sono scenari rari che è improbabile che i tester umani e i test più grandi vengano rilevati. Ecco alcuni esempi:
- Operazioni matematiche che utilizzano numeri negativi, zero e condizioni di confine.
- Tutti i possibili errori di connessione di rete.
- Dati danneggiati, ad esempio JSON in formato non corretto.
- Simulazione dello spazio di archiviazione completo durante il salvataggio in un file.
- Oggetto ricreato nel corso di un processo (ad esempio un'attività quando il dispositivo viene ruotato).
Test delle unità da evitare
Alcuni test delle unità devono essere evitati a causa del loro basso valore:
- Test che verificano il corretto funzionamento del framework o di una libreria, non del codice.
- I punti di ingresso del framework, come attività, frammenti o servizi, non devono avere una logica di business, pertanto il test delle unità non deve essere una priorità. I test delle unità per le attività hanno poco valore perché coprirebbero principalmente il codice del framework e richiedono una configurazione più complessa. I test strumentali, come i test UI, possono coprire queste classi.
Test UI
Esistono diversi tipi di test dell'interfaccia utente da utilizzare:
- I test dell'interfaccia utente di Screen controllano le interazioni critiche degli utenti in un'unica schermata. Eseguono azioni quali fare clic sui pulsanti, digitare moduli e verificare gli stati visibili. Una lezione di test per schermata è un buon punto di partenza.
- Test del flusso utente o Test di navigazione, che coprono i percorsi più comuni. Questi test simulano un utente che si muove attraverso un flusso di navigazione. Sono test semplici, utili per verificare gli arresti anomali in fase di runtime all'inizializzazione.
Altri test
Esistono test più specializzati, come test degli screenshot, test delle prestazioni e test delle scimmie. Puoi anche classificare i test per scopo, ad esempio regressioni, accessibilità e compatibilità.
Continua a leggere
Per eseguire un test in modo isolato, spesso è necessario sostituire le dipendenze del soggetto sottoposto a test con dipendenze false o fittizie, chiamate "doppi di test" in generale. Continua a leggere in Utilizzare le doppie di prova in Android.
Per scoprire come creare test delle unità e dell'interfaccia utente, consulta i codelab sui test.