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 (.ipao.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
--asyncrestituisce immediatamente un ID sessione per l'esecuzione non bloccante, che può essere monitorato in un secondo momento utilizzandogcloud beta device-run sessions wait. - Timeout di esecuzione personalizzati*: configura i limiti di durata dell'esecuzione con
--instrumentation-timeouto--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 listedescribeper 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-deviceruno 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
Instrumentationper 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).
- Sharding uniforme: suddivide in modo uniforme gli scenari di test in un numero specificato di shard (
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 describeesessions 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-35o--device iphonese3-18-4 - Test o eseguibile: specifica il pacchetto di test utilizzando
--test(--test /path/to/test.apko--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-bucketSe non specifichi un bucket Cloud Storage utilizzando il flag--bucket-name=, Google Cloud CLI utilizzerà un bucket predefinito denominatoPROJECT_ID-devicerun. - File di input: quando specifichi un percorso locale con i flag
--test,--executable,--apps,--additional-apps,--other-files-to-pusho--xctestrun-file, Google Cloud CLI lo copia automaticamente nel tuo bucket Cloud Storage ings://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ogni volta che esegui il comando, doveBUCKET_NAMEviene impostato per impostazione predefinita suPROJECT_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.