View a markdown version of this page

Integration der XCTest-Benutzeroberfläche für iOS in Device Farm - AWS Device Farm

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 XCTest-Benutzeroberfläche für iOS in Device Farm

Device Farm bietet Unterstützung für das XCTest-UI-Testframework. Insbesondere unterstützt Device Farm XCTest-UI-Tests, die sowohl in Swift als auch Objective-C in Swift geschrieben wurden. https://developer.apple.com/swift/

Das XCTest-UI-Framework ermöglicht UI-Tests in der iOS-Entwicklung, das auf XCTest aufbaut. Weitere Informationen finden Sie unter User Interface Testing in der iOS Developer Library.

Allgemeine Informationen zum Testen in Device Farm finden Sie unter. Testen Sie Frameworks und integrierte Tests in AWS Device Farm

Verwenden Sie die folgenden Anweisungen, um Device Farm in das XCTest-UI-Testframework für iOS zu integrieren.

Bereiten Sie Ihre iOS XCTest-UI-Tests vor

Sie können entweder eine .ipa Datei oder eine .zip Datei für Ihr XCTEST_UI-Testpaket hochladen.

Eine .ipa Datei ist ein Anwendungsarchiv, das die iOS Runner-App im Bundle-Format enthält. Zusätzliche Dateien können nicht in die .ipa Datei aufgenommen werden.

Wenn Sie eine .zip Datei hochladen, kann sie entweder direkt die iOS Runner-App oder eine .ipa Datei enthalten. Sie können auch andere Dateien in die .zip Datei aufnehmen, wenn Sie sie während der Tests verwenden möchten. Sie können beispielsweise Dateien wie .xcworkspace oder .xcodeproj in eine .zip Datei einbeziehen.xctestrun, um XCUI-Testpläne auf der Gerätefarm auszuführen. Detaillierte Anweisungen zur Ausführung von Testplänen finden Sie in der Standardtestspezifikationsdatei für den XCUI-Testtyp.

Option 1: Erstellen eines XCTest UI.ipa-Pakets

Ihr AppName UITest-Runner.app Paket wird von Xcode erstellt, wenn Sie Ihr Projekt zum Testen erstellen. Es ist im Verzeichnis "Products" für das Projekt zu finden.

Um eine IPA-Datei zu erstellen:

  1. Erstellen Sie ein Verzeichnis mit dem Namen. Payload

  2. Fügen Sie Ihr App-Verzeichnis zum Payload-Verzeichnis hinzu.

  3. Archivieren Sie das Payload-Verzeichnis in einer .zip Datei und ändern Sie dann die Dateierweiterung in. .ipa

Die folgende Ordnerstruktur zeigt, wie eine Beispiel-App mit dem Namen als .ipa Datei verpackt my-project-nameUITest-Runner.app würde:

. └── my-project-nameUITest.ipa └── Payload (directory) └── my-project-nameUITest-Runner.app

Option 2: Erstellen eines XCTest UI.zip-Pakets

Device Farm generiert automatisch eine .xctestrun Datei für Sie, um Ihre vollständige XCTest-UI-Testsuite auszuführen. Wenn Sie Ihre eigene .xctestrun Datei auf Device Farm verwenden möchten, können Sie Ihre .xctestrun Dateien und Ihr App-Verzeichnis in eine .zip Datei komprimieren. Wenn Sie bereits eine .ipa Datei für Ihr Testpaket haben, können Sie diese stattdessen hier einfügen*-Runner.app.

. └── swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa ├── SampleTestPlan_2.xctestrun ├── SampleTestPlan_1.xctestrun └── (any other files)

Wenn Sie einen Xcode-Testplan für Ihre XCUI-Tests auf Device Farm ausführen möchten, können Sie eine ZIP-Datei erstellen, die Ihre Datei my-project-name UITest-Runner.app oder my-project-name und die Xcode-Quellcodedateien enthält, die für die Ausführung von XCTEST_UI mit Testplänen erforderlich sind, einschließlich einer UITest.ipa OR-Datei. .xcworkspace .xcodeproj

Hier ist .xcodeproj eine Beispiel-Zip-Datei mit einer Datei:

. └── swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa ├── (any directory) └── SampleXcodeProject.xcodeproj ├── Testplan_1.xctestplan ├── Testplan_2.xctestplan └── (any other source code files created by xcode with .xcodeproj)

Hier ist eine Beispiel-Zip-Datei mit einer .xcworkspace Datei:

. └──swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa └── (any directory) │ ├── SampleXcodeProject.xcodeproj │ ├── Testplan_1.xctestplan │ ├── Testplan_2.xctestplan | └── (any other source code files created by xcode with .xcodeproj) └── SampleWorkspace.xcworkspace └── contents.xcworkspacedata
Anmerkung

Bitte stellen Sie sicher, dass Sie kein Verzeichnis mit dem Namen „Payload“ in Ihrem XCTest-UI.zip-Paket haben.

Führen Sie iOS XCTest UI-Tests aus (Konsole)

