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

Ti diamo il benvenuto in Device Run di Developer Device Platform, che ti consente di eseguire test ed eseguibili su dispositivi Android fisici e virtuali e su dispositivi iOS fisici nel cloud. Questa pagina riassume le funzionalità e descrive le analogie tra l'esecuzione di test di instrumentazione Android, eseguibili Android e test XCTest iOS.

Se stai eseguendo la migrazione da Firebase Test Lab a Developer Device Platform, consulta la nostra guida alla migrazione, la traduzione di comandi e flag e la skill di migrazione per gli agenti AI.

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

--helpgcloud

Funzionalità chiave

Device Run di Developer Device Platform è un servizio Google Cloud che ti consente di eseguire suite di test automatizzati su dispositivi mobili fisici e virtuali. Progettato per i moderni flussi di lavoro di integrazione continua e distribuzione continua (CI/CD), Device Run offre il controllo da riga di comando tramite Google Cloud CLI (gcloud beta device-run), consentendo ai team di eseguire, gestire e scalare le suite di test su hardware dedicato e ambienti virtuali.

1. Test automatici multipiattaforma

  • Supporto di Android e iOS: Device Run supporta framework di test integrati, tra cui test di instrumentazione Android (.apk), eseguibili Android (binari compilati) e XCTest iOS (.ipa o .zip).
  • Targeting flessibile per dispositivo: scegli come target dispositivi fisici o virtuali specifici elencati nel Catalogo dei dispositivi utilizzando gli identificatori di sistema operativo e modello (ad es. modelli Pixel o iPhone) tramite il flag --device.
  • Esecuzione parallela su più dispositivi: esegui suite di test identiche contemporaneamente su più dispositivi specificando gli ID dispositivo separati da virgole o fornendo più flag --device.

2. Modalità e controlli di esecuzione flessibili

  • Invii sincroni e asincroni: per impostazione predefinita, le esecuzioni dei test operano in modo sincrono, mostrando un riepilogo al termine. L'aggiunta del flag --async restituisce immediatamente un ID sessione per l'esecuzione non bloccante, che può essere monitorato in un secondo momento utilizzando gcloud beta device-run sessions wait.
  • Timeout di esecuzione personalizzati*: configura i limiti di durata dell'esecuzione con --instrumentation-timeout o --xctest-timeout.
  • Nuovi tentativi di test instabili: imposta il numero massimo di nuovi tentativi per le esecuzioni dei test instabili utilizzando il flag --flaky-test-attempts.

3. Gestione delle versioni software e delle dipendenze

  • Ambienti di test configurabili*: scopri, ispeziona e seleziona versioni specifiche dell'ambiente software, come AndroidX Test Orchestrator e Apple Xcode, prima di avviare le esecuzioni dei test.
  • Rilevamento della versione: utilizza i comandi gcloud beta device-run software-versions list e describe per visualizzare i pacchetti software attivi, le versioni del sistema operativo supportate e le specifiche di runtime predefinite.

4. Gestione dello spazio di archiviazione e degli artefatti

  • Integrazione di Cloud Storage: gli input di test (APK, IPA, app di supporto) e gli artefatti di output (log, report di test) vengono archiviati in Cloud Storage.
  • Flessibilità dei bucket: per impostazione predefinita, viene utilizzato automaticamente un bucket di progetto denominato PROJECT_ID-devicerun o viene eseguito il routing a un bucket personalizzato specificato tramite il flag --bucket-name. Hai il controllo completo di questo bucket e dovrai rimuoverne manualmente i contenuti quando non saranno più necessari o configurare la gestione automatica del ciclo di vita del bucket. Per istruzioni, consulta Informazioni sull'eliminazione di oggetti.
  • Percorsi cloud diretti: fai riferimento direttamente ai percorsi gs:// esistenti per i file di grandi dimensioni per eliminare l'overhead di caricamento.

5. Funzionalità di test avanzate di Android

  • Android Test Orchestrator: isola l'esecuzione dei test eseguendo ogni test nella propria istanza Instrumentation per evitare lo stato dell'app condiviso e isolare gli arresti anomali dell'applicazione.
  • Sharding dei test:
    • Sharding uniforme: suddivide in modo uniforme gli scenari di test in un numero specificato di shard (--sharding-option=uniform).
    • Sharding smart: utilizza i dati storici di esecuzione dei test per bilanciare dinamicamente gli scenari di test tra gli shard, con l'obiettivo di raggiungere una durata di esecuzione totale specifica (--sharding-option=smart).

6. Gestione e diagnostica delle sessioni

  • Controllo completo della sessione: elenca, descrivi, filtra o annulla le esecuzioni di test attive o storiche utilizzando sessions list, sessions describe e sessions cancel.
  • Convalida anticipata degli input: esegue la convalida automatica dei file binari di test e degli artefatti di configurazione inviati, mostrando dettagli espliciti sugli errori e sulle cause principali (ad esempio, mancate corrispondenze dei pacchetti di destinazione) quando si verificano errori.

Impostazioni di base

Flag obbligatori

Tieni presente che questi flag sono obbligatori:

  • Dispositivo: specifica un dispositivo utilizzando --device: --device shiba-35 o --device iphonese3-18-4
  • Test o eseguibile: specifica il pacchetto di test utilizzando --test (--test /path/to/test.apk o --test /path/to/MyTests.zip) per le esecuzioni di test oppure specifica il file binario o lo script eseguibile utilizzando --executable (--executable /path/to/my_executable) per le esecuzioni di eseguibili Android.

Le seguenti opzioni di configurazione sono comuni a tutte le sessioni di Device Run.

Percorsi di input e output di Cloud Storage

  • Bucket Cloud Storage personalizzato: puoi specificare un bucket Cloud Storage personalizzato per gli input e gli 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, --executable, --apps, --additional-apps, --other-files-to-push o --xctestrun-file, Google Cloud CLI lo copia automaticamente nel tuo bucket Cloud Storage in gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ ogni volta che esegui il comando, dove BUCKET_NAME viene impostato per impostazione predefinita su PROJECT_ID-devicerun.
  • Percorsi cloud: poiché il caricamento di file di grandi dimensioni può richiedere molto tempo, puoi fare riferimento direttamente ai file utilizzando i relativi percorsi Cloud Storage gs:// 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]/.

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

L'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 di instrumentazione Android, un eseguibile Android o un XCTest iOS con Developer Device Platform.