Ce guide explique comment exécuter un test XCTest iOS à l'aide de la CLI gcloud alpha
device-run et trouver vos résultats dans la console Google Cloud . Il suppose que vous disposez d'un compte et d'un projet Google Cloud .
Si vous migrez de Firebase Test Lab vers Developer Device Platform, consultez notre guide de migration, la traduction des commandes et des options et la compétence de migration pour les agents IA.
Pour utiliser la CLI device-run, vous devez fournir l'ID de votre projet Google Cloud. Consultez gcloud alpha
device-run pour obtenir un résumé des commandes.
Avant de commencer
Ces étapes supposent que vous avez déjà :
- Vous avez créé un projet Google Cloud .
- Configurez Developer Device Platform en suivant le guide de démarrage rapide.
- Vous vous êtes authentifié avec
gclouddans le terminal. - Vous avez consulté la présentation de Device Run pour obtenir des informations générales.
- Vous avez compilé vos tests et les avez compressés dans un fichier ZIP.
Étape 1 : Configurer l'exécution de votre test
Vous pouvez personnaliser l'exécution de votre test à l'aide des options facultatives suivantes (bien qu'au moins une instance de l'option --device soit requise) :
- Plusieurs appareils : spécifiez l'option
--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. - Versions d'Apple Xcode : accédez directement aux versions de Xcode compatibles avec la CLI à l'aide de l'option
--xcode-version, par exemple :--xcode-version=xcode-16-4 - Délai avant 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). - Étiquettes : associez des métadonnées définies par l'utilisateur à la session :
--labels=env=staging,owner=my-team - Paramètres régionaux : définissez les paramètres régionaux de l'appareil sur
--locale=en-US. - Transférer des fichiers vers 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 : extrayez 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 de tests irréguliers : définissez le nombre maximal de tentatives de réexécution des tests irréguliers :
--flaky-test-attempts=3(par défaut, une tentative). - Bucket Cloud Storage personnalisé : spécifiez un bucket Cloud Storage personnalisé pour les entrées et les sorties :
--bucket-name=my-custom-bucket(par défaut :PROJECT_ID-devicerun). - L'importation de fichiers ZIP ou IPA volumineux pouvant prendre du temps, vous pouvez référencer directement vos fichiers à l'aide de leurs chemins d'accès Cloud Storage
gs://pour gagner du temps.
Exécutions synchrones et asynchrones
Par défaut, la commande d'envoi est bloquante (synchrone). Il attendra la fin du test et affichera un tableau récapitulatif des résultats.
Pour envoyer la session et revenir immédiatement après l'importation des fichiers dans Cloud Storage, ajoutez l'option --async :
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
Un ID de session est renvoyé immédiatement. Vous pouvez ensuite attendre qu'elle se termine à l'aide de la commande sessions wait :
gcloud alpha device-run sessions wait SESSION_ID
La commande sera bloquée jusqu'à ce que le job soit terminé.
Plusieurs appareils
Pour exécuter le même test sur plusieurs appareils, fournissez l'option --device avec plusieurs ID d'appareil séparés par une virgule ou avec plusieurs options --device, chacune spécifiant un ID d'appareil distinct.
Données séparées par une virgule
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
Plusieurs indicateurs
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
Délai avant la fin du test
Limitez la durée d'exécution de votre test :
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xctest-timeout=10m
La plage valide est comprise entre 1m et 1h, et la valeur par défaut est 5m.
Versions logicielles
Découvrez et utilisez les packages logiciels et les versions d'Apple Xcode disponibles, et inspectez leurs cycles de vie, leurs versions compatibles et leurs métadonnées avant de configurer les exécutions de test.
Commencez par lister tous les packages logiciels disponibles et leurs versions :
gcloud alpha device-run software-versions list
Vous recevez un résultat semblable à celui-ci :
ID NAME SOFTWARE_TYPE VERSION STATE IS_DEFAULT
androidx-test-orchestrator-1-4-1 AndroidX Test Orchestrator 1.4.1 ANDROIDX_TEST_ORCHESTRATOR 1.4.1 ACTIVE True
androidx-test-orchestrator-1-6-1 AndroidX Test Orchestrator 1.6.1 ANDROIDX_TEST_ORCHESTRATOR 1.6.1 ACTIVE
xcode-16-4 Xcode 16.4 XCODE 16.4 ACTIVE
xcode-26-2 Xcode 26.2 XCODE 26.2 ACTIVE True
Ensuite, décrivez un package spécifique à l'aide de son ID de ressource exact dans la liste :
gcloud alpha device-run software-versions describe xcode-16-4
Vous recevez un résultat semblable à celui-ci :
id: xcode-16-4
lifecycle:
state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:
- '15.0'
- '15.1'
- '15.2'
- '15.4'
- '15.7'
- '16.0'
- '16.1'
- '16.2'
- '16.3'
- '16.5'
- '16.6'
- '18.0'
- '18.3'
- '18.4'
version: '16.4'
Maintenant que vous savez quelles versions logicielles sont disponibles, vous pouvez les utiliser dans vos tests avec l'option --xcode-version, comme suit :
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Étape 2 : Choisir des types d'appareils
La CLI device-run permet d'exécuter des tests iOS 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 alpha 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 savoir comment filtrer cette liste. Pour cibler un appareil spécifique pour l'exécution de votre test, utilisez l'ID correspondant (par exemple, iphonese3-18-4) dans la commande d'envoi.
Étape 3 : 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 empaqueter 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 testez les cibles de test :
- Assurez-vous que la signature de 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 de l'exécuteur de test.
Créez une compilation pour les tests à l'aide de Xcode (Product > Build For > Testing) ou de
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"
Cela génère les produits de compilation sous : ./build/Build/Products
2. Vérifier les produits et les signatures de compilation
Après la compilation, vérifiez que l'application, l'exécuteur et le fichier manifeste .xctestrun ont été générés sous ./build/Build/Products/. Si la signature est locale, vous pouvez vérifier les signatures de bundle à 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 test 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 l'option --test.
Étape 4 : 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 alpha 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 alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
Lorsque l'exécution commence, la 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 5 : Explorer et gérer votre test
Vous pouvez suivre les exécutions actives et gérer les sessions historiques à l'aide de ces commandes :
- Décrire une session : interrogez la progression en direct ou les résultats finaux d'une session :
gcloud alpha 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'accès aux artefacts Cloud Storage. - Lister les sessions : affichez vos exécutions récentes :
gcloud alpha device-run sessions list --limit=10 - Annuler la session : arrêtez une session de test en cours d'exécution :
gcloud alpha device-run sessions cancel SESSION_ID - Annuler l'opération : arrêtez une opération en attente ou active :
gcloud alpha device-run operations cancel OPERATION_ID
Étapes suivantes
Ensuite, recherchez et analysez les journaux.