Verwenden Sie die Device Farm-Konsole, um Ihre Tests hochzuladen.

  1. Melden Sie sich bei der Device Farm-Konsole unter an https://console.aws.amazon.com/devicefarm.

  2. Wählen Sie im Navigationsbereich Mobile Device Testing und dann Projects aus.

  3. 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.

    Um ein Projekt zu erstellen, folgen Sie den Anweisungen unter Ein Projekt in AWS Device Farm erstellen

  4. Wählen Sie „Lauf erstellen“.

  5. Wählen Sie unter App und Ausführungstyp auswählen im Abschnitt Ausführungstyp die Option iOS-App aus.

  6. Wählen Sie im Abschnitt App auswählen unter App-Auswahloptionen die Option Eigene App hochladen aus. Wählen Sie dann unter App hochladen die Option Datei auswählen aus.

  7. Navigieren Sie zu der Datei mit Ihrer iOS-Anwendung und wählen Sie diese aus. Es muss sich dabei um eine IPA-Datei handeln.

    Anmerkung

    Stellen Sie sicher, dass Ihre IPA-Datei für ein iOS-Gerät und nicht für einen Simulator erstellt wurde.

  8. Wählen Sie unter Test konfigurieren im Abschnitt Testframework auswählen die Option XCTest-Benutzeroberfläche aus. Wählen Sie dann unter App hochladen die Option Datei auswählen aus.

  9. Navigieren Sie zu der IPA- oder ZIP-Datei, die Ihren iOS XCTest-UI-Testrunner enthält, und wählen Sie sie aus.

  10. (Optional) Um die Run-Level-Eigenschaften zu konfigurieren, aktualisieren Sie den Abschnitt Ausführungseinstellungen:

    1. Damit Device Farm nach Abschluss Ihres Laufs einen Test Insights-Bericht generiert, aktivieren Sie Testbericht generieren. Diese Option ist nur in einer benutzerdefinierten Testumgebung verfügbar.

      Es gelten die folgenden Voraussetzungen:

      1. Ihre Tests müssen ein .xcresult Xcode-Paket generieren und in dieses schreiben. $DEVICEFARM_DERIVED_DATA_PATH Übergeben Sie zum Beispiel -derivedDataPath $DEVICEFARM_DERIVED_DATA_PATH anxcodebuild. Die standardmäßige XCTest-UI-Testspezifikation erzeugt und speichert dieses Paket automatisch, wenn Sie die Standardkonfiguration beibehalten.

      Weitere Informationen zum Anzeigen Ihres Berichts finden Sie unter. Sehen Sie sich einen Testbericht an (Konsole)

  11. Führen Sie die verbleibenden Schritte des Lauferstellungsprozesses aus. Wählen Sie die Geräte aus, auf denen Sie testen möchten, und geben Sie optional eine zusätzliche Konfiguration an.

  12. Wählen Sie Create Run. Device Farm führt Ihren Test aus und zeigt die Ergebnisse in der Konsole an.

Sehen Sie sich einen Testbericht an (Konsole)

  1. Melden Sie sich bei der Device Farm-Konsole unter an https://console.aws.amazon.com/devicefarm.

  2. Wählen Sie im Navigationsbereich Mobile Device Testing und dann Projects aus.

  3. Wählen Sie das Projekt aus, das den Testlauf enthält, den Sie überprüfen möchten.

  4. Wählen Sie den abgeschlossenen Lauf aus, um dessen Details zu öffnen.

  5. 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 diese Option, um eine Zusammenfassung der Testergebnisse anzuzeigen, einschließlich der Gesamtzahl der Tests, der Anzahl der bestandenen und fehlgeschlagenen Tests, der gesamten Testausführungszeit und der mittleren Testausführungszeit. Unter der Zusammenfassung zeigt die Tabelle Tests eine Aufschlüsselung pro Test.

Die ersten Spalten auf der Registerkarte Testbericht für einen abgeschlossenen XCTest-UI-Job.
Die verbleibenden Spalten auf der Registerkarte Testbericht für einen abgeschlossenen XCTest-UI-Job.

Jede Zeile in der Testtabelle enthält die folgenden Spalten:

  • Ergebnis — ob der Test bestanden wurde, nicht bestanden hat oder übersprungen wurde.

  • Testklasse — Die Klasse, zu der der Test gehört.

  • Testname — der Name der Testmethode.

  • Stack-Trace — für einen fehlgeschlagenen Test ein Link zum Stack-Trace des Fehlers.

  • Dauer — wie lange die Ausführung des Tests gedauert hat.

  • Startzeit und Endzeit — wann der Test gestartet und beendet wurde.

  • Framework-Ergebnis — die Ergebniszeichenfolge, die das XCTest-Framework für den Test gemeldet hat.

  • Testpaket — das Testpaket, zu dem der Test gehört.

  • Node Identifier — Die Xcresult-Node-ID für den Testfall.

