Exécution d'un appareil Developer Device Platform pour iOS

Ce guide explique comment exécuter un XCTest iOS à l'aide de la CLI gcloud beta device-run et trouver vos résultats dans la console Google Cloud . Nous partons du principe que vous disposez d'un compte et d'un projet Google Cloud .

Pour utiliser la CLI device-run, vous devez fournir l'ID de votre projet Google Cloud. Pour obtenir un récapitulatif des commandes, consultez gcloud beta device-run.

Avant de commencer

Ces étapes supposent que vous avez déjà :

  1. Vous avez créé un projet Google Cloud .
  2. Configurez la plate-forme Developer Device Platform en suivant le guide de démarrage rapide.
  3. Authentification avec gcloud dans le terminal.
  4. Consultez la présentation de Device Run pour obtenir des informations générales.
  5. Vous avez compilé vos tests et les avez regroupés dans un fichier ZIP.

Étape 1 : Choisir des types d'appareils

À l'aide de la CLI device-run, les tests iOS peuvent être exécutés sur les appareils physiques disponibles. Pour afficher la liste complète des appareils disponibles, consultez le catalogue d'appareils interactif ou exécutez la commande suivante :

gcloud beta device-run devices list

Exemple de résultat :

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

Consultez le catalogue d'appareils pour découvrir comment filtrer cette liste. Pour cibler un appareil spécifique pour l'exécution de vos tests, utilisez son ID correspondant (par exemple, iphonese3-18-4) dans la commande d'envoi.

Étape 2 : Préparer et empaqueter votre XCTest

Avant d'exécuter vos tests, vous devez les compiler, vous assurer qu'ils sont signés, vérifier les signatures de code et regrouper les artefacts obtenus dans un fichier ZIP contenant votre configuration .xctestrun et les bundles de test de l'application.

1. Créer vos tests pour les appareils iOS physiques

Ouvrez votre projet dans Xcode, puis compilez votre application et les cibles de test pour les tests :

  1. Assurez-vous que la signature du code est correctement configurée dans Xcode (en spécifiant un profil de provisionnement et une identité de développeur valides) pour la cible de l'application et la cible du programme d'exécution des tests.
  2. Compilez pour les tests à l'aide d'Xcode (Product > Build For > Testing) ou avec xcodebuild.

    Pour un espace de travail :

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

    Pour un projet autonome :

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

Les produits de compilation sont générés sous : ./build/Build/Products

2. Vérifier les produits et les signatures de compilation

Après la compilation, vérifiez que l'application, le programme d'exécution et le fichier manifeste .xctestrun ont été générés sous ./build/Build/Products/. Si vous avez signé le bundle en local, vous pouvez vérifier les signatures à l'aide de codesign :

  1. Vérifiez l'app bundle :

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

    Résultat attendu : YourApp.app: valid on disk

  2. Si vous exécutez un XCUITest, vérifiez également le bundle du lanceur de test :

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

    Résultat attendu : YourApp-Runner.app: valid on disk

3. Créer l'archive ZIP

Compressez le répertoire Debug-iphoneos et le fichier .xctestrun situés dans le dossier des produits de sortie de compilation dans une seule archive ZIP.

Exécutez la commande suivante à partir du répertoire des produits de compilation :

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

Cette opération crée le MyTests.zip empaqueté qui est prêt à être utilisé avec le flag --test.

Étape 3 : Exécuter votre XCTest

Notez que ces options sont obligatoires :

  • Appareil : spécifiez un appareil à l'aide de --device : --device iphonese3-18-4
  • Test : spécifiez le fichier ZIP de test à l'aide de --test : --test ./MyTests.zip

Pour exécuter votre XCTest, utilisez la commande gcloud beta device-run sessions submit xctest. Vous devez fournir le fichier ZIP de test (MyTests.zip) compilé à l'étape précédente.

Pour exécuter une session de test de base :

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

Lorsque l'exécution commence, l'interface CLI affiche l'ID de session créé et la destination Cloud Storage où les résultats seront stockés :

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

Étape 4 : Configurer l'exécution du test

Vous pouvez personnaliser l'exécution de vos tests à l'aide des options facultatives suivantes (au moins une instance de l'option --device est requise) :

  • Plusieurs appareils : spécifiez l'indicateur --device plusieurs fois pour exécuter le même test sur plusieurs appareils simultanément : --device iphonese3-18-4 --device iphonese3-26-3 ou --device iphonese3-18-4,iphonese3-26-3.
  • Applications supplémentaires : installez un ou plusieurs packages .ipa supplémentaires avant de lancer le test à l'aide de --additional-apps : --additional-apps=/path/to/AdditionalApp.ipa
  • Fichier .xctestrun personnalisé : transmettez un fichier de configuration personnalisé avec --xctestrun-file : --xctestrun-file=/path/to/CustomTests.xctestrun
  • Délai d'expiration du test : limitez la durée d'exécution : --xctest-timeout=10m (la plage valide est comprise entre 1m et 1h, et la valeur par défaut est 5m).
  • Libellés : associez des métadonnées définies par l'utilisateur à la session : --labels=env=staging,owner=my-team
  • Transférer des fichiers sur l'appareil : transférez des fichiers vers le conteneur de données de l'application avant l'exécution du test : --other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt
  • Extraire des fichiers de l'appareil : extraire des fichiers du conteneur de données de l'application après l'exécution du test : --paths-to-pull=com.example.app:/Documents/output.txt
  • Nouvelles tentatives pour les tests instables : définissez le nombre maximal de tentatives pour relancer les tests instables : --flaky-test-attempts=3 (la valeur par défaut est de 1 tentative).
  • Bucket Cloud Storage personnalisé : spécifiez un bucket Cloud Storage personnalisé pour les entrées et les sorties : --bucket-name=my-custom-bucket (la valeur par défaut est PROJECT_ID-devicerun).
  • Étant donné que l'importation de fichiers ZIP ou IPA volumineux peut prendre du temps, vous pouvez faire directement référence à vos fichiers à l'aide de leurs chemins gs:// Cloud Storage pour gagner du temps.

Étape 5 : Explorer et gérer votre série de tests

Vous pouvez suivre les exécutions actives et gérer les sessions historiques à l'aide des commandes suivantes :

  • Décrire la session : interrogez la progression en direct ou les résultats finaux d'une session : gcloud beta device-run sessions describe SESSION_ID Ajoutez --full pour afficher tous les détails, y compris les allocations d'appareils, les ID d'exécution et les chemins d'artefacts Cloud Storage.
  • Lister les sessions : affichez vos dernières exécutions : gcloud beta device-run sessions list --limit=10
  • Annuler la session : arrêtez une session de test en cours : gcloud beta device-run sessions cancel SESSION_ID
  • Annuler l'opération : arrêtez une opération en attente ou en cours : gcloud beta device-run operations cancel OPERATION_ID.

Étapes suivantes

Ensuite, recherchez et analysez les journaux.