Android Tutorial sul test delle app con framework di automazione

⚡ Riepilogo intelligente

Android Il test delle app verifica una build su un panorama di dispositivi frammentato, combinando controlli unitari, di integrazione, operativi e di sistema con framework di automazione che vengono eseguiti su un dispositivo o direttamente sulla JVM.

  • 🔘 Perché è importante: Android Funziona su innumerevoli combinazioni di dispositivi e versioni, quindi i difetti di compatibilità sono quasi certi.
  • ☑️ Quattro livelli di test: I test unitari, di integrazione, operativi e di sistema individuano ciascuno una diversa classe di difetti.
  • ✅ Framework sul dispositivo: Migliori Android il framework di test si basa su JUnit e strumentazione.
  • 🧪 Alternativa alla JVM: Ombre robotiche Android Le classi e le suite vengono eseguite sulla JVM senza un dispositivo o un emulatore.
  • ️ Set di strumenti più ampio: Espresso, UI Automator e Appium estendere la copertura oltre le classi predefinite.
  • 📊 Miti da sfatare: L'utilizzo di soli emulatori, di pochi dispositivi o di test esplorativi dell'ultimo minuto lascia dei difetti nella versione finale del prodotto.

Android Tutorial sul test delle app che illustra i livelli di test, i framework di automazione e la copertura dei dispositivi.

Perché Android Prove?

Android è il più grande sistema operativo al mondo. Allo stesso tempo, Android è frammentato: ci sono tonnellate di dispositivi e Android versioni con cui la tua app deve essere compatibile.

Non importa quanto tempo si investa nella progettazione e nell'implementazione, gli errori sono inevitabili e i bug compariranno.

Android Strategia di test

un corretto Android La strategia di test dovrebbe includere quanto segue:

  1. Test unitario
  2. Prova di integrazione
  3. Operaprova nazionale
  4. test del sistema

Test unitari

I test unitari sono insiemi di programmi progettati per verificare un'unità atomica di codice sorgente, come un metodo o una classe.

Migliori Android la piattaforma viene fornita pre-integrata con JUnit Framework 3.0. È un framework open source per l'automazione Test unitarie consente agli sviluppatori di scrivere programmi di test unitari efficaci.

Oltre ai test unitari, i test dell'interfaccia utente (UI) rappresentano un'aggiunta fondamentale. Essi coprono i componenti dell'interfaccia utente dell'applicazione di destinazione e garantiscono che essa restituisca l'output corretto per una sequenza di azioni dell'utente sul dispositivo.

Azioni comuni dell'interfaccia utente dell'utente su un Android applicazione come toccare, digitare e scorrere

Il modo comune per eseguire test dell'interfaccia utente su un dispositivo è Android Strumentazione. Ma questo ha problemi di prestazioni. Uno dei migliori strumenti per condurre test dell'interfaccia utente Android is Robotium.

⚠️ Nota sulla versione: JUnit 3 classi come StrumentazioneTestCase sono stati deprecati all'API 24; i progetti attuali utilizzano AndroidTest X, Espresso e UI Automator. Robotium non è stato pubblicato nulla dal 2016.

Test di integrazione

In Test d'integrazione, tutti i moduli testati a livello di unità vengono combinati e verificati. In Android Ciò spesso implica la verifica dell'integrazione con componenti quali il test di Service, Activity e Content Provider.

Tipi di test di integrazione su Android che copre i test dei fornitori di servizi, attività e contenuti

Molti framework di test vengono utilizzati per condurre test di integrazione per Android, come Troyd, Robolectric e Robotium.

Operaprove nazionali

OperaI test di accettazione, detti anche test funzionali o di accettazione, sono test di alto livello che verificano la completezza e la correttezza dell'applicazione.

In Android, fitness è un framework open-source che semplifica l'esecuzione di test operativi sull'applicazione di destinazione.

Prove di sistema

In Test di sistema il sistema viene testato nel suo complesso e viene verificata l'interazione tra i componenti, software e hardware.

In Android, Il test del sistema normalmente include

  • Test della GUI
  • Test di usabilità
  • Test delle prestazioni
  • Prove di stress

Nell'elenco sopra, Test di Performance viene data maggiore attenzione. Puoi usare strumenti come Tracvista condurre test di prestazione su AndroidQuesto strumento può aiutarti a eseguire il debug della tua applicazione e a profilarne le prestazioni. Traceview è ora deprecato a favore di Profiler CPU.

Automatizzata Android Collaudo