Sie können anhand des Namens, der Klasse oder des Status nach einem Test suchen. Um auszuwählen, welche Spalten angezeigt werden, wählen Sie das Einstellungssymbol. 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. Erweitern Sie eine Klasse, um ihre einzelnen Tests zu sehen, wie im folgenden Screenshot gezeigt.

Die Registerkarte „Testbericht“ mit nach Klassen gruppierten Tests, wobei jede Klasse um ihre einzelnen Tests erweitert wird.

Um den vollständigen Testbericht als JSON-Datei herunterzuladen, wählen Sie Vollständige Zusammenfassung herunterladen oben in den Auftragsdetails aus.

Ohne aktivierte Testeinblicke

In den Auftragsergebnissen werden die Standardtestausgabe und Artefakte angezeigt, z. B. die Registerkarten Suiten , Protokolle und Screenshots, aber keine Registerkarte „Testbericht“. Um einen Testbericht zu generieren, planen Sie einen neuen Testlauf mit aktivierten Testeinblicken.

Die Job-Ergebnisse für einen abgeschlossenen XCTest-UI-Job ohne aktivierte Testeinblicke, wobei die Standardregister und keine Registerkarte „Testbericht“ angezeigt werden.

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 --arn arn: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 Apple iPhone", "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 Apple iPhone", "platform": "IOS", "os": "18", "formFactor": "PHONE", "fleetType": "PUBLIC" }, "deviceMinutes": { "total": 1.38, "metered": 0.0, "unmetered": 1.13 }, "videoCapture": true } }

Mit aktivierten Testeinblicken

Wenn Sie Testinformationen aktiviert haben, enthält die Antwort auch ein insights Objekt, das den Status des Testberichts, allgemeine Metriken und eine vorsignierte URL zum detaillierten Bericht enthält:

{ "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: 3.214 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 XCTest-UI-Job:

{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE/a1b2c3d4-e5f6-4a7b-8c9d-67890EXAMPLE/00000", "deviceName": "Apple iPhone 15", "deviceArn": "arn:aws:devicefarm:us-west-2::device:A1B2C3D4E5F60718293A4B5C6D7E8F90", "deviceOsVersion": "17.5", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 6.914, "medianTestExecutionDurationSeconds": 2.062 }, "testDetails": [ { "testName": "test_execute()", "testClass": "AlertsTest", "frameworkResult": "Passed", "result": "PASSED", "durationSeconds": 2.062, "startTimestamp": "2026-07-31T16:58:26.646000Z", "endTimestamp": "2026-07-31T16:58:28.708000Z", "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "AlertsTest/test_execute()" }, { "testName": "test_login()", "testClass": "LoginTest", "frameworkResult": "Failed", "result": "FAILED", "durationSeconds": 3.541, "startTimestamp": "2026-07-31T16:58:29.000000Z", "endTimestamp": "2026-07-31T16:58:32.541000Z", "stackTrace": "LoginTest.swift:88: XCTAssertEqual failed: (\"Welcome\") is not equal to (\"Error\")\nLoginTest.swift:91: XCTAssertTrue failed", "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "LoginTest/test_login()" }, { "testName": "test_themeRendering()", "testClass": "ThemeTest", "frameworkResult": "Passed", "result": "PASSED", "durationSeconds": 1.311, "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "ThemeTest/test_themeRendering()", "testArguments": "Dark Appearance, Portrait" } ] }

Der Bericht enthält die folgenden Felder auf oberster Ebene:

version, jobArn

Die Berichtsschemaversion und der ARN des Jobs.

deviceName, deviceArn, deviceOsVersion

Der Name und die ARN des Geräts, auf dem der Job ausgeführt wurde, sowie dessen Betriebssystemversion.

metrics

Aggregierte Ergebnisse für den Job: Gesamtzahl der Tests (testsTotal) und Anzahl der bestandenen (testsPassed), fehlgeschlagenen (testsFailed), übersprungenen (testsSkipped), fehlerhaften (testsErrored) oder mit einem anderen Ergebnis (testsOther) erzielten Ergebnisse (), zusammen mit der Erfolgsquote (testsPassedPercentage), der gesamten Testdauer (totalTestExecutionDurationSeconds) und der mittleren Testdauer (). medianTestExecutionDurationSeconds

Jeder Eintrag in testDetails enthält die folgenden Felder:

testName, testClass

Der Name der Testmethode und ihrer Testklasse.

result, frameworkResult

Das Device Farm-Ergebnis für den Test und die Ergebniszeichenfolge, die das XCTest-Framework gemeldet hat. Device Farm wird frameworkResult dem normalisierten Feld zugeordnet. result

durationSeconds, startTimestamp, endTimestamp

Die Dauer des Tests in Sekunden sowie die Zeiten, zu denen er gestartet und beendet wurde.

testBundle, nodeIdentifier

Das Testpaket, zu dem der Test gehört, und der xcresult-Knotenbezeichner für den Testfall.

testArguments

Bei einem parametrisierten Testaufruf die Argumentbezeichnung für den Aufruf.

stackTrace

Bei einem fehlgeschlagenen Test der Stack-Trace des Fehlers.