Te damos la bienvenida a Developer Device Platform Device Run, que te permite ejecutar pruebas en dispositivos Android físicos y virtuales, y en dispositivos iOS físicos en la nube. En esta página, se describen las similitudes entre la ejecución de pruebas de Android y de iOS. Consulta Device Run para Android y Device Run para iOS para conocer los pasos específicos de cada plataforma.
Para usar esta Google Cloud CLI, deberás proporcionar el ID de tu proyecto Google Cloud . Para obtener un resumen de los comandos, consulta gcloud beta
device-run.
Ten en cuenta que estas marcas son obligatorias:
- Dispositivo: Especifica un dispositivo con
--device:--device shiba-35o--device iphonese3-18-4 - Prueba: Especifica el APK o IPA de prueba con
--test:--test /path/to/test.apko--test /path/to/test.ipa
Las siguientes opciones de configuración son comunes para las pruebas de iOS y Android.
Rutas de acceso de entrada y salida de Cloud Storage
- Bucket personalizado de Cloud Storage: Puedes especificar un bucket personalizado de Cloud Storage para las entradas y salidas:
--bucket-name=my-custom-bucketSi no especificas un bucket de Cloud Storage con la marca--bucket-name=, Google Cloud CLI usará un bucket predeterminado llamadoPROJECT_ID-devicerun. - Archivos de entrada: Cuando especificas una ruta de acceso local con las marcas
--test,--additional-appso--xctestrun-file, Google Cloud CLI la copia automáticamente en tu bucket de Cloud Storage engs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/cada vez que ejecutas el comando, dondeBUCKET_NAMEse establece de forma predeterminada enPROJECT_ID-devicerun. - Rutas de acceso a la nube: Debido a que subir archivos grandes puede llevar mucho tiempo, puedes hacer referencia a ellos directamente con sus rutas de acceso
gs://de Cloud Storage para ahorrar tiempo de carga. - Archivos de resultados: Los artefactos de salida se suben a tu bucket de Cloud Storage en
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.
Ejecuciones síncronas y asíncronas
De forma predeterminada, el comando submit es de bloqueo (síncrono). Esperará a que se complete la prueba y, luego, imprimirá una tabla de resumen de los resultados.
Para enviar la sesión y volver inmediatamente después de subir archivos a Cloud Storage, agrega la marca --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
Esto devuelve un ID de sesión de inmediato. Luego, puedes esperar a que se complete con el comando sessions wait:
gcloud beta device-run sessions wait SESSION_ID
El comando se bloqueará hasta que se complete el trabajo.
Varios dispositivos
Para ejecutar las mismas pruebas en varios dispositivos, proporciona la marca --device con varios IDs de dispositivos separados por comas o con varias marcas --device, cada una especificando un ID de dispositivo distinto.
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-34,tokay-36 \
--test ./ANDROID_TESTS.apk
O:
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
O:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
Tiempo de espera de la prueba
Limita la duración de la ejecución de la prueba:
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
El rango válido es de 1m a 1h y el valor predeterminado es 5m.
Versiones de software
Descubre y usa los paquetes de software y las versiones disponibles de AndroidX Test Orchestrator y Apple Xcode, y, luego, inspecciona sus ciclos de vida, versiones compatibles y metadatos antes de configurar las ejecuciones de pruebas.
Primero, enumera todos los paquetes de software disponibles y sus versiones:
gcloud beta device-run software-versions list
Deberías recibir un resultado similar al siguiente:
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
Luego, describe un paquete específico con su ID de recurso exacto de la 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
Deberías recibir un resultado similar al siguiente:
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'
Ahora que sabes qué versiones de software están disponibles, puedes usarlas en tus ejecuciones de prueba con las marcas --orchestrator-version o --xcode-version, de la siguiente manera:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
Consulta Habilita Orchestrator para obtener más información.
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Consulta Device Run para iOS para obtener más información.
Validación de entradas
La plataforma Developer Device intenta validar tus entradas, incluidos los artefactos, y devuelve un ERROR en lugar de PASSED o FAILED cuando encuentra entradas erróneas:
Session [session-94b57778] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 ERROR
Ahora, agrega --full al comando sessions describe para ver más detalles sobre la sesión:
gcloud beta device-run sessions describe --full session-94b57778
Esto genera un resultado similar al siguiente:
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
¿Qué sigue?
Ejecuta una prueba de Android o ejecuta una prueba de iOS con la plataforma de dispositivos para desarrolladores.