Developer Device Platform Device Run für iOS

In diesem Leitfaden wird beschrieben, wie Sie einen iOS-XCTest mit der gcloud beta device-run CLI ausführen und die Ergebnisse in der Google Cloud Console aufrufen. Es wird davon ausgegangen, dass Sie ein Google Cloud -Konto und ein Projekt haben.

Zur Verwendung der device-run-CLI müssen Sie die Projekt-ID Google Cloudangeben. Eine Zusammenfassung der Befehle finden Sie unter gcloud beta device-run.

Hinweis

Bei diesen Schritten wird davon ausgegangen, dass Sie bereits Folgendes getan haben:

  1. Sie haben ein Google Cloud -Projekt erstellt.
  2. Richten Sie die Developer Device Platform gemäß der Kurzanleitung ein.
  3. Sie haben sich im Terminal mit gcloud authentifiziert.
  4. Übersicht über Geräteausführung mit allgemeinen Informationen.
  5. Sie haben Ihre Tests kompiliert und in einem ZIP-Paket zusammengefasst.

Schritt 1: Gerätetypen auswählen

Mit der device-run-CLI können iOS-Tests auf allen verfügbaren physischen Geräten ausgeführt werden. Eine vollständige Liste der verfügbaren Geräte finden Sie entweder im interaktiven Gerätekatalog oder durch Ausführen des folgenden Befehls:

gcloud beta device-run devices list

Beispielausgabe:

ID                MAKE   NAME           MODEL        HARDWARE_TYPE  OS_VERSION  CAPACITY  AVAILABILITY  PRODUCTS
iphonese3-18-4    Apple  iPhone SE 3             iphonese3    PHYSICAL       18.4        NONE      NONE          Automation
iphonese3-26-3    Apple  iPhone SE 3             iphonese3    PHYSICAL       26.3        NONE      NONE          Automation

Informationen zum Filtern dieser Liste finden Sie im Gerätekatalog. Wenn Sie ein bestimmtes Gerät für die Testausführung verwenden möchten, geben Sie die entsprechende ID an (z. B. iphonese3-18-4) im Befehl „submit“.

Schritt 2: XCTest vorbereiten und verpacken

Bevor Sie Ihre Tests ausführen, müssen Sie sie kompilieren, dafür sorgen, dass sie signiert sind, die Codesignaturen überprüfen und die resultierenden Artefakte in einer ZIP-Datei verpacken, die Ihre .xctestrun-Konfiguration und die Anwendungs-Test-Bundles enthält.

1. Tests für physische iOS‑Geräte erstellen

Öffnen Sie Ihr Projekt in Xcode und erstellen Sie Ihre App und Testziele für Tests:

  1. Prüfen Sie, ob die Codesignierung in Xcode sowohl für das App-Ziel als auch für das Testrunner-Ziel richtig konfiguriert ist (mit einem gültigen Bereitstellungsprofil und einer gültigen Entwickleridentität).
  2. Erstellen Sie einen Build für Tests mit Xcode (Product > Build For > Testing) oder mit xcodebuild.

    Für einen Arbeitsbereich:

    xcodebuild build-for-testing \
      -workspace YourProject.xcworkspace \
      -scheme YourScheme \
      -derivedDataPath ./build \
      -destination "generic/platform=iOS"
    

    Für ein eigenständiges Projekt:

    xcodebuild build-for-testing \
      -project YourProject.xcodeproj \
      -scheme YourScheme \
      -derivedDataPath ./build \
      -destination "generic/platform=iOS"
    

Dadurch werden die Build-Produkte unter ./build/Build/Products generiert.

2. Build-Produkte und Signaturen prüfen

Prüfen Sie nach dem Erstellen, ob die Anwendung, der Runner und das .xctestrun-Manifest unter ./build/Build/Products/ generiert wurden. Wenn das Bundle lokal signiert wurde, können Sie die Bundlesignaturen mit codesign überprüfen:

  1. App-Bundle überprüfen:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app
    

    Erwartete Ausgabe: YourApp.app: valid on disk

  2. Wenn Sie einen XCUITest ausführen, prüfen Sie auch das Testrunner-Bundle:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.app
    

    Erwartete Ausgabe: YourApp-Runner.app: valid on disk

3. ZIP-Archiv erstellen

Komprimieren Sie sowohl das Verzeichnis Debug-iphoneos als auch die Datei .xctestrun, die sich im Ordner „Build-Ausgabeprodukte“ befindet, in ein einzelnes ZIP-Archiv.

