Bienvenue dans Developer Device Platform Device Run, qui vous permet d'exécuter des tests sur des appareils Android physiques et virtuels, ainsi que sur des appareils iOS physiques dans le cloud. Cette page décrit les points communs entre l'exécution de tests Android et iOS. Consultez Exécuter sur un appareil pour Android et Exécuter sur un appareil pour iOS pour connaître les étapes spécifiques à chaque plate-forme.
Pour utiliser cette Google Cloud CLI, vous devrez fournir l'ID de votre projet Google Cloud . Pour obtenir un récapitulatif des commandes, consultez gcloud beta
device-run.
Notez que ces options sont obligatoires :
- Appareil : spécifiez un appareil à l'aide de
--device:--device shiba-35ou--device iphonese3-18-4. - Test : spécifiez l'APK ou l'IPA de test à l'aide de
--test:--test /path/to/test.apkou--test /path/to/test.ipa.
Les options de configuration suivantes sont communes aux tests Android et iOS.
Chemins d'entrée et de sortie Cloud Storage
- Bucket Cloud Storage personnalisé : vous pouvez spécifier un bucket Cloud Storage personnalisé pour les entrées et les sorties :
--bucket-name=my-custom-bucketSi vous ne spécifiez pas de bucket Cloud Storage à l'aide du flag--bucket-name=, la Google Cloud CLI utilisera un bucket par défaut nomméPROJECT_ID-devicerun. - Fichiers d'entrée : lorsque vous spécifiez un chemin d'accès local avec les indicateurs
--test,--additional-appsou--xctestrun-file, la Google Cloud CLI le copie automatiquement dans votre bucket Cloud Storage sousgs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/chaque fois que vous exécutez la commande, oùBUCKET_NAMEest défini par défaut surPROJECT_ID-devicerun. - Chemins Cloud : comme l'importation de fichiers volumineux peut prendre du temps, vous pouvez y faire référence directement à l'aide de leurs chemins
gs://Cloud Storage pour gagner du temps. - Fichiers de résultats : les artefacts de sortie sont importés dans votre bucket Cloud Storage sous
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.
Exécutions synchrones et asynchrones
Par défaut, la commande d'envoi est bloquante (synchrone). Il attendra la fin du test et imprimera un tableau récapitulatif des résultats.
Pour envoyer la session et revenir immédiatement après avoir importé des fichiers dans Cloud Storage, ajoutez l'option --async :
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--async
iOS
gcloud beta 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 l'attendre à l'aide de la commande sessions wait :
gcloud beta device-run sessions wait SESSION_ID
La commande sera bloquée jusqu'à ce que le job soit terminé.
Plusieurs appareils
Pour exécuter les mêmes tests sur plusieurs appareils, fournissez l'indicateur --device avec plusieurs ID d'appareils séparés par des virgules ou avec plusieurs indicateurs --device, chacun spécifiant un ID d'appareil distinct.
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-34,tokay-36 \
--test ./ANDROID_TESTS.apk
ou
gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--device tokay-36 \
--test ./ANDROID_TESTS.apk
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
ou
gcloud beta 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 :
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--instrumentation-timeout=10m
iOS
gcloud beta 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 disponibles d'AndroidX Test Orchestrator et d'Apple Xcode, et inspectez leurs cycles de vie, leurs versions compatibles et leurs métadonnées avant de configurer les séries de tests.
Commencez par lister tous les packages logiciels disponibles et leurs versions :
gcloud beta device-run software-versions list
Vous obtenez 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
Décrivez ensuite un package spécifique en utilisant son ID de ressource exact dans la liste :
Android
gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1
iOS
gcloud beta device-run software-versions describe xcode-16-4
Vous obtenez un résultat semblable à celui-ci :
Android
id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1
iOS
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 connaissez les versions logicielles disponibles, vous pouvez les utiliser dans vos tests avec les indicateurs --orchestrator-version ou --xcode-version, comme suit :
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
Pour en savoir plus, consultez Activer Orchestrator.
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Pour en savoir plus, consultez Device Run for iOS.
Validation des entrées
La plate-forme Developer Device tente de valider vos entrées, y compris les artefacts, et renvoie un ERROR plutôt qu'un PASSED ou un FAILED lorsqu'elle rencontre une entrée erronée :
Session [session-94b57778] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 ERROR
Ajoutez maintenant --full à la commande sessions describe pour afficher plus de détails sur la session :
gcloud beta device-run sessions describe --full session-94b57778
Le résultat ressemble à ceci :
name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
requirement:
deviceId: mediumphone-arm-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://user-test1-devicerun/automation/sessions
sessionReport:
endTime: '2026-09-16T18:55:49.721Z'
id: ed681f23-669b-4464-8a93-b28456e58136
jobReports:
- displayName: job-000
endTime: '2026-09-16T18:55:45.839Z'
executionReports:
- displayName: execution-000
endTime: '2026-09-16T18:55:46.694Z'
id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
result:
cause:
summary:
message: The instrumentation target package does not match any of the
installable packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '1970-01-01T00:00:00Z'
status:
statusType: PENDING
id: 953b5106-3c20-40f0-aceb-18af89cd1b83
result:
cause:
summary:
message: The instrumentation target package does not match any of the installable
packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '2026-09-16T18:55:31.651Z'
status:
statusType: DONE
result:
resultType: ERROR
startTime: '2026-09-16T18:55:24.442Z'
status:
statusType: DONE
Étapes suivantes
Exécutez un test Android ou un test iOS avec la plate-forme Developer Device.