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à :
- Vous avez créé un projet Google Cloud .
- Configurez la plate-forme Developer Device Platform en suivant le guide de démarrage rapide.
- Authentification avec
gclouddans le terminal. - Consultez la présentation de Device Run pour obtenir des informations générales.
- 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 :
- 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.
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 :
Vérifiez l'app bundle :
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appRésultat attendu :
YourApp.app: valid on diskSi 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.appRé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
--deviceplusieurs fois pour exécuter le même test sur plusieurs appareils simultanément :--device iphonese3-18-4 --device iphonese3-26-3ou--device iphonese3-18-4,iphonese3-26-3. - Applications supplémentaires : installez un ou plusieurs packages
.ipasupplémentaires avant de lancer le test à l'aide de--additional-apps:--additional-apps=/path/to/AdditionalApp.ipa - Fichier
.xctestrunpersonnalisé : 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 entre1met1h, et la valeur par défaut est5m). - 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 estPROJECT_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_IDAjoutez--fullpour 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.