Présentation de l'exécution des appareils sur la plate-forme Developer Device

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-35 ou --device iphonese3-18-4.
  • Test : spécifiez l'APK ou l'IPA de test à l'aide de --test : --test /path/to/test.apk ou --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-bucket Si 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-apps ou --xctestrun-file, la Google Cloud CLI le copie automatiquement dans votre bucket Cloud Storage sous gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ chaque fois que vous exécutez la commande, où BUCKET_NAME est défini par défaut sur PROJECT_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.