Mit der Google Cloud CLI testen

In diesem Leitfaden wird beschrieben, wie Sie einen XCTest oder einen Game Loop-Test mit der gcloud CLI ausführen.

Schritt 1: Lokale Google Cloud SDK-Umgebung konfigurieren

  1. Google Cloud SDK herunterladen
  2. Dazu gehört auch das gcloud CLI-Tool.

  3. Prüfen Sie, ob Ihre Installation auf dem neuesten Stand ist und den gcloud firebase-Befehl enthält:
          gcloud components update
  4. Melden Sie sich mit Ihrem Google-Konto in der gcloud CLI an:
          gcloud auth login
  5. Legen Sie Ihr Firebase-Projekt in gcloud fest. Dabei ist PROJECT_ID die ID Ihres Firebase-Projekts:
         gcloud config set project PROJECT_ID

Schritt 2: Test ausführen

XCTest ausführen

  1. Laden Sie die ZIP-Datei Ihres Tests mit dem folgenden Befehl hoch (wenn Sie Ihre App noch nicht verpackt haben, lesen Sie den Abschnitt XCTest verpacken):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Wählen Sie die Testdimensionen aus.

    Mit Test Lab können Sie Tests für verschiedene iOS-Versionen, Geräte, Bildschirmausrichtungen und Sprachen ausführen. Diese Konfigurationen werden als Testdimensionen des Tests bezeichnet. Wenn Sie die Optionen für die einzelnen Dimensionen sehen möchten (z.B. unterstützte Xcode-Versionen für die iOS-Version des Geräts), ersetzen Sie models, versions oder locales im folgenden Befehl durch dimension:

    gcloud firebase test ios dimension list

    Die Bildschirmausrichtung ist etwas einfacher, da es nur die Optionen portrait und landscape gibt.

    Sehen Sie sich die Liste der Testdimensionen an und wählen Sie einige Kombinationen aus, für die Sie den Test ausführen möchten. Unter Preismodelle finden Sie die maximale Anzahl von Kombinationen, die Sie pro Tag ausführen können.

  3. Nachdem Sie eine Reihe von Testdimensionen ausgewählt haben, können Sie Ihre Tests mit dem Befehl firebase test ios run von Test Lab ausführen lassen. Fügen Sie für jede Kombination von Testdimensionen, die Sie testen möchten, ein separates --device-Flag ein:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    Es ist möglich, dass Ihr Test aufgrund einer Inkompatibilität zwischen der Xcode-Version, mit der der Test erstellt wurde, und der von Test Lab verwendeten Standard-Xcode-Version fehlschlägt. Mit dem Flag --xcode-version geben Sie eine unterstützte Xcode-Version für Ihren Test an:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Damit Sie Ihre Testmatrizen in der Firebase-Konsole leichter identifizieren und finden können, können Sie sie optional mit dem Flag --client-details matrixLabel="<label>" wie im folgenden Beispiel kennzeichnen:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

Sonderberechtigungen testen

Wenn Sie Berechtigungen testen möchten, für die eine explizite App-ID erforderlich ist, können Sie das Flag --test-special-entitlements festlegen. Test Lab signiert die Anwendung mit einer neuen Bundle-ID neu, um spezielle Berechtigungen zu unterstützen. Achten Sie daher darauf, dass Ihre ZIP-Datei keine Ressourcen enthält, die direkte Verweise auf die Bundle-ID der App enthalten.

Unterstützte Berechtigungen:
  1. Push-Benachrichtigungen apns-environment
  2. Persönliches VPN com.apple.developer.networking.vpn.api
Push-Benachrichtigungen

Zum Autorisieren von Push-Benachrichtigungsanfragen können Nutzer JSON-Webtokens mit dem privaten Signaturschlüssel, der Schlüssel-ID C7FD9DJAA8 und der Team-ID 9CKCGNNUQN erstellen. Die generierten Tokens sind eine Stunde lang gültig und müssen alle 60 Minuten aktualisiert werden. Weitere Informationen zum Herstellen einer tokenbasierten Verbindung zu APNs.

App-Gruppen

App-Gruppen-IDs sind universell eindeutig. Wenn wir Nutzer-Apps neu signieren, können wir also nur die App-Gruppen-ID verwenden, die mit dem Test Lab-Entwicklerkonto verknüpft ist. Wenn Ihr Test auf App-Gruppen basiert, schlägt er fehl.

