Questa guida descrive come preparare ed eseguire un test della strumentazione utilizzando Firebase Test Lab. Per utilizzare questa guida, avrai bisogno di un test della strumentazione (scritto da te o dal tuo team) che utilizzi i framework di test Android Espresso o UI Automator . I test di strumentazione possono essere eseguiti fino a 45 minuti su dispositivi fisici e fino a 60 minuti su dispositivi virtuali .
Nei passaggi successivi, caricherai l'APK della tua app e l'APK del test su Firebase.
(Facoltativo) Aggiungi la libreria di screenshot alla tua app
Firebase Test Lab include una libreria (testlab-instr-lib) che puoi usare per elaborare qualsiasi screenshot che acquisisci con ScreenCapture di AndroidX durante l'esecuzione di test di strumentazione, come i test scritti utilizzando il framework di test Espresso . Questa sezione descrive come creare oggetti ScreenCapture
con la libreria AndroidX e come elaborarli utilizzando testlab-instr-lib.
Dopo aver eseguito il test della strumentazione, puoi visualizzare gli screenshot acquisiti nella console Firebase.
Prova un'app di esempio
Scarica l' app di esempio Blocco note per provare questa funzionalità. La possibilità di acquisire schermate è già incorporata nel progetto NotePad.
Passaggio 1. Aggiungi la libreria di screenshot al tuo progetto
Nel file Gradle (
build.gradle
) del tuo progetto di test, aggiungi il repository Maven di Google a ogni sezione dei repository:buildscript { repositories { // Add the following line: google() // Google's Maven repository } dependencies { // ... // Check that you have the following line (if not, add it): classpath 'com.google.gms:google-services:4.3.8' // Google Services plugin } } allprojects { // ... repositories { // Add the following line: google() // Google's Maven repository // ... } }
Nel file Gradle del tuo modulo (a livello di app) (di solito
app/build.gradle
), aggiungi una dipendenza per la libreria di screenshot di Test Lab.dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation 'com.google.firebase:testlab-instr-lib:0.2' // ... }
Nel file
AndroidManifest.xml
del test, registraFirebaseScreenCaptureProcessor
in un tag di metadati all'interno dell'elemento<instrumentation>
. È inoltre possibile specificare il processore come argomento in AndroidJUnitRunner (consultare la documentazione di riferimento di AndroidJUnitRunner per istruzioni su come).<instrumentation // Check that you have the following line (if not, add it): android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner android:targetPackage="com.your.package.name"> // Add the following: <meta-data android:name="screenCaptureProcessors" android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" /> </instrumentation> ...
Nel file
AndroidManifest.xml
della tua app, aggiungi le seguenti righe all'interno dell'elemento<manifest>
:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Nel file
AndroidManifest.xml
, specifica le autorizzazioni di sistema per la tua app aggiungendo le seguenti righe all'interno del tag<manifest>
. Se stai testando su Android 10 (livello API 29) o versioni successive , ometti l'autorizzazioneWRITE_EXTERNAL_STORAGE
(la tua app non richiede questa autorizzazione per leggere e scrivere screenshot sul dispositivo).<manifest ... > <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
Passaggio 2. Cattura schermate durante il test
In qualsiasi momento del test in cui desideri acquisire uno screenshot, chiama il metodo Screenshot.capture()
dalla libreria AndroidX. Questo produce un oggetto ScreenCapture
. Quando chiami process()
sull'oggetto ScreenCapture
, viene elaborato usando ScreenCaptureProcessor registrato nel tuo AndroidManifest.xml
. Si noti che BasicScreenCaptureProcessor
viene utilizzato se non sono registrati processori. Poiché hai registrato FirebaseScreenCaptureProcessor
, i tuoi screenshot verranno elaborati tramite FirebaseScreenCaptureProcessor
e saranno disponibili per te con i risultati quando esegui il test con Firebase Test Lab.
Esempi di casi d'uso per la creazione di uno ScreenCapture
:
Fai uno ScreenCapture completo su un'API Build.VERSION_CODES.JELLY_BEAN_MR2 e versioni successive:
Screenshot.capture()
Acquisisci uno
ScreenCapture
dell'attività a qualsiasi livello API. Tieni presente che questa è l'unica opzione per i dispositivi inferiori a Build.VERSION_CODES.JELLY_BEAN_MR2.@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
Esempi di casi d'uso per l'elaborazione di uno ScreenCapture
Elabora uno
ScreenCapture
tramiteFirebaseScreenCaptureProcessor
:Screenshot.capture().process();
Elabora uno
ScreenCapture
tramite unoScreenCaptureProcessor
specificato (questo ti consente di saltare la registrazione del processore):Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
Impostare il nome e il formato dello
ScreenCapture
ed elaborarlo utilizzando il processore registrato:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
Passaggio 3. Crea ed esegui il test
Crea la tua app e testa gli APK (consulta Testare la tua app per istruzioni).
Carica i file APK nella dashboard di Test Lab della console Firebase.
Infine, esegui il test.
Passaggio 4. Visualizza gli screenshot del test
Al termine del test, puoi visualizzare tutti gli screenshot presi nella console Firebase.
Nella scheda Test , seleziona il test completato, quindi fai clic sulla scheda Risultati .
Seleziona di nuovo il test, quindi fai clic sulla scheda Screenshot che appare.
(Facoltativo) Abilita funzionalità di test aggiuntive
È possibile abilitare le seguenti funzionalità nel test prima di eseguirlo con Test Lab:
Abilita orchestratore
Android Test Orchestrator è uno strumento che esegue indipendentemente i test della strumentazione della tua app. Test Lab utilizza sempre l'ultima versione di Orchestrator.
Per abilitare Orchestrator for Test Lab, nella configurazione del test della strumentazione, fare clic su Opzioni aggiuntive > Esegui con Orchestrator .
Vantaggi e svantaggi
- Vantaggio: nessuno stato condiviso. Ogni test viene eseguito nella propria istanza di strumentazione in modo che uno stato condiviso non si accumuli tra i test.
- Vantaggio: arresti anomali isolati. Se un test si arresta in modo anomalo, solo quella strumentazione viene terminata e gli altri test nella tua suite possono ancora essere eseguiti.
- Svantaggio: tempi di esecuzione più lunghi . Ogni test esegue la propria istanza di strumentazione, il che significa che il processo di test richiede complessivamente un po' più di tempo. Se non è selezionato, i tempi di esecuzione aumentati potrebbero potenzialmente influire sull'utilizzo della quota o sul tempo fatturato e potrebbero farti raggiungere i limiti di timeout dei tuoi dispositivi .
Abilita partizionamento orizzontale
Il partizionamento orizzontale dei test suddivide una serie di test in sottogruppi (shard) che vengono eseguiti separatamente in isolamento. Test Lab esegue automaticamente ogni shard in parallelo utilizzando più dispositivi e completa l'intero set di test in meno tempo.
Come funziona il partizionamento orizzontale del test
Supponiamo di creare N shard. Per ogni dispositivo selezionato, Test Lab avvia N dispositivi identici ed esegue un sottoinsieme dei test su ciascun dispositivo. Ciò significa che i casi di test partizionati possono comportare più esecuzioni di test per dispositivo, a differenza dei casi di test non partizionati, che comportano sempre un'esecuzione di test per dispositivo (per una rapida panoramica dei concetti chiave in Test Lab, vedere Concetti chiave ).
Puoi abilitare lo sharding di prova nella console Firebase:
Nella configurazione del test della strumentazione, fare clic su Opzioni aggiuntive .
Nella sezione Sharding , inserisci il numero di shard che desideri eseguire.
Fatturazione per gli shard di prova
Test Lab implementa i tuoi shard sfruttando il meccanismo di sharding integrato di AndroidJUnitRunner. Per evitare l'addebito per la rotazione di shard vuoti (shard senza test case assegnati), il numero di shard creati deve essere inferiore al numero totale di test case. A seconda del tempo necessario per l'esecuzione di ogni test case, in genere è una buona idea assegnare da 2 a 10 test case per shard.
Per ulteriori informazioni sulla fatturazione, leggi Utilizzo, quote e fatturazione .