Panoramica dell'esecuzione del dispositivo della piattaforma del dispositivo per sviluppatori

Ti diamo il benvenuto in Esecuzione di test su dispositivi della piattaforma Developer Device, che ti consente di eseguire test su dispositivi Android fisici e virtuali e su dispositivi iOS fisici nel cloud. Questa pagina descrive i punti in comune tra l'esecuzione di test Android e iOS. Consulta Device Run per Android e Device Run per iOS per i passaggi specifici per la piattaforma.

Per utilizzare questa Google Cloud CLI, devi fornire l'ID del tuo Google Cloud progetto. Per un riepilogo dei comandi, consulta: gcloud beta device-run

Tieni presente che questi flag sono obbligatori:

  • Dispositivo: specifica un dispositivo utilizzando --device: --device shiba-35 o --device iphonese3-18-4
  • Test: specifica l'APK o l'IPA di test utilizzando --test: --test /path/to/test.apk o --test /path/to/test.ipa

Le seguenti opzioni di configurazione sono comuni ai test Android e iOS.

Percorsi Cloud Storage di input e output

  • Bucket Cloud Storage personalizzato: puoi specificare un bucket Cloud Storage personalizzato per input e output: --bucket-name=my-custom-bucket Se non specifichi un bucket Cloud Storage utilizzando il flag --bucket-name=, Google Cloud CLI utilizzerà un bucket predefinito denominato PROJECT_ID-devicerun.
  • File di input: quando specifichi un percorso locale con i flag --test, --additional-apps o --xctestrun-file, Google Cloud CLI lo copia automaticamente nel bucket Cloud Storage in gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ ogni volta che esegui il comando, dove BUCKET_NAME è impostato per impostazione predefinita su PROJECT_ID-devicerun.
  • Percorsi Cloud: poiché il caricamento di file di grandi dimensioni può richiedere molto tempo, puoi farvi riferimento direttamente utilizzando i percorsi gs:// di Cloud Storage per risparmiare tempo di caricamento.
  • File dei risultati: gli artefatti di output vengono caricati nel bucket Cloud Storage in gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.

Esecuzioni sincrone e asincrone

Per impostazione predefinita, il comando di invio è bloccante (sincrono). Attenderà il completamento del test e stamperà una tabella riepilogativa dei risultati.

Per inviare la sessione e tornare immediatamente dopo aver caricato i file in Cloud Storage, aggiungi il flag --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

Restituisce immediatamente un ID sessione. Puoi quindi attendere che venga eseguito utilizzando il comando sessions wait:

gcloud beta device-run sessions wait SESSION_ID

Il comando verrà bloccato fino al completamento del job.

Più dispositivi

Per eseguire gli stessi test su più dispositivi, fornisci il flag --device con più ID dispositivo separati da virgole o con più flag --device, ognuno che specifica un ID dispositivo distinto.

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34,tokay-36 \
  --test ./ANDROID_TESTS.apk

Oppure:

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

Oppure:

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

Timeout test

Limita la durata dell'esecuzione del 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

L'intervallo valido è compreso tra 1m e 1h e il valore predefinito è 5m.

Versioni software

Scopri e utilizza i pacchetti software e le versioni disponibili di AndroidX Test Orchestrator e Apple Xcode e ispeziona i relativi cicli di vita, le versioni supportate e i metadati prima di configurare le esecuzioni dei test.

Innanzitutto, elenca tutti i pacchetti software disponibili e le relative versioni:

gcloud beta device-run software-versions list

Ricezione di un output simile a:

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

Quindi, descrivi un pacchetto specifico utilizzando il relativo ID risorsa esatto dall'elenco:

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

Ricezione di un output simile a:

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'

Ora che sai quali versioni del software sono disponibili, puoi utilizzarle nei test con i flag --orchestrator-version o --xcode-version, come segue:

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --orchestrator-version=1.4.1

Per saperne di più, consulta Attivare Orchestrator.

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

Per saperne di più, consulta Device Run per iOS.

Convalida dell'input

Developer Device Platform tenta di convalidare gli input, inclusi gli artefatti, e restituisce un ERROR anziché PASSED o FAILED quando rileva un input errato:

Session [session-94b57778] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   ERROR

Ora aggiungi --full al comando sessions describe per visualizzare ulteriori dettagli sulla sessione:

gcloud beta device-run sessions describe --full session-94b57778

che produce un output simile al seguente:

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

Passaggi successivi

Esegui un test Android o esegui un test iOS con la piattaforma del dispositivo per sviluppatori.