Spielschleifentest ausführen

Führen Sie den Befehl gcloud beta firebase test ios run aus und verwenden Sie die folgenden Flags, um den Lauf zu konfigurieren:

Flags für Spielschleifentests
--type

Erforderlich: Gibt den Typ des iOS-Tests an, den Sie ausführen möchten. Mögliche Werte sind xctest (Standard) oder game-loop.

--app

Erforderlich: Absoluter Pfad (GCS oder Dateisystem) zur IPA-Datei Ihrer App. Dieses Flag ist nur gültig, wenn Spielschleifentests ausgeführt werden.

--scenario-numbers

Die Schleifen (auch als Szenarien bezeichnet), die in Ihrer App ausgeführt werden sollen. Sie können eine Schleife, eine Liste von Schleifen oder einen Bereich von Schleifen eingeben. Der Standardwert ist 1.

Beispiel: --scenario-numbers=1-3,5 führt die Schleifen 1, 2, 3 und 5 aus.

--device-model

Das physische Gerät, auf dem Sie den Test ausführen möchten. Hier finden Sie eine Liste der verfügbaren Geräte.

--timeout

Die maximale Dauer, die der Test laufen soll. Sie können eine Ganzzahl eingeben, um die Dauer in Sekunden anzugeben, oder eine Ganzzahl und eine Aufzählung, um die Dauer als längere Zeiteinheit anzugeben.

Beispiel:

  • Mit --timeout=200 wird der Test nach 200 Sekunden beendet.
  • --timeout=1h erzwingt das Beenden des Tests, wenn er bis zu einer Stunde läuft.

Mit dem folgenden Befehl wird beispielsweise ein Game Loop-Test ausgeführt, bei dem die Schleifen 1, 4, 6, 7 und 8 auf einem iPhone 8 Plus ausgeführt werden:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

Weitere Informationen zur gcloud CLI finden Sie in der Referenzdokumentation.

Schritt 3 (optional): Zukünftige Tests automatisieren

gcloud-Befehle mit Test Lab in Skripts verwenden

Sie können Shell-Skripts oder Batchdateien verwenden, um Befehle zum Testen von Mobilanwendungen zu automatisieren, die Sie sonst über die gcloud-Befehlszeile ausführen würden. In diesem Beispiel-Bash-Skript wird ein XCTest mit einem Zeitlimit von zwei Minuten ausgeführt. Außerdem wird gemeldet, ob der Testlauf erfolgreich abgeschlossen wurde:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Exit-Codes von Scripts

Test Lab bietet mehrere Exit-Codes, mit denen Sie die Ergebnisse von Tests, die Sie mit Skripts oder Batchdateien ausführen, besser nachvollziehen können.

Exit-Code Hinweise
0 Alle Testausführungen erfolgreich.
1 Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen: Ein Dateiname, der nicht vorhanden ist, oder ein HTTP-/Netzwerkfehler.
2 Der Test wurde beendet, weil unbekannte Befehle oder Argumente angegeben wurden.
10 Mindestens ein Testlauf (getestete Klassen oder Klassenmethoden) in einem Testlauf ist fehlgeschlagen.
15 Firebase Test Lab konnte aufgrund eines unerwarteten Fehlers nicht ermitteln, ob die Testmatrix bestanden oder fehlgeschlagen ist.
19 Die Testmatrix wurde vom Nutzer abgebrochen.
20 Es ist ein Fehler in der Testinfrastruktur aufgetreten.

Schritt 4: Testergebnisse analysieren

Wenn der Test beginnt, erhalten Sie einen Link zur Seite Testergebnisse. Die Ausführung von Tests kann je nach Anzahl der ausgewählten Konfigurationen und der für Ihre Tests festgelegten Zeitüberschreitungsdauer mehrere Minuten dauern. Nachdem Ihre Tests ausgeführt wurden, können Sie die Testergebnisse überprüfen. Weitere Informationen zum Interpretieren der Testergebnisse finden Sie unter Firebase Test Lab-Ergebnisse analysieren.

Nächster Schritt

In der Google Cloud SDK-Dokumentation finden Sie Informationen zu Testoptionen, die allgemein verfügbar oder in der Betaphase sind.