A Developer Device Platform (DDP) substitui o console legado do Firebase Test Lab e os fluxos de trabalho da CLI do Test Lab por uma CLI de teste unificada, de alto desempenho e segura, priorizando oGoogle Cloud: gcloud beta device-run
Este guia fornece traduções de linha de comando e mapeamentos de flags do Test Lab (ou Flank) para o DDP. Use estas orientações para migrar seus testes manualmente. Consulte Migrar do Firebase Test Lab para a Developer Device Platform para conferir ferramentas de automação, benefícios, principais diferenças e dicas de migração.
Migração de fragmentação
O DDP moderniza as configurações de fragmentação substituindo nativamente a fragmentação inteligente complexa baseada no Cloud Storage do Flank e a fragmentação uniforme do Test Lab.
Fragmentação uniforme
- Defina
--sharding-option=uniform. Defina
--uniform-sharding-count={count}(1 a 20 para físico, 1 a 200 para virtual).Firebase Test Lab legado:
--num-uniform-shards {N}CLI da DDP:
--sharding-option=uniform --uniform-sharding-count={N}
Fragmentação inteligente
- Defina
--sharding-option=smart. - Defina
--smart-sharding-target-duration={duration}(por exemplo,2m,10m,1h; intervalo válido: de2ma1h). - Defina
--smart-sharding-record-name={record_name}(aponta para o registro de rastreamento YAML dentro de--bucket-nameemautomation/smart-sharding/). - Defina
--smart-sharding-max-shard-count={max_count}(limite máximo opcional: 0 a 20 para físico, 0 a 200 para virtual).
Usando metadados de tempo históricos de 30 dias:
Flank legado:
max-test-shards: 10 shard-time: 120 smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yamlCLI do 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
Configuração declarativa do YAML (--flags-file)
Para configurações complexas ou equipes que preferem manter arquivos com controle de versões
em vez de comandos de terminal longos, o gcloud fornece um pré-processador de argumentos
--flags-file universal (consulte $ 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
Veja um exemplo que demonstra uma lista de vários valores e sinalizações de dicionário:
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
Exemplos de tradução de comandos de ponta a ponta
Confira estas traduções padrão e complexas para ver exemplos concretos.
Exemplo: executar um teste de instrumentação padrão
CLI legada do Firebase:
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
Tradução da CLI do 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
Exemplo: migrar uma configuração YAML complexa do Flank
Configuração legada do 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
Tradução da CLI do 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
Pós-execução e recuperação de resultados
Como o DDP não é iniciado com uma UI gráfica da Web (como o console legado do Firebase), os desenvolvedores precisam gerenciar, descrever e inspecionar os resultados diretamente usando a CLI ou as APIs 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
Referência de mapeamento de sinalizações
Confira o mapeamento de flags para migrar configurações de teste do Flank ou do gcloud
firebase test android/ios run para os novos comandos gcloud beta device-run sessions
submit instrumentation e gcloud alpha device-run sessions submit xctest
do DDP.
Parâmetros e recursos principais
| Parâmetro legado (Test Lab / Flank) | Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|
Flanco --project |
--project |
Sinalização global padrão do Google Cloud (--project=PROJECT_ID) ou configuração ativa da Google Cloud CLI. |
--client-details |
--labels |
Dicionário de pares key=value a serem anexados à sessão de teste. |
--other-files |
--other-files-to-push |
Dictionary. Arquivos auxiliares para enviar ao dispositivo antes da execução de teste. Inverte a ordem legada de DEST=SOURCE para SOURCE=DEST (SOURCE=DEVICE_PATH no Android; SOURCE=BUNDLE_ID:DEVICE_PATH no iOS). |
Configurador do dispositivo e segmentação
| Parâmetro legado (Test Lab / Flank) | Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|
--device model={M},version={V} |
--device={M}-{V} |
OBRIGATÓRIO String que mapeia o modelo e a versão do SO para uma única string de ID --device. A flag --device do DDP aceita vários IDs de dispositivo separados por vírgulas (por exemplo, --device=shiba-34,tokay-36 ou --device=iphone16pro-18-3) ou várias flags --device, cada uma especificando um ID de dispositivo diferente (por exemplo, --device=shiba-34 --device=tokay-36). |
Controle de execução e instabilidade
| Parâmetro legado (Test Lab / Flank) | Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|
--async |
--async |
Boolean. Maps 1:1. O comando é executado de forma síncrona por padrão. Transmita isso para retornar ao terminal imediatamente. Sai imediatamente após o upload do arquivo e imprime os IDs de operação e sessão. |
--num-flaky-test-attempts {R} |
--flaky-test-attempts {A} |
Número inteiro. O número máximo de tentativas de execução por fragmento de teste. Converta a contagem de novas tentativas R em limite total de tentativas A: A = R + 1 (o padrão é 1). |
Saída e armazenamento
| Parâmetro legado (Test Lab / Flank) | Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|
--results-bucket |
--bucket-name |
String. Bucket do Cloud Storage em que os artefatos de teste, incluindo arquivos de entrada locais, arquivos de saída de teste e registros de tempo de fragmentação inteligente, são enviados (o padrão é gs://[PROJECT_ID]-devicerun se não for especificado). |
--results-dir |
Gerenciadas automaticamente | Não compatível. Os subcaminhos são organizados automaticamente no Cloud Storage em automation/sessions/{session_id}/. |
--directories-to-pull |
--paths-to-pull |
List. Arquivos ou diretórios para download do dispositivo após a execução de teste (DEVICE_PATH no Android; BUNDLE_ID:DEVICE_PATH no iOS). |
Configuração de fragmentação
| Parâmetro legado (Test Lab / Flank) | Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|
--num-uniform-shards {N} |
--sharding-option=uniform --uniform-sharding-count={N} |
String e Integer. A configuração de flag combinada ativa a estratégia de fragmentação uniforme e define a contagem máxima de fragmentos (intervalo de contagem válido: 1 a 20 físicos, 1 a 200 virtuais). |
Flanco --max-test-shards {N} |
--sharding-option=smart --smart-sharding-max-shard-count={N} |
String e Integer. A configuração de flag combinada ativa a estratégia de fragmentação inteligente e define a contagem máxima de fragmentos (intervalo de contagem válido: 0 a 20 físicos, 0 a 200 virtuais). |
Flanco --shard-time {S} |
--sharding-option=smart --smart-sharding-target-duration={S} |
OBRIGATÓRIO String. Ativa a fragmentação inteligente com o tempo de execução desejado (por exemplo, 2m, 10m, 1h). Intervalo válido: de 2m a 1h. |
Flanco --smart-flank-gcs-path |
--smart-sharding-record-name={name} --bucket-name={bucket} |
OBRIGATÓRIO String. Nome do YAML do registro de fragmentação (excluindo a extensão do arquivo) em --bucket-name em smart-sharding/ no Cloud Storage. |
Flags específicas do Android
Use esta tabela para mapear as flags legadas do gcloud firebase test android run e do Flank
para Android para os novos equivalentes do gcloud beta device-run sessions submit
instrumentation:
| Tipo de teste | Grupo de atributos | Parâmetro legado (firebase android / Flank) |
Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|---|---|
| Android comum | Parâmetros e recursos principais | --app |
--apps |
List. Se vários APKs/AABs de aplicativo forem fornecidos, transmita todos para --apps na ordem em que serão instalados no dispositivo. O caminho pode ser local ou no Cloud Storage (gs://...). |
| Android comum | Parâmetros e recursos principais | --additional-apks |
--apps |
List. Mescle outros valores de lista diretamente na lista principal --apps. |
| Android comum | Parâmetros e recursos principais | --obb-files |
--other-files-to-push |
Dicionário no formato SOURCE=DEST. Envie arquivos OBB diretamente para o caminho do dispositivo de destino (/sdcard/Android/obb/{package_name}/). |
| Android comum | Configurador do dispositivo e segmentação | --device locale={L} |
--locale={L} |
String. Mapeia a localidade do dispositivo para a flag --locale de nível superior (language-region, por exemplo, --locale=en-US) para o dispositivo antes de executar o teste. |
| Android comum | Configurador do dispositivo e segmentação | --device orientation={O} |
--orientation={O} |
String. Mapeia a orientação do dispositivo para a flag --orientation de nível superior (portrait ou landscape). |
| Android comum | Configurador do dispositivo e segmentação | N/A | --coordinates |
String. Simula as coordenadas de localização GPS do dispositivo (por exemplo, --coordinates=37.4220,-122.0841). |
| Android comum | Controle de execução e instabilidade | --grant-permissions |
Padrão automatizado | Automatizado. As permissões de execução são concedidas automaticamente por padrão (equivalente a --grant-permissions=all). |
| Android comum | Saída e armazenamento | N/A | --dumpsys |
String. Coletar o estado do sistema usando dumpsys (valores: always, on-failure). |
| Android comum | Saída e armazenamento | N/A | --bugreport |
String. Coleta um bugreport completo do dispositivo (valores: always, on-failure). |
| Android comum | Saída e armazenamento | --record-video |
--video |
String. Quando gravar um vídeo da tela do dispositivo durante a execução do teste. Os valores válidos são always ou on-failure. |
| Instrumentação do Android | Parâmetros e recursos principais | --type=instrumentation |
sessions submit instrumentation |
A estrutura do subcomando determina o tipo de teste em vez de uma flag --type. |
| Instrumentação do Android | Parâmetros e recursos principais | --test |
--test |
OBRIGATÓRIO String. Caminho para o APK de teste que contém testes de instrumentação, local ou no Cloud Storage. |
| Instrumentação do Android | Controle de execução e instabilidade | --timeout |
--instrumentation-timeout |
Duração (por exemplo, 10m, 20s, 1h). Intervalo válido: de 1m a 3h (o padrão é 5m). |
| Instrumentação do Android | Controle de execução e instabilidade | N/A | --flaky-test-parallel-retry |
Boolean. Se as falhas de teste devem ser repetidas em paralelo (o padrão é false para execução sequencial). |
| Instrumentação do Android | Controle de execução e instabilidade | N/A | --flaky-test-retry-level |
String. Define se a nova tentativa será feita no nível de shard ou de test individual (o padrão é shard). |
| Instrumentação do Android | Executor de testes e destinos | --test-runner-class |
--test-runner-class |
String. A classe totalmente qualificada do executor de testes de instrumentação (por exemplo, com.foo.MyRunner) que será usado. Se não for especificada, uma classe de executor padrão será determinada pelo manifesto do aplicativo. |
| Instrumentação do Android | Executor de testes e destinos | --test-targets |
--test-targets |
Dicionário de destinos de teste ou filtros de destino a serem executados. Cada destino precisa ser totalmente qualificado com o nome do pacote ou da classe que oferece suporte a chaves como package, notPackage, class, notClass, annotation, notAnnotation e size. Os formatos testfile ou notTestfile não são aceitos. |
| Instrumentação do Android | Executor de testes e destinos | --use-orchestrator |
--orchestrator-version |
Se o Android Test Orchestrator será usado. Usa auto (orquestrador padrão) ou uma string de versão específica (por exemplo, 1.6). As versões disponíveis podem ser consultadas usando gcloud beta device-run software-versions list. |
| Instrumentação do Android | Executor de testes e destinos | --environment-variables |
--additional-test-options |
Dicionário de opções transmitidas ao executor de testes de instrumentação. Os formatos compatíveis com --test-targets não são permitidos aqui. |
Flags específicas do iOS
Use esta tabela para mapear as flags legadas do gcloud firebase test ios run e do Flank para iOS
para as novas equivalentes do gcloud alpha device-run sessions submit xctest:
| Tipo de teste | Grupo de atributos | Parâmetro legado (firebase ios / Flank) |
Parâmetro de DDP desejado | Lógica de formato / conversão |
|---|---|---|---|---|
| iOS comum | Parâmetros e recursos principais | --additional-ipas |
--additional-apps |
Lista de arquivos .ipa auxiliares para instalar no dispositivo antes da execução do teste. |
| Somente XCTest do iOS | Parâmetros e recursos principais | --type=xctest |
sessions submit xctest |
A estrutura do subcomando determina o tipo de teste em vez de uma flag --type (usa gcloud alpha). |
| Somente XCTest do iOS | Parâmetros e recursos principais | --test |
--test |
OBRIGATÓRIO String. Caminho para o arquivo ZIP que contém o app iOS e os arquivos XCTest, local ou no Cloud Storage. |
| Somente XCTest do iOS | Controle de execução e instabilidade | --timeout |
--xctest-timeout |
Duração (por exemplo, 5m, 15m, 1h). Intervalo válido: de 1m a 1h (o padrão é 5m). |
| Somente XCTest do iOS | Saída e armazenamento | --record-video |
--video |
Quando gravar vídeo: always ou on-failure. Um vídeo é gravado para cada caso de teste UI (iOS 17 ou mais recente). |
| Somente XCTest do iOS | Executor de testes e destinos | --xctestrun-file |
--xctestrun-file |
String. Caminho para um arquivo .xctestrun personalizado, local ou no Cloud Storage. |
| Somente XCTest do iOS | Executor de testes e destinos | --xcode-version |
--xcode-version |
String. ID do catálogo ou string de versão do Xcode a ser usada (por exemplo, xcode-16-4 ou 16.4). As versões disponíveis podem ser consultadas usando gcloud beta device-run software-versions list. |
Feedback e dúvidas
Entre em contato conosco para registrar bugs e solicitações de recursos ou participe do nosso fórum de discussão.