Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Erste Schritte mit Instrumentierungstests

In diesem Handbuch wird beschrieben, wie Sie einen Instrumentierungstest mit Firebase Test Lab vorbereiten und ausführen. Um dieses Handbuch verwenden zu können, benötigen Sie einen Instrumentierungstest (von Ihnen oder Ihrem Team geschrieben), der die Android- Testframeworks Espresso oder UI Automator 2.0 verwendet. Instrumentierungstests können auf physischen Geräten bis zu 45 Minuten und auf virtuellen Geräten bis zu 60 Minuten dauern.

In den folgenden Schritten laden Sie das APK Ihrer App und das APK Ihres Tests in Firebase hoch. Weitere Informationen zum Erstellen eines Test-APKs finden Sie unter Testen Ihrer App . Optional können Sie auch die NotePad-Beispiel-App herunterladen.

Schritt 1. (Optional) Fügen Sie die Screenshot-Bibliothek zu Ihrer App hinzu

Test Lab bietet eine Screenshot-Bibliothek, mit der Sie Screenshots erstellen können, wenn Sie Instrumentierungstests in Ihrer App ausführen. Wenn Ihr Test abgeschlossen ist, können Sie die Screenshots in Android Studio oder in der Firebase-Konsole anzeigen.

Beachten Sie, dass die Möglichkeit zum Aufnehmen von Screenshots bereits in die Test-APK app-debug-test-unaligned.apk und die NotePad-Beispiel-App integriert ist. Screenshots werden auch automatisch erfasst, wenn Sie einen Robo-Test ausführen.

  1. Öffnen Sie in Android Studio die Projektansicht und klicken Sie mit der rechten Maustaste auf Ihren Projektnamen. Klicken Sie dann auf Neu > Verzeichnis .

  2. Geben Sie im Dialogfeld Neues Verzeichnis aars ein . Dadurch wird ein aars- Verzeichnis im Stammverzeichnis Ihres Testprojekts erstellt (als Peer-Verzeichnis zum App- Ordner).

  3. Kopieren Sie cloudtestingscreenshotter_lib.aar und fügen Sie es in den Ordner aars ein .

  4. build.gradle Datei build.gradle auf Stammebene (Projektebene) Ihrer App in jedem repositories Block einen Verweis auf den Ordner aars hinzu:

    repositories {
        jcenter()
        flatDir {
            dirs '../aars'
        }
    }
    ...
  5. In Ihrem Modul Top-Level - Verzeichnis (für das Notizbuch Beispiel app, das ist die App - Verzeichnis), die öffnen build.gradle Datei und eine Abhängigkeit cloudtestingscreenshotter_lib.aar auf der obersten Ebene hinzufügen dependencies Block:

    dependencies {
        // Cloud testing
        androidTestCompile (name:'cloudtestingscreenshotter_lib', ext:'aar')
        // Other dependencies go here
        }
    
  6. AndroidManifest.xml in Ihrer AndroidManifest.xml Datei die Systemberechtigungen für Ihre App an, indem Sie die folgenden Zeilen innerhalb des <manifest> -Tags hinzufügen. Wenn Sie auf Android 10 (API-Level 29) oder höher WRITE_EXTERNAL_STORAGE , lassen Sie die WRITE_EXTERNAL_STORAGE (Ihre App benötigt diese Berechtigung nicht, um Screenshots auf dem Gerät zu lesen und darauf 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>
    

Rufen Sie an jedem Punkt Ihres Tests, an dem Sie einen Screenshot ScreenShotter.takeScreenshot möchten, die Methode ScreenShotter.takeScreenshot aus der Bibliothek cloudtestingscreenshotter_lib auf, wobei das erste Argument ein Label ist, mit dem Sie den Screenshot identifizieren ( main_screen_2 wird im folgenden Beispiel verwendet):

Java

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);

Kotlin+KTX

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */)

Sehen Sie sich Ihre Screenshots an

Wenn Sie Android Studio zum Ausführen Ihres Tests verwenden, können Sie nach Abschluss des Tests alle Screenshots vergleichen, die während des Tests erstellt wurden, indem Sie ein Element in der Testergebnisstruktur auswählen und dann auf Screenshots anzeigen View klickenScreenshots ansehen Möglichkeit.

