Bem-vindo ao Developer Device Platform Device Run, que permite executar testes em dispositivos Android físicos e virtuais e dispositivos iOS físicos na nuvem. Esta página descreve as semelhanças entre a execução de testes do Android e do iOS. Consulte Execução no dispositivo para Android e Execução no dispositivo para iOS para etapas específicas da plataforma.
Para usar essa Google Cloud CLI, você precisa fornecer o ID do projeto Google Cloud . Para um resumo dos comandos, consulte: gcloud beta
device-run
Estas flags são obrigatórias:
- Dispositivo: especifique um dispositivo usando
--device:--device shiba-35ou--device iphonese3-18-4 - Teste: especifique o APK ou IPA de teste usando
--test:--test /path/to/test.apkou--test /path/to/test.ipa.
As opções de configuração a seguir são comuns aos testes do Android e do iOS.
Caminhos de entrada e saída do Cloud Storage
- Bucket personalizado do Cloud Storage: é possível especificar um bucket personalizado do Cloud Storage para entradas e saídas:
--bucket-name=my-custom-bucket. Se você não especificar um bucket do Cloud Storage usando a flag--bucket-name=, a Google Cloud CLI usará um bucket padrão chamadoPROJECT_ID-devicerun. - Arquivos de entrada: quando você especifica um caminho local com as flags
--test,--additional-appsou--xctestrun-file, a Google Cloud CLI copia automaticamente para o bucket do Cloud Storage emgs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/sempre que você executa o comando.BUCKET_NAMEtem como padrãoPROJECT_ID-devicerun. - Caminhos da nuvem: como o upload de arquivos grandes pode ser demorado, é possível referenciá-los diretamente usando os caminhos
gs://do Cloud Storage para economizar tempo de upload. - Arquivos de resultados: os artefatos de saída são enviados para o bucket do Cloud Storage em
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.
Execuções síncronas e assíncronas
Por padrão, o comando de envio é bloqueador (síncrono). Ele vai aguardar a conclusão do teste e imprimir uma tabela de resumo dos resultados.
Para enviar a sessão e retornar imediatamente após fazer upload de arquivos para o
Cloud Storage, adicione a 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
Isso retorna um ID de sessão imediatamente. Em seguida, aguarde usando o comando
sessions wait:
gcloud beta device-run sessions wait SESSION_ID
O comando vai bloquear até que o job seja concluído.
Vários dispositivos
Para executar os mesmos testes em vários dispositivos, forneça a flag --device com vários IDs de dispositivos separados por vírgulas ou com várias flags --device, cada uma especificando um ID de dispositivo diferente.
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-34,tokay-36 \
--test ./ANDROID_TESTS.apk
Ou:
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
Ou:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
Testar tempo limite
Limite a duração da execução do teste:
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
O intervalo válido é de 1m a 1h e o padrão é 5m.
Versões de software
Descubra e use os pacotes de software e as versões disponíveis do AndroidX Test Orchestrator e do Apple Xcode, além de inspecionar os ciclos de vida, as versões compatíveis e os metadados antes de configurar as execuções de teste.
Primeiro, liste todos os pacotes de software disponíveis e as versões deles:
gcloud beta device-run software-versions list
Receber uma saída semelhante 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
Em seguida, descreva um pacote específico usando o ID exato do recurso da lista:
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
Receber uma saída semelhante 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'
Agora que você sabe quais versões de software estão disponíveis, é possível usá-las em
execuções de teste com as flags --orchestrator-version ou --xcode-version, assim:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
Consulte Ativar o Orchestrator para mais informações.
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Consulte Device Run para iOS para mais informações.
Validação de entrada
A Developer Device Platform tenta validar suas entradas, incluindo artefatos, e retorna um ERROR em vez de PASSED ou FAILED ao encontrar uma entrada incorreta:
Session [session-94b57778] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 ERROR
Agora adicione --full ao comando sessions describe para ver mais detalhes sobre a sessão:
gcloud beta device-run sessions describe --full session-94b57778
O que resulta em uma saída semelhante a:
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
A seguir
Execute um teste do Android ou um teste do iOS com a plataforma de dispositivo do desenvolvedor.