Neste guia, descrevemos como executar um XCTest do iOS usando a gcloud alpha device-run
CLI e encontrar os resultados no Google Cloud console. Ele pressupõe que você tenha uma
Google Cloud conta e um projeto do.
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 a CLI device-run, você precisa fornecer seu Google Cloud
ID do projeto. Consulte gcloud alpha
device-run para um resumo dos comandos.
Antes de começar
Estas etapas pressupõem que você já:
- Criou um Google Cloud projeto do.
- Configurou a Developer Device Platform seguindo o guia de início rápido.
- Fez a autenticação com
gcloudno terminal. - Consultou a Device Run overview para informações gerais.
- Compilou os testes e os empacotou em um arquivo ZIP.
Etapa 1. Configurar a execução do teste
É possível personalizar a execução do teste usando as seguintes flags opcionais (embora seja necessária pelo menos uma instância da flag --device):
- Vários dispositivos: especifique a flag
--devicevárias vezes para executar o mesmo teste em vários dispositivos simultaneamente:--device iphonese3-18-4 --device iphonese3-26-3ou--device iphonese3-18-4,iphonese3-26-3 - Apps adicionais: instale um ou mais pacotes
.ipaextras antes de iniciar o teste usando--additional-apps:--additional-apps=/path/to/AdditionalApp.ipa - Arquivo
.xctestrunpersonalizado: transmita um arquivo de configuração personalizado com--xctestrun-file:--xctestrun-file=/path/to/CustomTests.xctestrun - Versões do Apple Xcode: acesse diretamente as versões do Xcode compatíveis com a CLI
usando a flag
--xcode-version, por exemplo:--xcode-version=xcode-16-4 - Tempo limite do teste: limite a duração da execução:
--xctest-timeout=10m(o intervalo válido é de1ma1he o padrão é5m). - Marcadores: anexe metadados definidos pelo usuário à sessão:
--labels=env=staging,owner=my-team - Localidade: defina a localidade do dispositivo:
--locale=en-US - Enviar arquivos para o dispositivo: envie arquivos para o contêiner de dados do app antes da execução do teste:
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - Extrair arquivos do dispositivo: extraia arquivos do contêiner de dados do app após a execução do teste:
--paths-to-pull=com.example.app:/Documents/output.txt - Novas tentativas de testes instáveis: defina o número máximo de tentativas para executar testes instáveis
novamente:
--flaky-test-attempts=3(o padrão é 1 tentativa). - Bucket do Cloud Storage personalizado: especifique um bucket do Cloud Storage personalizado
para entradas e saídas:
--bucket-name=my-custom-bucket(o padrão éPROJECT_ID-devicerun). - Como o upload de arquivos ZIP ou IPA grandes pode demorar, você pode referenciar seus arquivos diretamente usando os caminhos
gs://do Cloud Storage para economizar tempo de upload.
Execuções síncronas e assíncronas
Por padrão, o comando de envio é bloqueador (síncrono). Ele vai aguardar a conclusão do teste e imprimir uma tabela de resumo dos resultados.
Para enviar a sessão e retornar imediatamente após o upload de arquivos para o Cloud Storage, adicione a flag --async:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
Isso retorna um ID de sessão imediatamente. Em seguida, aguarde usando o comando sessions wait:
gcloud alpha device-run sessions wait SESSION_ID
O comando será bloqueado até que o job seja concluído.
Vários dispositivos
Para executar o mesmo teste em vários dispositivos, forneça a flag --device com vários IDs de dispositivos separados por vírgulas ou com várias flags --device, cada uma especificando um ID de dispositivo diferente.
Separado por vírgulas
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
Várias flags
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
Testar tempo limite
Limite a duração da execução do teste:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xctest-timeout=10m
O intervalo válido é de 1m a 1h e o padrão é 5m.
Versões de software
Descubra e use pacotes de software e versões disponíveis do Apple Xcode e inspecione os ciclos de vida, as versões compatíveis e os metadados antes de configurar as execuções de teste.
Primeiro, liste todos os pacotes de software disponíveis e as versões deles:
gcloud alpha device-run software-versions list
Recebendo uma saída semelhante a:
ID NAME SOFTWARE_TYPE VERSION STATE IS_DEFAULT
androidx-test-orchestrator-1-4-1 AndroidX Test Orchestrator 1.4.1 ANDROIDX_TEST_ORCHESTRATOR 1.4.1 ACTIVE True
androidx-test-orchestrator-1-6-1 AndroidX Test Orchestrator 1.6.1 ANDROIDX_TEST_ORCHESTRATOR 1.6.1 ACTIVE
xcode-16-4 Xcode 16.4 XCODE 16.4 ACTIVE
xcode-26-2 Xcode 26.2 XCODE 26.2 ACTIVE True
Em seguida, descreva um pacote específico usando o ID de recurso exato da lista:
gcloud alpha device-run software-versions describe xcode-16-4
Recebendo uma saída semelhante a:
id: xcode-16-4
lifecycle:
state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:
- '15.0'
- '15.1'
- '15.2'
- '15.4'
- '15.7'
- '16.0'
- '16.1'
- '16.2'
- '16.3'
- '16.5'
- '16.6'
- '18.0'
- '18.3'
- '18.4'
version: '16.4'
Agora que você sabe quais versões de software estão disponíveis, é possível usá-las nas execuções de teste com a flag --xcode-version, desta forma:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Etapa 2. Escolher tipos de dispositivos
Usando a CLI device-run, os testes do iOS podem ser executados em dispositivos físicos disponíveis. Para conferir a lista completa de dispositivos disponíveis, acesse o
catálogo de dispositivos
interativo ou execute:
gcloud alpha device-run devices list
Exemplo de saída:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
Consulte o catálogo
de dispositivos para saber como
filtrar essa lista. Para segmentar um dispositivo específico para a execução do teste, use o ID correspondente (por exemplo, iphonese3-18-4) no comando de envio.
Etapa 3. Preparar e empacotar o XCTest
Antes de executar os testes, é necessário compilá-los, garantir que eles estejam assinados, verificar as assinaturas de código e empacotar os artefatos resultantes em um arquivo ZIP que contenha a configuração .xctestrun e os pacotes de teste do aplicativo.
1. Criar testes para dispositivos iOS físicos
Abra seu projeto no Xcode e crie os destinos de app e teste para testes:
- Verifique se a assinatura de código está configurada corretamente no Xcode (especificando um perfil de provisionamento e uma identidade de desenvolvedor válidos) para o destino do app e o destino do executor de teste.
Crie para testes usando o Xcode (Product > Build For > Testing) ou com
xcodebuild.Para um espaço de trabalho:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"Para um projeto independente:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
Isso gera os produtos de build em: ./build/Build/Products
2. Verificar produtos e assinaturas de build
Após a criação, verifique se o aplicativo, o executor e o manifesto .xctestrun foram gerados em ./build/Build/Products/. Se assinado localmente, é possível verificar as assinaturas do pacote usando codesign:
Verifique o pacote de apps:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appSaída esperada:
YourApp.app: valid on diskSe você estiver executando um XCUITest, também verifique o pacote do executor de teste:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.appSaída esperada:
YourApp-Runner.app: valid on disk
3. Criar o arquivo ZIP
Compacte o diretório Debug-iphoneos e o arquivo .xctestrun localizado na pasta de produtos de saída de build em um único arquivo ZIP.
Execute o seguinte comando no diretório de produtos de build:
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
Isso cria o MyTests.zip empacotado que está pronto para ser usado com a flag --test.
Etapa 4. Executar o XCTest
Estas flags são necessárias:
- Dispositivo: especifique um dispositivo usando
--device:--device iphonese3-18-4 - Teste: especifique o arquivo ZIP de teste usando
--test:--test ./MyTests.zip
Para executar o XCTest, use o comando gcloud alpha device-run sessions submit xctest. Você precisa fornecer o arquivo ZIP de teste (MyTests.zip) compilado na etapa anterior.
Para executar uma sessão de teste básica:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
Quando a execução começa, a CLI mostra o ID da sessão criada e o destino do Cloud Storage em que os resultados serão armazenados:
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
Etapa 5. Analisar e gerenciar a execução do teste
É possível acompanhar as execuções ativas e gerenciar sessões históricas usando estes comandos:
- Descrever sessão: consulte o progresso em tempo real ou os resultados finais de uma sessão:
gcloud alpha device-run sessions describe SESSION_IDAdicione--fullpara conferir detalhes completos, incluindo alocações de dispositivos, IDs de execução e caminhos de artefatos do Cloud Storage. - Listar sessões: confira suas execuções recentes:
gcloud alpha device-run sessions list --limit=10 - Cancelar sessão: interrompa uma sessão de teste em execução:
gcloud alpha device-run sessions cancel SESSION_ID - Cancelar operação: interrompa uma operação pendente ou ativa:
gcloud alpha device-run operations cancel OPERATION_ID
A seguir
Em seguida, encontre e analise os registros.