Neste guia, descrevemos como executar um XCTest do iOS usando a CLI do gcloud beta
device-run e encontrar os resultados no console do Google Cloud . Ele pressupõe que você tenha uma conta e um projeto do Google Cloud .
Para usar a CLI device-run, você precisa fornecer o ID do projeto Google Cloud. Consulte gcloud beta device-run para ver um resumo dos comandos.
Antes de começar
Estas etapas pressupõem que você já:
- criado um projeto do Google Cloud ;
- Configure a Developer Device Platform seguindo o início rápido.
- Autenticado com
gcloudno terminal. - Consulte a visão geral da execução do dispositivo para informações gerais.
- Compacte os testes em um arquivo ZIP.
Etapa 1. 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 beta 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 na execução do teste, use
o ID correspondente (por exemplo, iphonese3-18-4) no comando de envio.
Etapa 2. Preparar e empacotar o XCTest
Antes de executar os testes, compile-os, verifique se eles estão assinados, verifique
as assinaturas de código e empacote os artefatos resultantes em um arquivo ZIP
que contenha sua configuração do .xctestrun e os pacotes de teste do aplicativo.
1. Criar testes para dispositivos iOS físicos
Abra seu projeto no Xcode e crie o app e os destinos de teste para teste:
- 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 testes.
Crie para teste 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
Depois de criar, verifique se o aplicativo, o executor e o manifesto .xctestrun
foram gerados em ./build/Build/Products/. Se você assinou localmente, pode
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, verifique também o pacote do executor de testes:
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 do 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 pronto para ser usado com a flag
--test.
Etapa 3. Executar o XCTest
Estas flags são obrigató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 beta 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 beta 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 4. 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 - Outros apps: instale um ou mais pacotes
.ipaantes 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 - Tempo limite do teste: limite a duração da execução:
--xctest-timeout=10m. O intervalo válido é de1ma1h, e o padrão é5m. - Marcadores: anexe metadados definidos pelo usuário à sessão:
--labels=env=staging,owner=my-team - 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 teste instável: defina o número máximo de tentativas para executar novamente testes instáveis:
--flaky-test-attempts=3(o padrão é uma 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 levar tempo, você pode
referenciar diretamente seus arquivos usando os caminhos
gs://do Cloud Storage para economizar tempo de upload.
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 beta 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: veja suas execuções recentes:
gcloud beta device-run sessions list --limit=10 - Cancelar sessão: interrompe uma sessão de teste em execução:
gcloud beta device-run sessions cancel SESSION_ID - Cancelar operação: interrompe uma operação pendente ou ativa:
gcloud beta device-run operations cancel OPERATION_ID
A seguir
Em seguida, encontre e analise os registros.