Führen Sie den folgenden Befehl im Verzeichnis mit den Build-Produkten aus:

cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun

Dadurch wird das gepackte MyTests.zip erstellt, das mit dem Flag --test verwendet werden kann.

Schritt 3: XCTest ausführen

Diese Flags sind erforderlich:

  • Gerät: Geben Sie ein Gerät mit --device an: --device iphonese3-18-4
  • Test: Geben Sie die ZIP-Datei für den Test mit --test an: --test ./MyTests.zip

Verwenden Sie den Befehl gcloud beta device-run sessions submit xctest, um Ihren XCTest auszuführen. Sie müssen die im vorherigen Schritt kompilierte Test-ZIP-Datei (MyTests.zip) angeben.

So führen Sie eine einfache Testsitzung durch:

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./MyTests.zip

Wenn die Ausführung beginnt, werden in der CLI die erstellte Sitzungs-ID und das Cloud Storage-Ziel angezeigt, in dem die Ergebnisse gespeichert werden:

Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].

Waiting for session [session-ee78b0ed] to complete....

Schritt 4: Testlauf konfigurieren

Sie können die Testausführung mit den folgenden optionalen Flags anpassen. Mindestens eine Instanz des Flags --device ist jedoch erforderlich:

  • Mehrere Geräte: Geben Sie das Flag --device mehrmals an, um denselben Test gleichzeitig auf mehreren Geräten auszuführen: --device iphonese3-18-4 --device iphonese3-26-3 oder --device iphonese3-18-4,iphonese3-26-3.
  • Zusätzliche Apps: Installieren Sie ein oder mehrere zusätzliche .ipa-Pakete, bevor Sie den Test mit --additional-apps starten: --additional-apps=/path/to/AdditionalApp.ipa
  • Benutzerdefinierte .xctestrun-Datei: Übergeben Sie eine benutzerdefinierte Konfigurationsdatei mit --xctestrun-file: --xctestrun-file=/path/to/CustomTests.xctestrun
  • Test-Timeout: Beschränken Sie die Ausführungsdauer: --xctest-timeout=10m (Gültiger Bereich: 1m bis 1h, Standardwert: 5m).
  • Labels: Hängen Sie benutzerdefinierte Metadaten an die Sitzung an: --labels=env=staging,owner=my-team
  • Dateien auf das Gerät übertragen: Dateien vor der Ausführung des Tests in den App-Datencontainer übertragen: --other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt
  • Dateien vom Gerät abrufen: Dateien nach der Ausführung des Tests aus dem App-Datencontainer abrufen: --paths-to-pull=com.example.app:/Documents/output.txt
  • Wiederholungen instabiler Tests: Legen Sie die maximale Anzahl der Versuche fest, instabile Tests noch einmal auszuführen: --flaky-test-attempts=3 (Standardwert: 1 Versuch).
  • Benutzerdefinierter Cloud Storage-Bucket: Geben Sie einen benutzerdefinierten Cloud Storage-Bucket für Ein- und Ausgaben an: --bucket-name=my-custom-bucket (Standardwert: PROJECT_ID-devicerun).
  • Da das Hochladen großer ZIP- oder IPA-Dateien zeitaufwendig sein kann, können Sie direkt auf Ihre Dateien verweisen, indem Sie ihre Cloud Storage-gs://-Pfade verwenden, um die Uploadzeit zu verkürzen.

Schritt 5: Testlauf ansehen und verwalten

Mit diesen Befehlen können Sie aktive Läufe verfolgen und frühere Sitzungen verwalten:

  • Sitzung beschreiben: Fragen Sie den Live-Fortschritt oder die Endergebnisse einer Sitzung ab: gcloud beta device-run sessions describe SESSION_ID Fügen Sie --full hinzu, um vollständige Details wie Gerätezuweisungen, Ausführungs-IDs und Cloud Storage-Artefaktpfade aufzurufen.
  • Sitzungen auflisten: Hier kannst du deine letzten Läufe ansehen: gcloud beta device-run sessions list --limit=10
  • Sitzung abbrechen: Eine laufende Testsitzung beenden: gcloud beta device-run sessions cancel SESSION_ID
  • Vorgang abbrechen: Einen ausstehenden oder aktiven Vorgang beenden: gcloud beta device-run operations cancel OPERATION_ID

Nächste Schritte

Als Nächstes suchen und analysieren Sie Logs.