As Android è frammentato, è necessario testare su molti dispositivi e questo costa denaro. Automatizzato Android I test contribuiscono a ridurre tali costi.

Vantaggi dell'automazione Android analisi

  • Ridurre il tempo per l'esecuzione dei casi di test
  • Aumenta la produttività del tuo processo di sviluppo
  • Rilevamento tempestivo dei bug, risparmio sui costi di manutenzione del software
  • Individuato e corretto rapidamente i bug sull'implementazione
  • Garantire la qualità del software

Studieremo i seguenti 2 framework

  • Android Quadro di prova
  • Struttura di test Robolectric

Android struttura di test

Uno dei framework di test standard per Android le applicazioni sono le Android framework di test. È ben integrato con il Android Gli strumenti SDK e la loro architettura sono composti da tre parti.

  1. Il pacchetto applicativo è l'applicazione di destinazione che deve essere testata.
  2. InstrumentationTestRunner è il Test Case Runner che esegue i casi di test sull'applicazione di destinazione. Include:
    • Strumenti di prova: Strumenti SDK per la creazione di test. Sono integrati nell'IDE o eseguibili dalla riga di comando.
    • ScimmiaRunner: Uno strumento che fornisce API per la scrittura di programmi che controllano un Android dispositivo o emulatore al di fuori di Android codice.
  3. Il pacchetto di test è organizzato in progetti di test e segue una convenzione di denominazione. Se l'applicazione da testare ha un nome di pacchetto "com.mydomain.myapp", il pacchetto di test dovrebbe essere "com.mydomain.myapp.test". Il pacchetto di test include 2 oggetti:
    • Classi di casi di test: includere metodi di test da eseguire sull'applicazione di destinazione.
    • Oggetti fittizi: includere dati fittizi che verranno utilizzati come input di esempio per i casi di test.

Android Classi dei casi di test

Androiddiagramma della classe TestCase che mostra il JUnit gerarchia dei casi di test della strumentazione

  1. Il caso di test include JUnit metodi per eseguire JUnit test
  2. TestSuite viene utilizzato per eseguire una serie di casi di test
  3. InstrumentationTestSuite è una TestSuite che inietta la strumentazione in InstrumentationTestCase prima di eseguirli.
  4. InstrumentationTestRunner esegue i casi di test sull'applicazione di destinazione.
  5. AndroidTestCase estende JUnit TestCase con metodi per accedere a risorse come Activity Context.
  6. ApplicationTestCase verifica le classi dell'applicazione in un ambiente controllato.
  7. InstrumentationTestCase verifica una particolare funzionalità o comportamento, ad esempio l'output dell'interfaccia utente dell'applicazione.
  8. ActivityTestCase è la classe base che supporta il test delle attività dell'applicazione.
  9. ProviderTestCase è una classe per testare un singolo ContentProvider.
  10. ServiceTestCase esegue test sulle classi Service in un ambiente di test e supporta il ciclo di vita del servizio.
  11. SingleLaunchActivityTestCase viene utilizzato per testare una singola Activity con un InstrumentationTestCase.
  12. Caso di test dell'unità di attività viene utilizzato per testare singole attività isolate.
  13. AttivitàStrumentazioneCaso di prova2 estende il JUnit La classe TestCase ti connette all'applicazione di destinazione tramite strumentazione, permettendoti di accedere ai componenti dell'interfaccia utente e inviare eventi come la pressione dei tasti o i tocchi.

Di seguito è riportato un esempio di ActivityInstrumentationTestCase. Verifica il funzionamento dell'interfaccia utente di un'applicazione Calcolatrice e controlla la correttezza degli output dell'interfaccia utente.

Esempio ActivityInstrumentationTestCase2 che verifica l'output dell'interfaccia utente della calcolatrice su Android

Quadro di test Robolectric

Test utilizzando il Android Testare un framework con un dispositivo o un emulatore è difficile. La creazione e l'esecuzione dei test sono lente e richiedono un notevole impegno di sviluppo. Per risolvere questo problema, esiste un'alternativa: il framework di test Robolectric.

Robolectric ti permette di correre Android Esegue i test direttamente sulla JVM senza bisogno di un dispositivo o di un emulatore.

Classi di casi di test Robolectric

Robolectric è in grado di eseguire le seguenti azioni:

  • Registrati e crea una classe Shadow
  • Intercettare il caricamento di Android classe
  • si utilizza Javaassistere per sovrascrivere i corpi del metodo di Android classe
  • Associa l'oggetto Ombra a Android classe

