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 (.ipao.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
--asyncrestituisce immediatamente un ID sessione per l'esecuzione non bloccante, che può essere monitorata 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 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 listedescribeper 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-devicerunoppure 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
Instrumentationper 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).
- Suddivisione uniforme: suddivide uniformemente gli scenari di test in un numero specificato
di shard (
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, esessions 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-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 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-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 bucket Cloud Storage ings://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ogni volta che esegui il comando, doveBUCKET_NAMEè impostato per impostazione predefinita suPROJECT_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.