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

Ti diamo il benvenuto in Developer Device Platform Device Run, 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 caratteristiche comuni all'esecuzione di test di strumentazione Android, eseguibili Android e test iOS. Per i passaggi specifici della piattaforma, consulta Device Run per Android e Device Run per iOS.

Se stai eseguendo la migrazione da Firebase Test Lab alla piattaforma per sviluppatori, consulta la nostra guida alla migrazione, la traduzione di comandi e flag e la competenza di migrazione per gli agenti AI.

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

Funzionalità chiave

Developer Device Platform Device Run è un Google Cloud servizio che consente di eseguire suite di test automatizzate su dispositivi mobile 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 automatizzati multipiattaforma

  • Supporto di Android e iOS: Device Run supporta framework di test integrati, inclusi test di strumentazione Android (.apk), eseguibili Android (binari compilati) e test XCTest iOS (.ipa o .zip).
  • Targeting per dispositivo flessibile: indirizza dispositivi fisici o dispositivi virtuali specifici elencati nel catalogo dei dispositivi utilizzando gli identificatori del sistema operativo e del modello (ad es. modelli Pixel o iPhone) tramite il flag --device.
  • Esecuzione parallela su più dispositivi: esegui contemporaneamente suite di test identiche 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 vengono eseguite in modo sincrono e viene visualizzato un riepilogo al termine. L'aggiunta del flag --async restituisce immediatamente un ID sessione per l'esecuzione non bloccante, che può essere monitorata 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 tentativi per le esecuzioni del test instabile utilizzando il flag --flaky-test-attempts.

3. Gestione delle versioni software e delle dipendenze

  • Ambienti di test configurabili*: prima di avviare le esecuzioni dei test, scopri, ispeziona e seleziona versioni specifiche dell'ambiente software , come AndroidX Test Orchestrator e Apple Xcode.
  • Rilevamento delle versioni: 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 di spazio di archiviazione e 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 oppure viene indirizzato a un bucket personalizzato specificato tramite il flag --bucket-name. Hai il controllo completo di questo bucket e dovrai rimuovere manualmente i suoi contenuti quando non sono più necessari o configurare la gestione automatizzata del ciclo di vita del bucket. Per istruzioni, consulta Informazioni sull'eliminazione degli oggetti.
  • Percorsi cloud diretti: fai riferimento direttamente ai percorsi gs:// esistenti per i file di grandi dimensioni per eliminare il sovraccarico di caricamento.

5. Funzionalità avanzate di test Android

  • Android Test Orchestrator: isola l'esecuzione dei test eseguendo ogni test nella propria istanza Instrumentation per impedire lo stato dell'app condiviso e isolare gli arresti anomali dell'applicazione.
  • Sharding dei test:
    • Suddivisione uniforme: suddivide uniformemente gli scenari di test in un numero specificato di shard (--sharding-option=uniform).
    • Suddivisione intelligente: 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 totale di esecuzione specifica (--sharding-option=smart).

6. Gestione e diagnostica delle sessioni

  • Controllo completo delle session/i: elenca, descrivi, filtra o annulla le esecuzioni di test attive o storiche utilizzando sessions list, sessions describe, e sessions cancel.
  • Convalida anticipata dell'input: esegue la convalida automatica dei binari di test e degli artefatti di configurazione inviati, mostrando i dettagli espliciti degli errori e le cause principali (ad esempio, mancata corrispondenza 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 dei test oppure specifica il 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 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, --executable, --apps, --additional-apps, --other-files-to-push 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 di 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 input errati:

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

Il risultato è 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 o un eseguibile Android oppure esegui un test iOS con la piattaforma per sviluppatori.