La Developer Device Platform (DDP) reemplaza la consola heredada de Firebase Test Lab
y los flujos de trabajo de la CLI de Test Lab por una CLI de pruebas unificada, segura y de alto rendimiento
que priorizaGoogle Cloud: gcloud beta device-run
En esta guía, se proporcionan traducciones de línea 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, ya que reemplaza 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 físico, de 1 a 200 para virtual).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 los metadatos históricos de tiempo de 30 días:
Flank heredado:
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 de terminal largos, 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 alpha 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
CLI de Firebase 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 de Flank compleja
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 inicia 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 las configuraciones de prueba de Flank o gcloud
firebase test android/ios run a los nuevos comandos gcloud beta device-run sessions
submit instrumentation y gcloud alpha device-run sessions submit xctest de DDP.
Parámetros y recursos principales
| Parámetro heredado (Test Lab / Flank) | Parámetro de DDP de destino | Formato o lógica de 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 en Cloud Storage (gs://...). |
--test |
--test |
OBLIGATORIO String. Es la ruta de acceso al APK de prueba que contiene las pruebas de instrumentación, ya sea local 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 | Lógica de formato o conversión |
|---|---|---|
--device model={M},version={V} |
--device={M}-{V} |
String OBLIGATORIA que asigna el modelo y la versión del SO a una sola string de ID de --device. La marca --device de DDP acepta varios IDs de dispositivo separados por comas (p. ej., --device=shiba-34,tokay-36) o varias marcas --device, cada una con un ID de dispositivo diferente (p. ej., --device=shiba-34 --device=tokay-36). |
--device locale={L} |
--locale={L} |
Cadena. Asigna la configuración regional del dispositivo a la marca --locale de nivel superior (language-region, p. ej., --locale=en-US) al que se debe cambiar el dispositivo antes de ejecutar la prueba. |
--device orientation={O} |
--orientation={O} |
String. 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 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} |
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 reintentar 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 |
Es el 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 |
Es un diccionario de destinos de prueba o filtros de destino que se ejecutarán. 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. Es una lista de SOURCE=DEST separada por comas de archivos auxiliares que se enviarán 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 |
String. 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 | Formato o lógica de conversión |
|---|---|---|
--num-uniform-shards {N} |
--sharding-option=uniform --uniform-sharding-count={N} |
String y Integer. 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 la fragmentación 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. Es el nombre del archivo YAML del registro de fragmentación (sin incluir la extensión de 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 | Formato o lógica de conversión |
|---|---|---|
--additional-apks |
--apps |
Lista Combina valores de listas adicionales directamente en la lista principal de --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 |
String. Cuándo 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 de iOS
Usa esta tabla para asignar las marcas heredadas de gcloud firebase test ios run 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 la cadena de ID del dispositivo de destino. |
--device locale={L} |
--locale={L} |
Es la cadena de configuración regional de destino (language-region, p. ej., --locale=en-US). |
--timeout |
--xctest-timeout |
Duración (p.ej., 5m). El intervalo es de 1m a 1h. |
--xcode-version |
--xcode-version |
Es el ID de catálogo o la 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 |
Síncrono de forma predeterminada, pasa 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 plist .xctestrun 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 enviar solicitudes de funciones, o bien únete a nuestro foro de debate.