Firebase Test Lab to Developer Device Platform Command and Flag Translation

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: de 2m a 1h).
  • Establece --smart-sharding-record-name={record_name} (apunta al registro de seguimiento de YAML dentro de --bucket-name en automation/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.yaml
    
  • CLI 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.