Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Integration der Android-Instrumentierung in die Gerätefarm
Anmerkung
Verwenden Sie die folgenden Anweisungen, um Android-Instrumentierungstests in AWS Device Farm zu integrieren. Weitere Informationen zur Verwendung von Instrumentierungstests in Device Farm finden Sie unterInstrumentierung für Android und AWS Device Farm.
Führen Sie Android-Instrumentierungstests aus (Konsole)
Verwenden Sie die Device Farm-Konsole, um Ihre Tests hochzuladen.
-
Melden Sie sich bei der Device Farm-Konsole unter an https://console.aws.amazon.com/devicefarm
. -
Wählen Sie im Navigationsbereich Mobile Device Testing und dann Projects aus.
-
Wählen Sie in der Projektliste das Projekt aus, in das Sie Ihre Tests hochladen möchten.
Tipp
Sie können die Suchleiste verwenden, um die Projektliste nach Namen zu filtern.
Befolgen Sie die Anweisungen unter Ein Projekt in AWS Device Farm erstellen, um ein neues Projekt zu erstellen.
-
Wählen Sie Lauf erstellen aus.
-
Wählen Sie unter App und Ausführungstyp auswählen im Abschnitt Ausführungstyp die Option Android-App aus.
-
Wählen Sie unter App auswählen im Abschnitt Optionen zur App-Auswahl die Option Von Device Farm bereitgestellte Beispiel-App auswählen, falls Sie keine App haben. Wenn Sie Ihre eigene App mitbringen, wählen Sie Eigene App hochladen aus und wählen Sie dann Ihr APK (.apk-Dateiformat).
-
Wählen Sie unter Test konfigurieren im Abschnitt Testframework auswählen die Option Instrumentation und dann Datei auswählen aus. Navigieren Sie zu der APK-Datei (.apk-Dateiformat), die Ihre Tests enthält, und wählen Sie sie aus.
-
Wählen Sie unter Wählen Sie Ihre Ausführungsumgebung entweder Ihren Test in einer benutzerdefinierten Umgebung aus oder Führen Sie Ihren Test in unserer Standardumgebung aus. Weitere Informationen finden Sie unter Testumgebungen in AWS Device Farm.
-
Wenn Sie die benutzerdefinierte Umgebung ausgewählt haben, können Sie die Standard-Testspezifikation verwenden, die für Instrumentierungstests aufgefüllt ist, oder wählen Sie Eigene Testspezifikation hochladen, um Ihre eigene Testspezifikation bereitzustellen.
-
Wählen Sie unter Geräte auswählen eine Methode zur Geräteauswahl aus. Wählen Sie Gerätepool verwenden aus, um aus einer kuratierten Sammlung von Geräten oder einem von Ihnen erstellten benutzerdefinierten Gerätepool auszuwählen. Wählen Sie Geräte manuell auswählen aus, um einzelne Geräte auszuwählen, mit denen Sie Ihre Tests ausführen möchten. Im Abschnitt Gerätekompatibilität wird angezeigt, wie viele Geräte im ausgewählten Pool mit Ihrer App kompatibel sind. Weitere Informationen finden Sie unter Geräteunterstützung in AWS Device Farm.
-
Um die Eigenschaften auf Run-Level zu konfigurieren, aktualisieren Sie den Abschnitt Ausführungseinstellungen. Hier können Sie Folgendes tun:
-
(Optional) Damit Device Farm nach Abschluss Ihres Laufs einen Testbericht generiert, wählen Sie Testbericht generieren aus. Diese Option ist nur in einer benutzerdefinierten Testumgebung verfügbar. Device Farm generiert den Bericht anhand der Instrumentierungsergebnisse, die in Ihrer Testspezifikationsausgabe enthalten sind. Wenn Sie Ihre eigene Testspezifikation hochladen, stellen Sie sicher, dass die Instrumentierungsergebnisse an Ihre Testspezifikationsausgabe ausgegeben werden.
-
-
Führen Sie die verbleibenden Schritte aus und starten Sie dann den Testlauf.
Einen Testbericht anzeigen (Konsole)
Melden Sie sich bei der Device Farm-Konsole unter an https://console.aws.amazon.com/devicefarm
. -
Wählen Sie im Navigationsbereich Mobile Device Testing und dann Projects aus.
-
Wählen Sie das Projekt aus, das den Testlauf enthält, den Sie überprüfen möchten.
-
Wählen Sie den abgeschlossenen Lauf aus, um dessen Details zu öffnen.
-
Wählen Sie einen der abgeschlossenen Jobs aus, um die Ergebnisse für dieses Gerät zu öffnen.
Mit aktivierten Testeinblicken
Die Auftragsergebnisse enthalten eine Registerkarte „Testbericht“. Wählen Sie es aus, um eine Aufschlüsselung pro Test anzuzeigen. Die folgenden Screenshots zeigen die Registerkarte „Testbericht“, auf der alle Spalten sichtbar sind.
Auf der Registerkarte werden die folgenden Felder für jeden Test angezeigt:
testNameDer Name der Testmethode.
testClassDer Name der Testklasse.
resultDas Device Farm-Ergebnis für den Test.
frameworkResultDas Ergebnis, das das Instrumentierungs-Framework gemeldet hat. Device Farm ordnet diesen Wert dem normalisierten
resultFeld zu.durationSecondsDie Dauer des Tests in Sekunden.
startTimestampDie Uhrzeit, zu der der Test gestartet wurde.
endTimestampDie Uhrzeit, zu der der Test beendet wurde.
currentDie Position des Tests im Lauf.
numTestsDie Gesamtzahl der Tests im Lauf.
statusCodeDer Statuscode der Instrumentierung, den der Test gemeldet hat.
streamEine für Menschen lesbare Version der Instrumentenausgabe für den Test.
stackTraceBei einem fehlgeschlagenen Test der Stack-Trace des Fehlers.
Um den vollständigen Testbericht als JSON-Datei herunterzuladen, wählen Sie Vollständige Zusammenfassung herunterladen oben in den Auftragsdetails aus.
Um auszuwählen, welche Spalten angezeigt werden, wählen Sie das Zahnradsymbol. In den Einstellungen kannst du auswählen, welche Spalten angezeigt werden sollen, und nach Klassen gruppieren ein- oder ausschalten. Nach Klasse gruppieren ist standardmäßig aktiviert, wodurch die Tests nach ihrer Testklasse gruppiert werden. Schalten Sie es aus, um eine einfache Liste aller Tests anzuzeigen, wie im folgenden Screenshot gezeigt.
Ohne aktivierte Testeinblicke
Die Auftragsergebnisse zeigen die Standardtestausgabe und die Artefakte, aber keine Registerkarte „Testbericht“. Um einen Testbericht zu generieren, planen Sie einen neuen Testlauf mit aktivierten Testeinblicken.
Sehen Sie sich einen Testbericht an (AWS CLI)
Führen Sie den Job-ARN aus get-job und geben Sie ihn an:
aws devicefarm get-job --arnarn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000
Ohne aktivierte Testeinblicke
Wenn Sie Testinformationen nicht aktiviert haben, enthält die Antwort die Standardfelder für den Job, z. B. den Jobstatus, das Ergebnis, die Leistungsindikatoren und das Gerät:
{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "name": "Example Android Phone", "created": "2026-08-05T14:26:56.959000-07:00", "status": "COMPLETED", "result": "PASSED", "counters": { "total": 3, "passed": 3, "failed": 0, "warned": 0, "errored": 0, "stopped": 0, "skipped": 0 }, "message": "Successful test lifecycle of Setup Test", "device": { "arn": "arn:aws:devicefarm:us-west-2::device:EXAMPLEDEVICEID", "name": "Example Android Phone", "platform": "ANDROID", "os": "16", "formFactor": "PHONE", "fleetType": "PUBLIC" }, "deviceMinutes": { "total": 1.38, "metered": 0.0, "unmetered": 1.13 }, "videoCapture": true } }
Mit aktivierten Testeinblicken
Wenn Sie Testeinblicke aktiviert haben, enthält die Antwort auch ein insights Objekt. Dieses Objekt enthält den Status des Testberichts, allgemeine Metriken und eine vorsignierte URL zum detaillierten Bericht:
{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "status": "COMPLETED", "result": "PASSED", "counters": { ... }, "device": { ... }, "deviceMinutes": { ... }, "videoCapture": true, "insights": { "status": "COMPLETED", "testReport": { "message": "Results: 2 Executed | 2 passed, Median test duration: 28.926 seconds.", "metrics": { "testsTotal": 2, "testsPassed": 2, "testsFailed": 0, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 100.0 }, "testDetailsUrl": "https://EXAMPLE-PRESIGNED-URL" } } } }
Das testDetailsUrl Feld ist eine vorsignierte URL zum vollständigen Testbericht-JSON. Laden Sie es herunter, um die Aufschlüsselung pro Test zu erhalten:
curl -o test-report.json "PRESIGNED_URL"
Im Folgenden finden Sie ein Beispiel für einen Testbericht für einen Instrumentierungsauftrag:
{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 26.004, "medianTestExecutionDurationSeconds": 1.598 }, "testDetails": [ { "testName": "testConnect", "testClass": "com.example.myapp.GpsConnectInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 24.399, "startTimestamp": "2026-08-05T20:38:30.131514Z", "endTimestamp": "2026-08-05T20:38:54.530369Z", "statusCode": 0, "current": 1, "numTests": 3 }, { "testName": "testHistoryOff", "testClass": "com.example.myapp.NotificationHistoryInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 1.598, "startTimestamp": "2026-08-05T20:38:54.531765Z", "endTimestamp": "2026-08-05T20:38:56.130032Z", "statusCode": 0, "current": 2, "numTests": 3 }, { "testName": "testConnect", "testClass": "com.example.myapp.WifiConnectInstrumentedTest", "frameworkResult": "FAILED", "result": "FAILED", "durationSeconds": 0.002, "startTimestamp": "2026-08-05T20:38:56.131857Z", "endTimestamp": "2026-08-05T20:38:56.133770Z", "stackTrace": "java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\tat com.example.myapp.WifiConnectInstrumentedTest.testConnect(WifiConnectInstrumentedTest.java:93)\n\t...", "stream": "\nError in testConnect(com.example.myapp.WifiConnectInstrumentedTest):\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...", "statusCode": -2, "current": 3, "numTests": 3 } ], "errorMessage": "There was 1 failure:\n1) testConnect(com.example.myapp.WifiConnectInstrumentedTest)\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...\nFAILURES!!!\nTests run: 3, Failures: 1", "instrumentationCode": -1 }
Der Bericht enthält die folgenden Felder auf oberster Ebene:
versionDie Version des Berichtsschemas.
jobArnDer ARN des Auftrags.
metrics-
Aggregierte Ergebnisse für den Job. Das
metrics-Objekt enthält die folgenden Felder:testsTotalDie Gesamtzahl der Tests im Job.
testsPassedDie Anzahl der Tests, die bestanden wurden.
testsFailedDie Anzahl der fehlgeschlagenen Tests.
testsSkippedDie Anzahl der Tests, die übersprungen wurden.
testsErroredDie Anzahl der fehlgeschlagenen Tests.
testsOtherDie Anzahl der Tests mit einem anderen Ergebnis.
testsPassedPercentageDer Prozentsatz der Tests, die bestanden wurden.
totalTestExecutionDurationSecondsDie Gesamtdauer aller Tests in Sekunden.
medianTestExecutionDurationSecondsDie mittlere Dauer eines Tests in Sekunden.
errorMessageWenn bei dem Testlauf Fehler aufgetreten sind, werden diese in einer zusammenfassenden Fehlermeldung angezeigt.
instrumentationCodeDer gesamte Instrumentierungs-Exitcode für den Job.
testDetails-
Eine Liste der Ergebnisse pro Test. Jeder Eintrag in
testDetailsenthält die folgenden Felder:testNameDer Name der Testmethode.
testClassDer Name der Testklasse.
resultDas Device Farm-Ergebnis für den Test.
frameworkResultDas Ergebnis, das das Instrumentierungs-Framework gemeldet hat. Device Farm ordnet diesen Wert dem normalisierten
resultFeld zu.durationSecondsDie Dauer des Tests in Sekunden.
startTimestampDie Uhrzeit, zu der der Test gestartet wurde.
endTimestampDie Uhrzeit, zu der der Test beendet wurde.
currentDie Position des Tests im Lauf.
numTestsDie Gesamtzahl der Tests im Lauf.
statusCodeDer Statuscode der Instrumentierung, den der Test gemeldet hat.
streamEine für Menschen lesbare Version der Instrumentenausgabe für den Test.
stackTraceBei einem fehlgeschlagenen Test der Stack-Trace des Fehlers.
(Optional) Machen Sie Screenshots in Android-Instrumentierungstests
Sie können im Rahmen Ihrer Android-Instrumentierungstests Screenshots erstellen.
Rufen Sie eine der folgenden Methoden auf, um Screenshots zu erstellen:
-
Rufen Sie für Robotium die Methode
takeScreenShotauf (z. B.solo.takeScreenShot();). -
Rufen Sie für Spoon die Methode
screenshotauf, z. B.:Spoon.screenshot(activity, "initial_state"); /* Normal test code... */ Spoon.screenshot(activity, "after_login");
Während eines Testlaufs ruft Device Farm Screenshots von den folgenden Stellen auf den Geräten ab, sofern diese vorhanden sind, und fügt sie dann den Testberichten hinzu:
-
/sdcard/robotium-screenshots -
/sdcard/test-screenshots -
/sdcard/Download/spoon-screenshots/test-class-name/test-method-name -
/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name