Te damos la bienvenida a Developer Device Platform Device Run, que te permite ejecutar pruebas y archivos ejecutables en dispositivos Android físicos y virtuales, y dispositivos iOS físicos en la nube. En esta página, se resumen las capacidades y se describen las similitudes entre la ejecución de pruebas de instrumentación de Android, archivos ejecutables de Android y pruebas de iOS. Consulta Device Run para Android y Device Run para iOS para conocer los pasos específicos de la plataforma.
Si estás migrando de Firebase Test Lab a Developer Device Platform, consulta nuestra guía de migración, la traducción de comandos y marcas, y la habilidad de migración para agentes de IA.
Para usar esta Google Cloud CLI, deberás proporcionar tu Google Cloud proyecto
ID. Para obtener un resumen de los comandos, consulta: gcloud beta
device-run
Funciones clave
Developer Device Platform Device Run es un Google Cloud servicio que te permite
ejecutar paquetes de pruebas automatizadas en dispositivos móviles físicos y virtuales. Diseñado para flujos de trabajo modernos de integración continua y entrega continua (CI/CD), Device Run ofrece control de línea de comandos a través de la Google Cloud CLI (gcloud beta device-run), lo que permite a los equipos ejecutar, administrar y escalar paquetes de pruebas en hardware dedicado y entornos virtuales.
1. Pruebas automatizadas multiplataforma
- Compatibilidad con Android y iOS: Device Run admite frameworks de pruebas integrados, incluidas las pruebas de instrumentación de Android (
.apk), los archivos ejecutables de Android (objetos binarios compilados) y las XCTests de iOS (.ipao.zip). - Segmentación de dispositivos flexible: Segmenta dispositivos físicos o virtuales específicos
que aparecen en el catálogo de dispositivos con identificadores de SO y modelo (p.ej., modelos de Pixel o iPhone) a través de la marca
--device. - Ejecución paralela multidispositivo: Ejecuta paquetes de pruebas idénticos de forma simultánea en varios dispositivos especificando IDs de dispositivos separados por comas o proporcionando varias marcas
--device.
2. Modos y controles de ejecución flexibles
- _Envíos síncronos y asíncronos_: Las ejecuciones de prueba operan de forma síncrona
de forma predeterminada y muestran un resumen cuando se completan. Si agregas la marca
--async, se muestra un ID de sesión de inmediato para la ejecución sin bloqueo, que se puede supervisar más adelante congcloud beta device-run sessions wait. - Tiempos de espera de ejecución personalizados*: Configura los límites de duración de la ejecución con
--instrumentation-timeouto--xctest-timeout. - Reintentos de pruebas inestables: Establece la cantidad máxima de reintentos para las ejecuciones de pruebas inestables
con la marca
--flaky-test-attempts.
3. Administración de versiones de software y dependencias
- Entornos de prueba configurables*: Descubre, inspecciona y selecciona versiones específicas del entorno de software, como AndroidX Test Orchestrator y Apple Xcode , antes de iniciar las ejecuciones de prueba.
- Descubrimiento de versiones: Usa los comandos
gcloud beta device-run software-versions listydescribepara ver los paquetes de software activos, las versiones de SO compatibles, y las especificaciones predeterminadas del entorno de ejecución.
4. Administración de almacenamiento y artefactos
- Integración de Cloud Storage: Las entradas de prueba (APKs, IPAs, apps compatibles) y los artefactos de salida (registros, informes de pruebas) se almacenan en Cloud Storage.
- Flexibilidad de los buckets: Se establece automáticamente como predeterminado un bucket de proyecto llamado
PROJECT_ID-deviceruno se enruta a un bucket personalizado especificado a través de la marca--bucket-name. Tienes el control total de este bucket y deberás quitar su contenido de forma manual cuando ya no sea necesario o configurar la administración automatizada del ciclo de vida en el bucket. Consulta Acerca de la eliminación de objetos para obtener instrucciones. - Rutas de acceso directas a la nube: Haz referencia directamente a las rutas de acceso
gs://existentes para archivos grandes para eliminar la sobrecarga de carga.
5. Funciones avanzadas de pruebas de Android
- Android Test Orchestrator: Aísla la ejecución de pruebas ejecutando cada prueba en
su propia instancia
Instrumentationpara evitar el estado compartido de la app y aislar las fallas de la aplicación. - Fragmentación de pruebas:
- Fragmentación uniforme: Divide de manera uniforme los casos de prueba en una cantidad especificada
de fragmentos (
--sharding-option=uniform). - Fragmentación inteligente: Usa datos históricos de ejecución de pruebas para equilibrar los casos de prueba de forma dinámica en los fragmentos, segmentando una duración total de ejecución específica (
--sharding-option=smart).
- Fragmentación uniforme: Divide de manera uniforme los casos de prueba en una cantidad especificada
de fragmentos (
6. Administración de sesiones y diagnóstico
- Control total de la sesión: Genera listas, describe, filtra o cancela ejecuciones de prueba activas o históricas
con
sessions list,sessions describe, ysessions cancel. - Validación de entrada temprana: Realiza la validación automática en los objetos binarios de prueba enviados y los artefactos de configuración, y muestra detalles explícitos de errores y causas raíz (como desajustes de paquetes de destino) cuando se producen errores.
Configuración principal
Marcas obligatorias
Ten en cuenta que estas marcas son obligatorias:
- Dispositivo: Especifica un dispositivo con
--device:--device shiba-35o--device iphonese3-18-4 - Prueba o ejecutable: Especifica el paquete de prueba con
--test(--test /path/to/test.apko--test /path/to/MyTests.zip) para las ejecuciones de prueba, o especifica el objeto binario o la secuencia de comandos ejecutables con--executable(--executable /path/to/my_executable) para las ejecuciones de archivos ejecutables de Android.
Las siguientes opciones de configuración son comunes en las sesiones de Device Run.
Rutas de acceso de entrada y salida de Cloud Storage
- Bucket personalizado de Cloud Storage: Puedes especificar un bucket personalizado de Cloud Storage
para entradas y salidas:
--bucket-name=my-custom-bucketSi no especificas un bucket de Cloud Storage con la marca--bucket-name=, la Google Cloud CLI usará un bucket predeterminado llamadoPROJECT_ID-devicerun. - Archivos de entrada: Cuando especificas una ruta de acceso local con las marcas
--test,--executable,--apps,--additional-apps,--other-files-to-push, o--xctestrun-file, la Google Cloud CLI la copia automáticamente a 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]/.
Validación de entradas
Developer Device Platform intenta validar tus entradas, incluidos los artefactos, y muestra un ERROR en lugar de PASSED o FAILED cuando encuentra una entrada errónea:
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
Lo que da como resultado 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 o un archivo ejecutable de Android o ejecuta una prueba de iOS con Developer Device Platform.