In diesem Leitfaden wird beschrieben, wie Sie einen Instrumentierungstest mit Firebase Test Lab Zur Verwendung dieses Leitfadens benötigen Sie einen Instrumentierungstest die von Ihnen oder Ihrem Team verfasst wurden, Espresso oder UI Automator Android-Test-Frameworks Instrumentierungstests können auf physischen Geräten bis zu 45 Minuten und auf virtuellen Geräten bis zu 60 Minuten dauern.
Später laden Sie dann das APK Ihrer App hoch und das APK Ihres Tests in Firebase hochladen.
Optional: Screenshot-Bibliothek zu Ihrer App hinzufügen
Firebase Test Lab enthält eine Bibliothek (testlab-instr-lib), mit der Sie Screenshots verarbeiten können, die Sie mit ScreenCapture von AndroidX aufnehmen, wenn Sie Instrumentierungstests ausführen, z. B. Tests, die mit dem Espresso-Testframework geschrieben wurden.
In diesem Abschnitt wird beschrieben, wie ScreenCapture
-Objekte mit AndroidX erstellt werden.
und wie sie mit testlab-instr-lib verarbeitet werden.
Nachdem der Instrumentierungstest ausgeführt wurde, können Sie sich die Screenshots ansehen in der Firebase-Konsole.
Beispiel-App ausprobieren
Laden Sie die NotePad-Beispiel-App herunter. um diese Funktion auszuprobieren. Die Möglichkeit, Screenshots aufzunehmen, ist bereits in das Notepad-Projekt eingebunden.
Schritt 1: Screenshotbibliothek zum Projekt hinzufügen
In der Gradle-Datei Ihres Testprojekts unter Einstellungen auf Stammebene (
settings.gradle.kts
odersettings.gradle
) Maven-Repository von Google hinzufügen für jedenrepositories
-Abschnitt:pluginManagement { repositories { // Add the following line: google() // Google's Maven repository mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { // Add the following line: google() // Google's Maven repository mavenCentral() } } // ...
In der Gradle-Datei des Moduls (auf App-Ebene) (in der Regel
<project>/<app-module>/build.gradle.kts
oder<project>/<app-module>/build.gradle
), fügen Sie eine Abhängigkeit für die Screenshot-Mediathek von Test Lab.dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2") // ...
Registrieren Sie in der
AndroidManifest.xml
-Datei Ihres Tests denFirebaseScreenCaptureProcessor
in einem Metadaten-Tag innerhalb der<instrumentation>
-Element. Sie können den Prozessor auch als -Argument in AndroidJUnitRunner (siehe die Referenzdokumentation zu AndroidJUnitRunner .<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> ...
Fügen Sie in der Datei
AndroidManifest.xml
Ihrer App die folgenden Zeilen im<manifest>
-Element:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Gib in der Datei
AndroidManifest.xml
die Systemberechtigungen für deine App an indem Sie die folgenden Zeilen in das<manifest>
-Tag einfügen. Wenn Sie einen Test Android 10 (API-Level 29) oder höher verwenden, lassen SieWRITE_EXTERNAL_STORAGE
weg. (Deine App benötigt diese Berechtigung nicht, um Daten Screenshots auf dem Gerät zu schreiben).<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>
Schritt 2: Screenshots während des Tests erstellen
Wenn Sie einen Screenshot erstellen möchten, rufen Sie während des Tests die Methode
Screenshot.capture()
aus der AndroidX-Bibliothek. Dies erzeugt eine
ScreenCapture
-Objekt.
Wenn Sie process()
für das ScreenCapture
-Objekt aufrufen, wird es verarbeitet.
mithilfe des ScreenCaptureProcessor
das in Ihrem AndroidManifest.xml
registriert ist. Hinweis: BasicScreenCaptureProcessor
wird verwendet, wenn keine Zahlungsabwickler registriert sind.
Da du FirebaseScreenCaptureProcessor
registriert hast, werden deine Screenshots
werden über FirebaseScreenCaptureProcessor
verarbeitet und sind
mit den Ergebnissen, wenn Sie den Test mit Firebase Test Lab durchführen.
Beispielanwendungsfälle zum Erstellen eines ScreenCapture
:
Machen Sie eine vollständige Bildschirmaufnahme mit einem API Build.VERSION_CODES.JELLY_BEAN_MR2 und oben:
Screenshot.capture()
Führe ein
ScreenCapture
der Aktivität auf einer beliebigen API-Ebene durch. Beachten Sie, dass dies Option nur für Geräte unter Build.VERSION_CODES.JELLY_BEAN_MR2.@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
Beispielanwendungsfälle für die Verarbeitung einer Bildschirmaufnahme
Verarbeite einen
ScreenCapture
überFirebaseScreenCaptureProcessor
:Screenshot.capture().process();
ScreenCapture
über eine angegebeneScreenCaptureProcessor
verarbeiten Dadurch können Sie die Registrierung des Prozessors überspringen:Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
Legen Sie den Namen und das Format von
ScreenCapture
fest und verarbeiten Sie ihn mit dem registrierter Auftragsverarbeiter:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
Schritt 3: Test erstellen und ausführen
Erstellen Sie Ihre App und testen Sie APKs (siehe App testen .
Lade die APK-Dateien in das Test Lab-Dashboard hoch. der Firebase-Konsole.
Führen Sie zum Schluss den Test durch.
Schritt 4: Test-Screenshots ansehen
Nach Abschluss des Tests können Sie sich alle Screenshots ansehen, die Sie in der Firebase-Konsole aufgenommen haben.
Wählen Sie auf dem Tab Tests Ihren abgeschlossenen Test aus. Klicken Sie dann auf den Tab Ergebnisse.
Wählen Sie den Test noch einmal aus und klicken Sie dann auf den Tab Screenshots.
(Optional) Zusätzliche Testfunktionen aktivieren
Sie können die folgenden Funktionen in Ihrem Test aktivieren, bevor Sie ihn mit Test Lab:
Orchestrator aktivieren
Android Test Orchestrator ist ein Tool, das jeden der Instrumentierungstests Ihrer App unabhängig ausführt. Test Lab verwendet immer die neueste Version von Orchestrator.
Zum Aktivieren von Orchestrator für Test Lab im Instrumentierungstest einrichten Klicken Sie auf Zusätzliche Optionen > Mit Orchestrator ausführen
Wenn Sie Orchestrator verwenden, profitieren Sie von folgenden Vorteilen:
- Kein gemeinsamer Status. Jeder Test wird in einer eigenen Instrumentierungsinstanz ausgeführt, sodass sich kein gemeinsamer Status über die Tests hinweg ansammelt.
- Isolierte Abstürze: Wenn ein Test abstürzt, die Instrumentierung beendet wird und andere Tests in Ihrer Suite noch ausgeführt werden können.
Wenn Sie Orchestrator verwenden, wird jeder Test für sich ausgeführt Instrumentierungsinstanz, was bedeutet, dass der Anwendungsprozess nach dem Testlauf durchgeführt. Die sich daraus ergebende längere Laufzeit kann sich die Kontingentnutzung oder die abgerechnete Zeit dazu führen, dass Sie die Zeitlimits. Wenn Sie die Startzeit Ihrer App verkürzen, wird dieser Overhead verkürzt.
Wenn Sie zusätzliche Optionen für Orchestrator festlegen möchten, geben Sie diese mithilfe von an:
Feld environmentVariables
. Wenn Sie z. B. clearPackageData
verwenden möchten, verwenden Sie Folgendes:
Option in gcloud:
--environment-variables clearPackageData=true
Fragmentierung aktivieren
Bei der Testfragmentierung wird ein Satz von Tests in Untergruppen (Shards) unterteilt, die ausgeführt werden isoliert voneinander isoliert betrachtet werden. Test Lab führt jeden Shard automatisch parallel aus mit mehreren Geräten und führt den gesamten Testsatz in kürzerer Zeit durch.
Wenn Sie beispielsweise N Shards erstellen, startet Test Lab für jedes ausgewählte Gerät N identische Geräte und führt auf jedem Gerät einen Teil der Tests aus. Das bedeutet, dass fragmentierte Testläufe zu mehreren Testausführungen pro Gerät führen können. Nicht fragmentierte Testfälle führen jedoch zu einer Testausführung pro . Konzepte zu Test Lab finden Sie unter Schlüsselkonzepte:
So aktivieren Sie die Testfragmentierung in der Firebase-Konsole:
In der Einrichtung des Instrumentierungstests Klicken Sie auf Weitere Optionen.
Geben Sie im Abschnitt Fragmentierung die Anzahl der Shards ein, die Sie ausführen möchten.
Abrechnung für Test-Shards
Test Lab implementiert Ihre Shards mithilfe der integrierten API von AndroidJUnitRunner Fragmentierungsmechanismus. Um zu vermeiden, dass Ihnen das Hochfahren leerer Shards (Shards ohne zugewiesene Shards) in Rechnung gestellt wird Testläufe), die Anzahl der Shards, „create“ sollte kleiner sein als die Gesamtzahl der Testläufe. Je nachdem, wie jeden Testlauf dauert, sollten Sie 2 bis 10 Tests zuweisen, Fälle pro Shard.
Weitere Informationen zur Abrechnung finden Sie unter Nutzung, Kontingente und Abrechnung.