Screenshot comparison screen

Sie können Screenshots aus verschiedenen Konfigurationen wie folgt auswählen und vergleichen:

Aufgabe Aktion
Wechseln Sie zwischen Testausführungen. Verwenden Sie das Dropdown-Menü in der oberen linken Ecke.

Testfallmenü
Wechseln Sie zwischen Screenshots innerhalb einer Testausführung. Verwenden Sie die Pfeile in der oberen rechten Ecke.

Screenshot-Umschalter
Fügen Sie der aktuellen Ansicht zusätzliche Screenshot-Vergleichsfelder hinzu. Klicken Sie auf Vergleichen .

Vergleichen Sie
Wählen Sie eine andere Testdimension (Gerätetyp, Ausrichtung, Gebietsschema usw.). Wählen Sie in der Liste unten im Screenshot ein neues Dimensionselement aus.

Schritt 2. Optionale Testfunktionen aktivieren

Sie können die folgenden Funktionen in Ihrem Test aktivieren, bevor Sie ihn mit Test Lab ausführen:

Orchestrator aktivieren

Android Test Orchestrator ist ein Tool, das jeden Instrumentierungstest Ihrer App unabhängig ausführt. Test Lab verwendet immer die neueste Version von Orchestrator.

Um Orchestrator for Test Lab zu aktivieren , klicken Sie im Setup des Instrumentierungstests auf Zusätzliche Optionen > Mit Orchestrator ausführen .

Vorteile und Nachteile

  • Vorteil: Kein gemeinsamer Status. Jeder Test wird in einer eigenen Instrumentierungsinstanz ausgeführt, sodass sich kein gemeinsamer Status über die Tests hinweg ansammelt.
  • Vorteil: Vereinzelte Abstürze. Wenn ein Test abstürzt, wird nur diese Instrumentierung beendet und andere Tests in Ihrer Suite können weiterhin ausgeführt werden.
  • Nachteil: Längere Laufzeiten . Jeder Test führt seine eigene Instrumentierungsinstanz aus, sodass der Testprozess insgesamt etwas länger dauert. Wenn diese Option nicht aktiviert ist, können sich die erhöhten Laufzeiten möglicherweise auf Ihre Kontingentnutzung oder die abgerechnete Zeit auswirken und dazu führen, dass Sie die Zeitlimits Ihrer Geräte erreichen .

Sharding aktivieren

Test-Sharding unterteilt eine Reihe von Tests in Untergruppen (Shards), die getrennt voneinander ausgeführt werden. Test Lab führt jeden Shard automatisch parallel auf mehreren Geräten aus und schließt den gesamten Testsatz in kürzerer Zeit ab.

So funktioniert Test-Sharding

Angenommen, Sie erstellen N Shards. Für jedes ausgewählte Gerät erstellt Test Lab N identische Geräte und führt eine Teilmenge der Tests auf jedem Gerät aus. Dies bedeutet, dass fragmentierte Testfälle zu mehreren Testausführungen pro Gerät führen können, im Gegensatz zu nicht fragmentierten Testfällen, die immer zu einer Testausführung pro Gerät führen (eine kurze Übersicht über die Schlüsselkonzepte in Test Lab finden Sie unter Schlüsselkonzepte ).

Sie können das Test-Sharding in der Firebase-Konsole aktivieren:

  1. Klicken Sie im Setup des Instrumentierungstests auf Zusätzliche Optionen .

  2. Geben Sie im Abschnitt Sharding die Anzahl der Shards ein, die Sie ausführen möchten.

Abrechnung für Test-Shards

Test Lab implementiert Ihre Shards, indem es den integrierten Sharding-Mechanismus von AndroidJUnitRunner nutzt. Um zu vermeiden, dass Ihnen das Hochfahren leerer Shards (Shards ohne zugewiesene Testfälle) in Rechnung gestellt wird, sollte die Anzahl der von Ihnen erstellten Shards geringer sein als die Gesamtzahl der Testfälle. Je nachdem, wie lange die Ausführung jedes Testfalls dauert, ist es in der Regel eine gute Idee, 2-10 Testfälle pro Shard zuzuweisen.

Weitere Informationen zur Abrechnung finden Sie unter Nutzung, Kontingente und Abrechnung .