Te damos la bienvenida a Device Run de Developer Device Platform, que te permite ejecutar pruebas y archivos ejecutables en dispositivos Android físicos y virtuales, y en dispositivos iOS físicos en la nube. En esta página, se resumen las funciones y se describen los puntos en común entre la ejecución de pruebas de instrumentación de Android, ejecutables de Android y pruebas de XCTest de iOS.
Si migras 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 Google Cloud CLI, deberás proporcionar el ID del proyecto de Google Cloud . Para obtener un resumen de los comandos, consulta gcloud beta
device-run.
Funciones clave
Device Run de Developer Device Platform es un servicio de Google Cloud que te permite
ejecutar paquetes de pruebas automatizadas en dispositivos móviles físicos y virtuales. Creado
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 Google Cloud CLI
(gcloud beta device-run), lo que permite que los equipos ejecuten, administren y escalen 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 ejecutables de Android (binarios compilados) y las XCTests de iOS (.ipao.zip). - Segmentación flexible por dispositivo: Segmenta dispositivos físicos o virtuales específicos
que se indican 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 los ID de dispositivo separados por comas o proporcionando varios parámetros
--device.
2. Modos y controles de ejecución flexibles
- Envíos síncronos y asíncronos: Las ejecuciones de pruebas se realizan de forma síncrona
de forma predeterminada y muestran un resumen cuando se completan. Agregar la marca
--asyncdevuelve 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 y dependencias de software
- Entornos de pruebas configurables*: Descubre, inspecciona y selecciona versiones específicas de entornos de software, como AndroidX Test Orchestrator y Apple Xcode, antes de iniciar las ejecuciones de pruebas.
- Detección 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 de entorno de ejecución predeterminadas.
4. Administración de almacenamiento y artefactos
- Integración de Cloud Storage: Las entradas de prueba (APK, IPA y apps de apoyo) y los artefactos de salida (registros e informes de pruebas) se almacenan en Cloud Storage.
- Flexibilidad de buckets: De forma predeterminada, se establece automáticamente en 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 lo necesites o, de lo contrario, 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 a las rutas de acceso de
gs://existentes directamente para archivos grandes y, así, 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 de
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 entre los fragmentos, con el objetivo de lograr 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 y diagnóstico de sesiones
- Control total de la sesión: Enumera, describe, filtra o cancela ejecuciones de pruebas activas o históricas con
sessions list,sessions describeysessions cancel. - Validación temprana de entradas: Realiza una validación automática de los objetos binarios de prueba y los artefactos de configuración enviados, y muestra detalles explícitos de los errores y las causas raíz (como discrepancias en los 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 la secuencia de comandos o el objeto binario ejecutable con--executable(--executable /path/to/my_executable) para las ejecuciones de 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 de Cloud Storage personalizado: Puedes especificar un bucket de Cloud Storage personalizado 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,--executable,--apps,--additional-apps,--other-files-to-pusho--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, en el queBUCKET_NAMEse establece de forma predeterminada enPROJECT_ID-devicerun. - Rutas de acceso de Cloud: Debido a que subir archivos grandes puede llevar mucho tiempo, puedes
hacer referencia a ellos directamente con sus rutas de acceso de Cloud Storage
gs://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
devuelve 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
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 instrumentación de Android, un ejecutable de Android o una XCTest de iOS con Developer Device Platform.