La Plataforma de dispositivos para desarrolladores (DDP) reemplaza la consola heredada de Firebase Test Lab y los flujos de trabajo de la CLI de Test Lab con una CLI de pruebas unificada, de alto rendimiento y segura, centrada enGoogle Cloud: gcloud beta device-run
En esta guía, se proporcionan traducciones de líneas de comandos y asignaciones de marcas de Test Lab (o Flank) a DDP. Usa esta guía para migrar tus pruebas de forma manual. Consulta Migra de Firebase Test Lab a Developer Device Platform para obtener información sobre las herramientas de automatización, los beneficios, las diferencias clave y las sugerencias de migración.
Migración de fragmentación
DDP moderniza las configuraciones de fragmentación reemplazando de forma nativa la fragmentación inteligente compleja basada en Cloud Storage de Flank y la fragmentación uniforme de Test Lab.
Fragmentación uniforme
- Establece
--sharding-option=uniform. Establece
--uniform-sharding-count={count}(de 1 a 20 para dispositivos físicos y de 1 a 200 para dispositivos virtuales).Firebase Test Lab heredado:
--num-uniform-shards {N}CLI de DDP:
--sharding-option=uniform --uniform-sharding-count={N}
Fragmentación inteligente
- Establece
--sharding-option=smart. - Establece
--smart-sharding-target-duration={duration}(p.ej.,2m,10m,1h; rango válido: de2ma1h). - Establece
--smart-sharding-record-name={record_name}(apunta al registro de seguimiento de YAML dentro de--bucket-nameenautomation/smart-sharding/). - Establece
--smart-sharding-max-shard-count={max_count}(límite máximo opcional: de 0 a 20 para dispositivos físicos y de 0 a 200 para dispositivos virtuales).
Usa metadatos históricos de sincronización de 30 días:
Legacy Flank:
max-test-shards: 10 shard-time: 120 smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yamlCLI de DDP:
--sharding-option=smart \ --smart-sharding-max-shard-count=10 \ --smart-sharding-target-duration=2m \ --smart-sharding-record-name=timing-record \ --bucket-name=my-bucket
Configuración declarativa de YAML (--flags-file)
Para configuraciones complejas o equipos que prefieren mantener archivos con control de versiones en lugar de comandos largos de la terminal, gcloud proporciona un preprocesador de argumentos --flags-file universal (consulta $ gcloud topic flags-file):
Android
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
iOS
gcloud beta device-run sessions submit xctest --flags-file=device-run-flags.yaml
A continuación, se muestra un ejemplo que demuestra marcas de diccionario y listas con varios valores:
Android
# device-run-flags.yaml
--device:
- mediumphone-arm-32
- shiba-36
--apps:
- app-debug.apk
- test-helper.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
--paths-to-pull:
- /sdcard/screenshots
- /sdcard/coverage.ec
--additional-test-options:
coverage: "true"
clearPackageData: "true"
iOS
# device-run-flags.yaml
--device:
- iphonese3-18-4
- iphone16pro-18-3
--test: MyTests.zip
--additional-apps:
- helper-app.ipa
--xcode-version: '16.4'
--xctest-timeout: 15m
--other-files-to-push:
/local/path/test-config.json: com.example.app:/Documents/test-config.json
--paths-to-pull:
- com.example.app:/Documents/screenshots
--labels:
env: staging
team: mobile-qa
Ejemplos de traducción de comandos de extremo a extremo
Consulta estas traducciones estándar y complejas para ver ejemplos concretos.
Ejemplo: Ejecuta una prueba de instrumentación estándar
Firebase CLI heredada:
gcloud firebase test android run \
--app=app-debug.apk \
--test=app-debug-androidTest.apk \
--device model=shiba,version=36 \
--timeout=5m \
--num-flaky-test-attempts=2 \
--directories-to-pull=/sdcard/screenshots \
--environment-variables key=value
Traducción de la CLI de DDP:
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--instrumentation-timeout=5m \
--flaky-test-attempts=3 \
--paths-to-pull=/sdcard/screenshots \
--additional-test-options key=value
Ejemplo: Migra una configuración de YAML compleja de flank
Configuración heredada de Flank:
app: app-debug.apk
test: app-debug-androidTest.apk
device:
- model: shiba
version: 36
shard-time: 120
smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yaml
Traducción de la CLI de DDP:
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--bucket-name=my-bucket \
--sharding-option=smart \
--smart-sharding-target-duration=2m \
--smart-sharding-record-name=timing-record
Recuperación de resultados y posterior a la ejecución
Dado que DDP no se lanza con una IU web gráfica (como la consola de Firebase heredada), los desarrolladores deben administrar, describir e inspeccionar los resultados directamente con la CLI o las APIs de REST programáticas:
# 1. List active and completed test sessions
gcloud beta device-run sessions list
# 2. Get a summary and direct Cloud Storage bucket link of a session's results
gcloud beta device-run sessions describe session-number
# 3. Get detailed metadata and print full results
gcloud beta device-run sessions describe session-number --full
# 4. Cancel a running session (replaces console cancellation)
gcloud beta device-run sessions cancel session-number
Referencia de asignación de marcas
Aquí se muestra la asignación de marcas para migrar la configuración de pruebas de Flank o gcloud
firebase test android/ios run al nuevo comando gcloud beta device-run sessions
submit instrumentation de DDP.
Parámetros y recursos principales
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Lógica de formato o conversión |
|---|---|---|
--app |
--apps |
Lista Si se proporcionan varios APKs o AABs de la aplicación, pásalos todos a --apps en el orden en que se instalarán en el dispositivo. La ruta de acceso puede ser local o estar en Cloud Storage (gs://...). |
--test |
--test |
OBLIGATORIO String. Es la ruta de acceso al APK de prueba que contiene pruebas de instrumentación, ya sea locales o en Cloud Storage. |
--client-details |
--labels |
Diccionario de pares key=value que se adjuntarán a la sesión de prueba. |
Configuración del dispositivo y segmentación
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Formato o lógica de conversión |
|---|---|---|
--device model={M},version={V} |
--device={M}-{V} |
Cadena OBLIGATORIA que asigna el modelo y la versión del SO a una sola cadena de ID de --device. La marca --device de DDP acepta varios IDs de dispositivos separados por comas (p. ej., --device=shiba-34,tokay-36) o varias marcas --device, cada una de las cuales especifica un ID de dispositivo distinto (p. ej., --device=shiba-34 --device=tokay-36). |
--device locale={L} |
--locale={L} |
Cadena. Asigna la configuración regional del dispositivo Maps a la marca --locale de nivel superior (language-region, p. ej., --locale=en-US) al que se cambiará el dispositivo antes de ejecutar la prueba. |
--device orientation={O} |
--orientation={O} |
Cadena. Asigna la orientación del dispositivo a la marca --orientation de nivel superior (portrait o landscape). |
| N/A | --coordinates |
Cadena. Simula las coordenadas de ubicación del GPS del dispositivo (p. ej., --coordinates=37.4220,-122.0841). |
Control de ejecución y flakiness
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Lógica de formato o conversión |
|---|---|---|
--num-flaky-test-attempts {R} |
--flaky-test-attempts {A} |
Número entero. Es la cantidad máxima de intentos de ejecución por fragmento de prueba. Convierte el recuento de reintentos R en el límite de intentos totales A: A = R + 1 (el valor predeterminado es 1). |
| N/A | --flaky-test-parallel-retry |
Booleano. Indica si se deben reintentar las fallas de las pruebas en paralelo (el valor predeterminado es false para la ejecución secuencial). |
| N/A | --flaky-test-retry-level |
Cadena. Define si se debe volver a intentar la operación a nivel de shard o de test individual (el valor predeterminado es shard). |
--async |
--async |
Booleano. Mapas 1:1. De forma predeterminada, el comando se ejecuta de forma síncrona. Pasa este valor para volver a la terminal de inmediato. Sale inmediatamente después de subir el archivo y muestra los IDs de operación y sesión. |
Ejecutor y destinos de pruebas
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Formato o lógica de conversión |
|---|---|---|
--environment-variables |
--additional-test-options |
Diccionario de opciones que se pasan al ejecutor de pruebas de instrumentación. Aquí no se permiten los formatos admitidos en --test-targets. |
--test-targets |
--test-targets |
Diccionario de destinos de prueba o filtros de destino para ejecutar. Cada destino debe estar completamente calificado con el nombre del paquete o el nombre de la clase que admite claves como package, notPackage, class, notClass, annotation, notAnnotation y size. No se admiten los formatos testfile ni notTestfile. |
--use-orchestrator |
--orchestrator-version |
Indica si se debe usar Android Test Orchestrator. Toma auto (orquestador predeterminado) o una cadena de versión específica (p. ej., 1.6). Las versiones disponibles se pueden consultar con gcloud beta device-run software-versions list. |
--test-runner-class |
--test-runner-class |
Cadena. Clase del ejecutor de pruebas de instrumentación completamente calificada (p. ej., com.foo.MyRunner) que se usará. Si no se especifica, se determina una clase de ejecución predeterminada examinando el manifiesto de la aplicación. |
--directories-to-pull |
--paths-to-pull |
Lista Son los directorios que se descargarán del dispositivo después de la ejecución de la prueba. |
--other-files |
--other-files-to-push |
Diccionario Lista SOURCE=DEST separada por comas de archivos auxiliares que se deben enviar al dispositivo antes de la ejecución de la prueba. |
Salida y almacenamiento
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Formato o lógica de conversión |
|---|---|---|
--results-bucket |
--bucket-name |
Cadena. Bucket de Cloud Storage en el que se suben los artefactos de prueba, incluidos los archivos de entrada locales, los archivos de salida de prueba y los registros de tiempo de la fragmentación inteligente (el valor predeterminado es gs://[PROJECT_ID]-devicerun si no se especifica). |
--results-dir |
Administración automática | No compatible. Las rutas secundarias se organizan automáticamente en Cloud Storage en automation/sessions/{session_id}/. |
Configuración de fragmentación
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Lógica de formato o conversión |
|---|---|---|
--num-uniform-shards {N} |
--sharding-option=uniform --uniform-sharding-count={N} |
Cadena y Número entero La configuración de la marca combinada activa la estrategia de fragmentación uniforme y establece el recuento máximo de fragmentos (rango de recuento válido: de 1 a 20 físicos y de 1 a 200 virtuales). |
Flanco --max-test-shards {N} |
--sharding-option=smart --smart-sharding-max-shard-count={N} |
Cadena y Número entero La configuración de marcas combinadas activa la estrategia de fragmentación inteligente y establece el recuento máximo de fragmentos (rango de recuento válido: de 0 a 20 físicos y de 0 a 200 virtuales). |
Flanco --shard-time {S} |
--sharding-option=smart --smart-sharding-target-duration={S} |
OBLIGATORIO String. Activa el sharding inteligente con el tiempo de ejecución objetivo (p. ej., 2m, 10m, 1h). Rango válido: de 2m a 1h. |
Flanco --smart-flank-gcs-path |
--smart-sharding-record-name={name} --bucket-name={bucket} |
OBLIGATORIO String. Nombre del archivo YAML de registro de fragmentación (sin incluir la extensión del archivo) dentro de --bucket-name en smart-sharding/ en Cloud Storage. |
Marcas específicas de Android
Usa esta tabla para asignar las marcas heredadas de gcloud firebase test android run a sus nuevos equivalentes de device-run:
Parámetro heredado (firebase android) |
Parámetro de DDP de destino | Lógica de formato o conversión |
|---|---|---|
--additional-apks |
--apps |
Lista Combina valores de listas adicionales directamente en la lista principal --apps. |
| N/A | --bugreport |
Cadena. Recopila un bugreport completo del dispositivo (valores: always, on-failure). |
| N/A | --dumpsys |
Cadena. Recopila el estado del sistema con dumpsys (valores: always, on-failure). |
--timeout |
--instrumentation-timeout |
Duración (p. ej., 10m, 20s, 1h). El rango válido es de 1m a 3h (el valor predeterminado es 5m). |
--record-video |
--video |
Cadena. Indica cuándo se debe grabar un video de la pantalla del dispositivo durante la ejecución de la prueba.Los valores válidos son always o on-failure. |
Marcas específicas para iOS
Usa esta tabla para asignar las marcas gcloud firebase test ios run heredadas a sus nuevos equivalentes de device-run:
Parámetro heredado (firebase ios) |
Parámetro de DDP de destino | Lógica de formato o conversión |
|---|---|---|
--test |
--test |
Es la ruta de acceso al archivo ZIP de XCTest compilado. |
--device model={M},version={V} |
--device={M}-{V} |
Es una cadena de ID del dispositivo de destino. |
--timeout |
--xctest-timeout |
Duración (p.ej., 5m). El intervalo es de 1m a 1h. |
--xcode-version |
--xcode-version |
ID del catálogo o cadena de versión de Xcode que se usará (p. ej., xcode-16-4 o 16.4). Las versiones disponibles se pueden consultar con gcloud beta device-run software-versions list. |
--results-bucket |
--bucket-name |
Es el bucket de GCS de destino personalizado. |
--async |
--async |
Es síncrono de forma predeterminada, pero se puede pasar para salir de inmediato. |
--other-files |
--other-files-to-push |
Diccionario en formato SOURCE=BUNDLE_ID:DEST. |
--directories-to-pull |
--paths-to-pull |
Es una lista en formato BUNDLE_ID:DEVICE_PATH. |
--additional-ipas |
--additional-apps |
Lista de IPA auxiliares que se deben instalar antes de la prueba. |
--xctestrun-file |
--xctestrun-file |
Ruta de acceso al archivo .xctestrun plist personalizado. |
--num-flaky-test-attempts |
--flaky-test-attempts |
Es un recuento de números enteros de los intentos de reintento (p.ej., 3). |
--client-details |
--labels |
Pares clave-valor (KEY=VALUE). |
Comentarios y preguntas
Comunícate con nosotros para informar errores y solicitar funciones, o únete a nuestro foro de debate.