Ciò consente l'esecuzione del codice in fase di test senza un Android ambiente.

Altri framework di test

Oltre ai framework di test menzionati sopra, ne esistono molti altri, come ad esempio:

Miti di Android Collaudo

Molte imprese sviluppano Android Collaudo strategie basate su idee sbagliate comuni. Questa sezione esamina alcuni miti e realtà popolari di Android test.

Mito n. 1: Tutti Android I dispositivi sono gli stessi, quindi è sufficiente testare sugli emulatori.

Un'applicazione può funzionare perfettamente sugli emulatori, ma bloccarsi durante l'esecuzione su alcuni dispositivi reali.

Android Durante l'esecuzione su un dispositivo reale viene visualizzata una finestra di dialogo che indica l'arresto anomalo dell'applicazione.

Gli emulatori non sono sufficienti per testare la tua app su dispositivi mobili. Devi testarla su dispositivi reali.

Mito n. 2: Testare su alcuni dispositivi comuni è sufficiente

L'aspetto della tua applicazione varia a seconda del dispositivo, poiché hardware, dimensioni dello schermo e memoria differiscono. Esegui dei test su una varietà di dispositivi, versioni del sistema operativo, reti e posizioni geografiche.

Mito n. 3: I test esplorativi appena prima del lancio sono sufficienti

  • Nella maggior parte dei test, prima si progettano i casi di test e poi li si esegue; nei test esplorativi, invece, la progettazione e l'esecuzione avvengono simultaneamente.
  • Non c'è un piano né una preparazione, quindi il tester esegue i test che preferisce. Alcune funzioni vengono testate ripetutamente, mentre altre non vengono mai testate.

Mito n. 4: Se ci sono dei bug nell'applicazione, gli utenti capiranno

  • Se l'applicazione non funziona e presenta dei bug, gli utenti la disinstallano.
  • I problemi di qualità sono la prima ragione per cui vengono pubblicate recensioni negative Google Giocare in modo scorretto danneggia la tua reputazione e fa perdere la fiducia dei clienti.

Pertanto è essenziale avere un adeguato Android Strategia di test in atto.

migliori pratiche in Android Collaudo

  • Gli sviluppatori di applicazioni dovrebbero creare i casi di test nello stesso momento in cui scrivono il codice
  • Tutti i casi di test devono essere archiviati nel sistema di controllo versione, insieme al codice sorgente.
  • Utilizza l'integrazione continua ed esegui test ogni volta che il codice viene modificato
  • Evita di affidarti solo agli emulatori e ai dispositivi con root; conferma i risultati su hardware reale con un ispettore come uiautomatorviewer

DOMANDE FREQUENTI

No. I progetti moderni utilizzano AndroidTest X con JUnit 4 e AndroidJUnitCorridore. Il JUnit Le 3 classi di casi di test qui descritte sono state deprecate a partire dall'API 24 e rimangono disponibili solo per le suite legacy.

L'apprendimento automatico ripara i localizzatori dopo una modifica del layout, raggruppa i report di crash e ANR duplicati e prevede quali test una modifica interromperà in modo che venga eseguita una suite più breve per ogni commit.

Copilot scrive i pattern onView e check comuni a partire da uno scenario descritto. Non può conoscere gli identificatori della tua vista o le tempistiche, quindi esegui ogni suggerimento una volta e regola prima i matcher.

Espresso Esegue test all'interno della tua applicazione ed è veloce e stabile. UI Automator trascende i confini delle applicazioni, quindi è adatto a notifiche, impostazioni e finestre di dialogo di sistema. Molte suite utilizzano entrambi.

L'API ActivityScenario in AndroidTest X, solitamente con un ActivityScenarioRule. Consente di spostare un'attività attraverso stati del ciclo di vita definiti senza estendere una classe di casi di test obsoleta.

Inizia con un telefono di fascia bassa, uno di fascia media e uno di punta recente che copre due o tre Android versioni, più un tablet. Aggiungere le esecuzioni cloud dei dispositivi prima del rilascio invece di acquistare altro hardware.

Vengono eseguiti sulla JVM della macchina di compilazione con classi shadow anziché su un dispositivo reale, quindi non sono necessari packaging, installazione o avvio dell'emulatore. Questo li rende pratici ad ogni commit.

Googleset di librerie di test attuali. Include JUnit e estensioni Truth, ActivityScenario, Espresso e UI Automator dietro un gruppo di dipendenze che funziona su dispositivi, emulatori e Robolectric.

Riassumi questo post con: