Fehlerbehebung in Test Lab & Häufig gestellte Fragen
Auf dieser Seite finden Sie Hilfe bei der Fehlerbehebung und Antworten auf häufig gestellte Fragen zum Ausführen von Tests mit Firebase Test Lab. Bekannte Probleme werden ebenfalls dokumentiert. Wenn Sie nicht finden, wonach Sie suchen, oder zusätzliche Hilfe benötigen, treten Sie dem #test-lab-Kanal auf Firebase Slack bei oder wenden Sie sich an den Firebase-Support.
Fehlerbehebung
Warum dauert es so lange, bis mein Test ausgeführt wird?
Wenn Sie ein Gerät mit hoher Kapazität im Test Lab-Katalog auswählen, können Tests schneller gestartet werden. Wenn ein Gerät eine geringe Kapazität hat, kann es länger dauern, bis Tests ausgeführt werden. Wenn die Anzahl der aufgerufenen Tests viel größer ist als die Kapazität der ausgewählten Geräte, kann es länger dauern, bis die Tests abgeschlossen sind.
Tests, die auf Geräten mit einer beliebigen Kapazitätsstufe ausgeführt werden, können aus folgenden Gründen länger dauern:
Traffic, der sich auf die Geräteverfügbarkeit und die Testgeschwindigkeit auswirkt.
Geräte- oder Infrastrukturfehler, die jederzeit auftreten können. Ob es eine gemeldete Infrastruktur für Test Lab gibt, können Sie im Firebase-Status-Dashboard nachsehen.
Weitere Informationen zur Gerätekapazität in Test Lab finden Sie unter Gerätekapazität für Android und iOS.
Warum erhalte ich nicht schlüssige Testergebnisse?
Nicht eindeutige Testergebnisse sind in der Regel auf abgebrochene Testläufe oder Infrastrukturfehler zurückzuführen.
Infrastrukturfehler werden durch interne Test Lab-Probleme verursacht, z. B. Netzwerkfehler oder unerwartetes Geräteverhalten. Test Lab beendet intern Testläufe, die mehrmals Infrastrukturfehler verursachen, bevor ein nicht eindeutiges Ergebnis gemeldet wird. Sie können diese Wiederholungsversuche jedoch mit failFast deaktivieren.
Wiederholen Sie den Test in Test Lab, um zu prüfen, ob er reproduzierbar ist.
Führen Sie den Test gegebenenfalls auf einem anderen Gerät oder Gerätetyp aus.
Sollte das Problem weiterhin auftreten, wenden Sie sich an das Test Lab-Team im #test-lab-Kanal auf Firebase Slack.
Warum dauern meine Tests durch Sharding länger?
Die Fragmentierung kann dazu führen, dass Ihre Tests länger dauern, wenn die von Ihnen angegebene Anzahl von Shards die Anzahl der Geräte übersteigt, die in Test Lab verfügbar sind. Um dies zu vermeiden, kannst du versuchen, auf ein anderes Gerät zu wechseln. Weitere Informationen zur Auswahl eines anderen Geräts finden Sie unter
Gerätekapazität.
Warum dauert es so lange, bis mein Test beginnt?
Wenn Sie eine Testanfrage senden, wird Ihre App zuerst validiert, neu signiert usw., um sie für Tests auf einem Gerät vorzubereiten. Normalerweise dauert dieser Vorgang nur wenige Sekunden, kann aber durch Faktoren wie die Größe Ihrer App beeinflusst werden.
Nachdem Ihre App vorbereitet wurde, werden Testläufe geplant und in eine Warteschlange gestellt, bis ein Gerät für die Ausführung bereit ist. Bis alle Testläufe abgeschlossen sind, lautet der Status der Matrix „Ausstehend“ (unabhängig davon, ob sich Testläufe in der Warteschlange befinden oder aktiv ausgeführt werden).
Warum dauert es so lange, bis mein Test abgeschlossen ist?
Nach Abschluss der Testausführung werden Testartefakte vom Gerät heruntergeladen, verarbeitet und in Cloud Storage hochgeladen. Die Dauer dieses Schritts kann von der Anzahl und Größe der Artefakte abhängen.
App gibt keine Daten zurück und Screenshots sind nicht zu finden
Artefakte der Testausführung (z. B. Screenshots und Logdateien) werden in Google Cloud Storage gespeichert und direkt in der Firebase-Konsole gerendert. Wenn Ihr Testlauf in den letzten 90 Tagen durchgeführt wurde, prüfen Sie, ob Sie Rollen auf Projektebene zugewiesen haben (Projektinhaber, Projektbearbeiter oder Projektbetrachter).
Achten Sie außerdem darauf, dass Cloud-Audit-Logging für Ihr Projekt oder Ihre Organisation nicht aktiviert ist.
Wenn die Ausführung vor mehr als 90 Tagen erfolgt ist, wurden die Testartefakte höchstwahrscheinlich automatisch gelöscht. Sie können die Konfiguration des Ergebnis-Buckets prüfen, indem Sie im Test Lab-Dashboard auf den Tab Testergebnisse klicken. Der Standard-Ergebnis-Bucket ist so konfiguriert, dass Objekte 90 Tage lang aufbewahrt werden.
Wenn Sie Ihre Testartefakte länger behalten möchten, führen Sie den Befehl gcloud firebase test android run mit dem Flag --results-bucket aus und geben Sie den Namen des Ergebnis-Buckets an. Weitere Informationen finden Sie in der Referenzdokumentation zu gcloud firebase test android run.
Warum erhalte ich nur teilweise oder gar keine Ergebnisse für Instrumentationstestläufe?
Wenn Sie Instrumentierungstests ausführen, werden möglicherweise Testfehler angezeigt, die auf Teilergebnisse hinweisen, z. B. Test run failed to complete. Expected
x tests, received y (wobei y kleiner als x ist). Dieser Fehler bedeutet, dass Test Lab das Logcat nicht nach Markierungen für den Beginn oder das Ende von Testläufen parsen konnte, die normalerweise von AndroidJUnitRunner generiert werden.
Das sind häufige Ursachen für dieses Problem:
Problembeschreibung
Mögliche Lösung
Der Testlauf wurde aufgrund einer Zeitüberschreitung nicht ausgeführt. Wenn die Gesamtdauer der Tests länger als ein von Ihnen angegebenes Zeitlimit oder länger als ein maximales Zeitlimit ist, werden die restlichen Testläufe von Test Lab abgebrochen.
Erhöhen Sie das Zeitlimit für die Matrix, damit alle Tests abgeschlossen werden können.
Teilen Sie die Tests in Shards auf, falls Sie das noch nicht getan haben. So wird in jedem Shard nur eine Teilmenge der Tests ausgeführt und die Ausführung dauert weniger lange.
Wenn Sie die Fragmentierung bereits aktiviert haben, erhöhen Sie die Anzahl der Shards.
Der Testlauf konnte nicht abgeschlossen werden, da er vorzeitig beendet wurde oder hängen geblieben ist.
Der Testlauf kann aufgrund einer nicht abgefangenen Ausnahme oder eines Zusicherungsfehlers vorzeitig beendet werden. Testläufe können in einer Endlosschleife hängen bleiben oder nicht fortgesetzt werden, z. B. wenn in der App nicht die richtige Ansicht angezeigt wird und der Testlauf die Aktion auf der Benutzeroberfläche nicht ausführen kann.
Sehen Sie sich das Video und die logcat an, um herauszufinden, wo der Test beendet wurde.
Ein benutzerdefinierter Test-Runner (einschließlich der Erweiterung von AndroidJUnitRunner) ist unerwartet abgestürzt oder hat unerwartete Markierungen für den Start oder das Ende von Testläufen in logcat geschrieben.
Überprüfen Sie den Code des Test-Runners.
Es wurden zu viele Logs in logcat geschrieben, was zu einer Überlastung des Puffers oder einem Absturz des logcat-Prozesses führte.
Schreibvorgänge auf logcat reduzieren.
Die getestete App ist abgestürzt.
Debuggen Sie Ihre App.
Häufig gestellte Fragen
Welche kostenlosen Kontingente gibt es für Test Lab? Was soll ich tun, wenn meine Lizenzen aufgebraucht sind?
Firebase Test Lab bietet kostenlose Kontingente für Tests auf Geräten und für die Verwendung von Cloud-APIs. Das Testkontingent unterliegt dem Standard-Firebase-Abo, die Cloud API-Kontingente jedoch nicht.
Testkontingent
Testkontingente werden durch die Anzahl der Geräte bestimmt, die zum Ausführen von Tests verwendet werden.
Der Firebase Spark-Tarif umfasst ein festes Testkontingent, das für Nutzer kostenlos ist. Bei einer intensiveren Nutzung von Google Cloud können Ihre Kontingente entsprechend erhöht werden. Wenn Sie Ihr Testkontingent erreicht haben, warten Sie bis zum nächsten Tag oder führen Sie ein Upgrade auf den Blaze-Tarif durch, wenn Sie derzeit den Spark-Tarif nutzen.
Wenn Sie bereits das Blaze-Abo nutzen, können Sie eine Kontingenterhöhung anfordern.
Weitere Informationen finden Sie unter Testkontingent.
Für die Cloud Testing API gelten zwei Kontingentlimits: Anfragen pro Tag und Projekt sowie Anfragen pro 100 Sekunden und Projekt. Sie können Ihre Nutzung in der Google Cloud-Konsole überwachen.
Kontingente für die Cloud Tool Results API
Für die Cloud Tool Results API gelten zwei Kontingentlimits: Abfragen pro Tag und Projekt sowie Abfragen pro 100 Sekunden und Projekt. Sie können Ihre Nutzung in der Google Cloud-Konsole überwachen.
Sie können eine Anfrage für höhere Kontingente senden, indem Sie Ihre Kontingente direkt in der Google Cloud-Konsole bearbeiten. Die meisten Limits sind standardmäßig auf das Maximum festgelegt.
Wenn Sie ein höheres API-Kontingent anfordern möchten, füllen Sie ein Antragsformular in der Google Cloud Console aus oder wenden Sie sich an den Firebase-Support.
Woher weiß ich, ob der Traffic, der mein Backend erreicht, von Test Lab stammt?
In Ihrem Backend können Sie anhand der Quell-IP-Adresse und unserer IP-Bereiche feststellen, ob der Traffic von Firebase-gehosteten Testgeräten stammt.
Funktioniert Test Lab mit VPC-SC?
Test Lab funktioniert nicht mit VPC-SC, wodurch das Kopieren von Apps und anderen Testartefakten zwischen dem internen Speicher von Test Lab und den Ergebnis-Buckets der Nutzer blockiert wird.
Wie erkenne ich instabile Tests in Test Lab?
Um instabiles Verhalten in Ihren Tests zu erkennen, empfehlen wir die Verwendung der Option
--num-flaky-test-attempts
. Deflake-Wiederholungen werden genauso abgerechnet oder auf Ihr tägliches Kontingent angerechnet wie normale Testausführungen.
Beachten Sie Folgendes:
Die gesamte Testausführung wird wiederholt, wenn ein Fehler erkannt wird. Es gibt keine Unterstützung für das Wiederholen nur fehlgeschlagener Testläufe.
Wiederholungsdurchläufe werden für die gleichzeitige Ausführung geplant, aber es wird nicht garantiert, dass sie parallel ausgeführt werden. Das kann z. B. passieren, wenn der Traffic die Anzahl der verfügbaren Geräte übersteigt.
Unterstützt Test Lab Wearables?
Sehr gut. Test Lab unterstützt die Google Pixel Watch. Sie können jetzt Tests für Ihre eigenständige Wear-App auf Google Pixel Watches ausführen. Weitere Informationen zu Test Lab-Geräten
Unterstützt Test Lab die neuesten Google-Geräte?
Sehr gut. Test Lab unterstützt das Google Pixel Tablet und das Google Pixel Fold. Sie können Ihre Tests auf Ihren eigenständigen physischen Geräten ausführen.
Weitere Informationen zu Test Lab-Geräten
Wie erkenne ich einen laufenden Test in Test Lab?
Wenn Sie Ihre App in Firebase testen oder Tests für einen Pre-Launch-Bericht in der Play Console ausführen, können Sie erkennen, ob ein Test auf einem von Firebase gehosteten Gerät ausgeführt wird. Suchen Sie dazu in Ihrer MainActivity-Datei nach der Systemeigenschaft firebase.test.lab. Anschließend können Sie basierend auf dem booleschen Wert für testLabSetting zusätzliche Anweisungen ausführen. Weitere Informationen finden Sie unter Geänderte Testverhalten.
Unterstützt Test Lab Appium, Flutter/FlutterDriver, ReactNative/Jest oder Cucumber?
Einige dieser Elemente sind zwar auf unserer Roadmap, aber wir können derzeit keine Zusicherung für die Unterstützung dieser Test- und App-Entwicklungsplattformen geben. Wenn Sie Ihre App jedoch mit einem Framework erstellt haben, das Espresso unterstützt (z. B. Flutter), können Sie einen Instrumentierungstest mit Espresso schreiben und den Test dann in Test Lab ausführen.
Unterstützt Test Lab das Testen von verschleierten Apps, z. B. mit ProGuard oder R8?
Test Lab unterstützt keine explizite Verschleierung oder Entschleierung. Die App wird wahrscheinlich ausgeführt, aber alle verschleierten App-Daten, z. B. Stacktraces, werden in den Logs verschleiert angezeigt.
Kann ich mein faltbares Gerät in verschiedenen faltbaren Zuständen und Positionen verwenden, wenn ich auf Test Lab teste?
Faltbare Geräte können sich in verschiedenen Faltzuständen befinden, z. B. FLAT (vollständig geöffnet) oder HALF_OPENED (zwischen vollständig geöffnet und vollständig geschlossen).
Posen bestehen dagegen aus einer bestimmten Geräteausrichtung und einem bestimmten Zustand des faltbaren Geräts. Beispiele sind die Aufstellung auf dem Tisch, die einen HALF_OPENED-Zustand in horizontaler Ausrichtung darstellt, oder die Buchaufstellung, die einen HALF_OPENED-Zustand in vertikaler Ausrichtung darstellt.
Kann ich Test Lab ausprobieren, wenn ich keine App habe?
Im Gegensatz zu anderen Firebase-Produkten müssen Sie kein Firebase SDK hinzufügen, um Test Lab zu verwenden. Wenn Sie noch keine App haben, können Sie ein APK online herunterladen oder eine App und ein Test-APK aus einem der Beispiele im AndroidX-GitHub-Repository erstellen.
Für einen Robo-Test benötigen Sie nur die APK-Datei Ihrer App. Für einen Instrumentierungstest sind sowohl eine App als auch ein Test-APK erforderlich, die aus dem Quellcode erstellt werden. Weitere Informationen finden Sie unter Instrumentierte Tests.
Welche Geräte eignen sich am besten für Screenshot-Diff-Tests?
Beim Screenshot-Diff-Test basieren Testassertions auf dem Vergleich von Screenshots, die während der Ausführung eines Tests aufgenommen wurden, mit Referenzbildern, die das erwartete Verhalten darstellen. Solche Tests sind auf einigen Gerätetypen möglicherweise anfälliger als auf anderen. Wir empfehlen, für diese Art von Tests Arm-Emulatoren (*.arm) zu verwenden. Für Arm-Emulatorgeräte werden Images verwendet, die den generischen Emulatoren von Android Studio sehr ähnlich oder identisch sind.
Außerdem empfehlen wir, Testbibliotheken zu verwenden, mit denen Screenshot-Tests auch bei erwarteten Änderungen robuster werden.
Werden virtuelle Geräte von Test Lab aktualisiert?
Sehr gut. Virtuelle Geräte werden aktualisiert, wenn die folgenden Änderungen vorgenommen werden:
Aktualisierungen vorhandener Bilder
Einstellung früherer API-Levels
Neue Android-API-Levels werden hinzugefügt
Wie aktiviere ich Abdeckungsberichte?
Wenn Sie Coverage-Berichte aktivieren möchten, fügen Sie coverage=true dem environmentVariables-Feld hinzu.
Wenn Sie Android Test Orchestrator verwenden, müssen Sie ein Verzeichnis angeben, in dem die Ergebnisse der Codeabdeckung gespeichert werden:
Wo finde ich Gerätedetails wie Auflösung und unterstützte ABIs?
Detaillierte Geräteinformationen sind über die API verfügbar und können über den gcloud-Client mit dem Befehl „describe“ aufgerufen werden:
gcloud firebase test android models describe MODEL
Bekannte Probleme
Anmelde-Captchas
Beim Robo-Test können Anmeldebildschirme nicht umgangen werden, die über die Eingabe von Anmeldedaten hinaus zusätzliche Nutzeraktionen erfordern, z. B. das Ausfüllen eines CAPTCHA.
Unterstützung für UI-Frameworks
Robo-Tests funktionieren am besten mit Apps, die UI-Elemente aus dem Android-UI-Framework verwenden, einschließlich View-, ViewGroup- und WebView-Objekten. Wenn Sie Robo-Tests für Apps verwenden, die andere UI-Frameworks nutzen, einschließlich Apps, die die Unity-Game-Engine verwenden, wird der Test möglicherweise beendet, ohne dass mehr als der erste Bildschirm untersucht wird.