Visão geral da execução do dispositivo na Developer Device Platform

Bem-vindo ao Developer Device Platform Device Run, que permite executar testes e arquivos executáveis em dispositivos Android físicos e virtuais e dispositivos iOS físicos na nuvem. Esta página resume os recursos e descreve as semelhanças entre a execução de testes de instrumentação do Android, executáveis do Android e testes do iOS. Consulte o Device Run para Android e o Device Run para iOS para conferir as etapas específicas da plataforma.

Se você estiver migrando do Firebase Test Lab para a Developer Device Platform, consulte nosso guia de migração, a tradução de comandos e flags e a habilidade de migração para agentes de IA.

Para usar essa Google Cloud CLI, você precisa fornecer o Google Cloud ID do projeto. Para conferir um resumo dos comandos, consulte: gcloud beta device-run

Principais recursos

O Developer Device Platform Device Run é um Google Cloud serviço que permite executar conjuntos de testes automatizados em dispositivos móveis físicos e virtuais. Criado para fluxos de trabalho modernos de integração contínua e entrega contínua (CI/CD), o Device Run oferece controle de linha de comando pela Google Cloud CLI (gcloud beta device-run), permitindo que as equipes executem, gerenciem e escalonem conjuntos de testes em hardware dedicado e ambientes virtuais.

1. Testes automatizados multiplataforma

  • Suporte para Android e iOS: o Device Run oferece suporte a frameworks de teste integrados, incluindo testes de instrumentação do Android (.apk), executáveis do Android (binários compilados) e XCTests do iOS (.ipa ou .zip).
  • Segmentação flexível de dispositivos: segmente dispositivos físicos ou virtuais específicos listados no catálogo de dispositivos usando identificadores de SO e modelo (por exemplo, modelos de Pixel ou iPhone) pela flag --device.
  • Execução paralela multidispositivo: execute pacotes de testes idênticos simultaneamente em vários dispositivos especificando IDs de dispositivos separados por vírgulas ou fornecendo várias flags --device.

2. Modos e controles de execução flexíveis

  • _Envios síncronos e assíncronos_: as execuções de teste operam de forma síncrona por padrão, mostrando um resumo após a conclusão. A adição da flag --async retorna um ID de sessão imediatamente para execução sem bloqueio, que pode ser monitorada mais tarde usando gcloud beta device-run sessions wait.
  • Tempos limite de execução personalizados*: configure limites de duração da execução com --instrumentation-timeout ou --xctest-timeout.
  • Novas tentativas de testes instáveis: defina o número máximo de novas tentativas para execuções do teste instável usando a flag --flaky-test-attempts.

3. Gerenciamento de dependências e versões de software

  • Ambientes de teste configuráveis*: descubra, inspecione e selecione versões específicas do ambiente de software , como o AndroidX Test Orchestrator e Apple Xcode, antes de iniciar as execuções de teste.
  • Descoberta de versão: use os comandos gcloud beta device-run software-versions list e describe para conferir pacotes de software ativos, versões de SO compatíveis e especificações de ambiente de execução padrão.

4. Gerenciamento de armazenamento e artefatos

  • Integração do Cloud Storage: as entradas de teste (APKs, IPAs, apps de suporte) e os artefatos de saída (registros, relatórios de teste) são armazenados no Cloud Storage.
  • Flexibilidade do bucket: o padrão é um bucket de projeto chamado PROJECT_ID-devicerun ou rotas para um bucket personalizado especificado pela flag --bucket-name. Você tem controle total desse bucket e precisa remover manualmente o conteúdo dele quando não for mais necessário ou configurar o gerenciamento automatizado do ciclo de vida no bucket. Consulte Sobre a exclusão de objetos para conferir as instruções.
  • Caminhos diretos da nuvem: referencie caminhos gs:// existentes diretamente para arquivos grandes para eliminar a sobrecarga de upload.

5. Recursos avançados de teste do Android

  • Android Test Orchestrator: Isole a execução do teste executando cada teste na própria instância Instrumentation para evitar o estado compartilhado do app e isolar falhas de aplicativos.
  • Fragmentação de testes:
    • Fragmentação uniforme: divide os casos de teste de maneira uniforme em um número especificado de fragmentos (--sharding-option=uniform).
    • Fragmentação inteligente: usa dados históricos de execução do teste para equilibrar os casos de teste de forma dinâmica entre os fragmentos, segmentando uma duração total de execução específica (--sharding-option=smart).

6. Gerenciamento de sessões e diagnósticos

  • Controle total da sessão: liste, descreva, filtre ou cancele execuções de teste ativas ou históricas usando sessions list, sessions describe e sessions cancel.
  • Validação de entrada antecipada: realiza a validação automática em binários de teste enviados e artefatos de configuração, mostrando detalhes explícitos de erros e causas raiz (como incompatibilidades de pacotes de destino) quando ocorrem erros.

Configurações principais

Flags obrigatórias

Estas flags são obrigatórias:

  • Dispositivo: especifique um dispositivo usando --device: --device shiba-35 ou --device iphonese3-18-4
  • Teste ou executável: especifique o pacote de teste usando --test (--test /path/to/test.apk ou --test /path/to/MyTests.zip) para execuções de teste ou especifique o binário ou script executável usando --executable (--executable /path/to/my_executable) para execuções executáveis do Android.

As opções de configuração a seguir são comuns em sessões do Device Run.

Caminhos de entrada e saída do Cloud Storage

  • Bucket personalizado do Cloud Storage: é possível especificar um bucket personalizado do Cloud Storage para entradas e saídas: --bucket-name=my-custom-bucket Se você não especificar um bucket do Cloud Storage usando a flag --bucket-name=, a Google Cloud CLI vai usar um bucket padrão chamado PROJECT_ID-devicerun.
  • Arquivos de entrada: quando você especifica um caminho local com as flags --test, --executable, --apps, --additional-apps, --other-files-to-push, ou --xctestrun-file, a Google Cloud CLI o copia automaticamente para o bucket do Cloud Storage em gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ sempre que você executa o comando, em que BUCKET_NAME é PROJECT_ID-devicerun por padrão.
  • Caminhos da nuvem: como o upload de arquivos grandes pode demorar, é possível referenciá-los diretamente usando os caminhos gs:// do Cloud Storage para economizar tempo de upload.
  • Arquivos de resultado: os artefatos de saída são enviados para o bucket do Cloud Storage em gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.

Validação de entrada

A Developer Device Platform tenta validar suas entradas, incluindo artefatos, e retorna um ERROR em vez de PASSED ou FAILED ao encontrar uma entrada incorreta:

Session [session-94b57778] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   ERROR

Agora anexe --full ao comando sessions describe para conferir mais detalhes sobre a sessão:

gcloud beta device-run sessions describe --full session-94b57778

O resultado é semelhante a:

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

A seguir

Execute um teste ou executável do Android ou execute um teste do iOS com a Developer Device Platform.