Testar com a Google Cloud CLI

Este guia descreve como executar um XCTest ou loop de jogo usando a CLI gcloud.

Etapa 1: configurar o ambiente local do SDK do Google Cloud

  1. Faça o download do SDK do Google Cloud.
  2. Isso inclui a ferramenta CLI gcloud.

  3. Verifique se a instalação está atualizada e inclui o comando gcloud firebase:
          gcloud components update
  4. Faça login na CLI gcloud usando sua Conta do Google:
          gcloud auth login
  5. Defina seu projeto do Firebase na gcloud, em que PROJECT_ID é o ID do projeto do Firebase:
         gcloud config set project PROJECT_ID

Etapa 2: executar o teste

Executar um XCTest

  1. Faça o upload do arquivo .ZIP do teste. Para isso, basta executar o comando a seguir. Caso ainda não tenha criado um pacote do app, consulte Como criar um pacote do XCTest:

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Escolhe as dimensões do seu teste

    O Test Lab permite executar testes em várias versões do iOS e em tipos diferentes de dispositivos, orientações de tela e localidades. Essas configurações são conhecidas como dimensões de teste. Para ver as opções de cada dimensão (por exemplo, versões do Xcode suportadas pela versão do iOS do dispositivo), substitua models, versions ou locales por dimension com o seguinte comando:

    gcloud firebase test ios dimension list

    A orientação da tela é um pouco mais simples porque as únicas opções são portrait e landscape.

    Examine a lista de dimensões de teste e selecione algumas combinações em que você quer realizar seu teste. Acesse Planos de preços para ver o número máximo de combinações que podem ser executadas por dia.

  3. Depois de escolher um conjunto de dimensões de teste, é possível fazer com que o Test Lab execute seus testes usando o comando firebase test ios run. Para cada combinação de dimensões de teste que você quiser testar, inclua uma flag --device separada:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    É possível que seu teste falhe devido a uma incompatibilidade entre a versão do Xcode usada para criar o teste e a versão padrão usada pelo Test Lab. Para especificar uma versão do Xcode compatível com o teste, use a flag --xcode-version:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Para ajudar a identificar e localizar as matrizes de teste no Console do Firebase, você tem a opção de identificar sua matriz de teste com a flag --client-details matrixLabel="<label>" no exemplo abaixo:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

Testar direitos especiais

Para testar direitos que exigem um ID do aplicativo explícito, configure a sinalização --test-special-entitlements. Test Lab assina novamente o aplicativo com um novo identificador de pacote para dar suporte a solicitações, portanto, verifique se não há recursos no seu arquivo ZIP contendo referências diretas ao identificador do pacote do app.

Direitos compatíveis:
  1. Notificações push apns-environment
  2. VPN pessoal com.apple.developer.networking.vpn.api
Notificações push

Para autorizar solicitações de notificação push, os usuários podem criar tokens JSON da Web usando a chave de assinatura privada com o ID da chave - C7FD9DJAA8 e o ID da equipe: 9CKCGNNUQN. Os tokens gerados seriam válidos por uma hora e precisariam ser atualizados a cada 60 minutos. Leia mais sobre Como estabelecer uma conexão a APNs baseada em token.

Grupos de apps

Os IDs dos grupos de apps são universalmente exclusivos. Isso significa que, quando assinamos novamente os apps dos usuários, só podemos usar o ID do grupo de aplicativos associado à conta de desenvolvedor do Test Lab. Se o teste depender de grupos de apps, ele vai falhar.

Executar um teste de loop de jogo

Execute o comando gcloud beta firebase test ios run e use as seguintes sinalizações para configurar a execução:

Sinalizações para testes de loop de jogo
--type

Obrigatório: especifica o tipo de teste do iOS que você quer executar. É possível inserir tipos de teste xctest (padrão) ou game-loop.

--app

Obrigatório: caminho absoluto (GCS ou sistema de arquivos) para o arquivo IPA do seu aplicativo. Essa sinalização só é válida ao executar testes de loop de jogo.

--scenario-numbers

Os loops (também conhecidos como cenários) que você quer executar no seu aplicativo. É possível inserir um loop, uma lista ou loops, ou um intervalo de loops. O loop padrão é 1.

Por exemplo, --scenario-numbers=1-3,5 executa loops 1, 2, 3 e 5.

--device-model

O dispositivo físico em que você quer executar o teste (descubra quais dispositivos disponíveis é possível usar).

--timeout

A duração máxima do teste a ser executado. É possível inserir um número inteiro para representar a duração em segundos ou um número inteiro e uma enumeração para representar a duração como uma unidade de tempo mais longa.

Exemplo:

  • --timeout=200 força o teste a ser encerrado quando é executado até 200 segundos.
  • --timeout=1h força o teste a ser encerrado quando executado até uma hora.

Por exemplo, o comando a seguir executa um teste de loop de jogo que executa loops 1, 4, 6, 7 e 8 em um iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

Para mais informações sobre a CLI gcloud, consulte a documentação de referência.

Etapa 3 (opcional): automatizar testes futuros criados por você

Como escrever scripts de comandos gcloud com Test Lab

Use scripts de shell ou arquivos em lote para automatizar os testes de apps para dispositivos móveis que seriam executados com a linha de comando gcloud. Este script bash de amostra executa um XCTest com um tempo limite de dois minutos. O resultado é exibido, informando se o teste foi concluído com sucesso:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Códigos de saída do script

O Test Lab fornece vários códigos de saída que podem ser usados para entender melhor os resultados dos testes que você executa usando scripts ou arquivos em lote.

Código de saída Observações
0 Todas as execuções de testes foram aprovadas.
1 Ocorreu uma falha geral. As possíveis causas incluem um nome de arquivo que não existe ou um erro de HTTP/rede.
2 O teste foi encerrado porque comandos ou argumentos desconhecidos foram fornecidos.
10 Um ou mais casos de testes (classes ou métodos de classes testados) foram reprovados na execução do teste.
15 Não foi possível determinar no Firebase Test Lab se a matriz de teste foi aprovada ou reprovada devido a um erro inesperado.
19 A matriz de teste foi cancelada pelo usuário.
20 Ocorreu um erro de infraestrutura de teste.

Etapa 4: analisar os resultados do teste

Quando o teste começar, você receberá um link para a página de Resultados do teste. Pode demorar alguns minutos para que os testes sejam executados, dependendo da quantidade de configurações diferentes que você selecionou e do tempo limite definido para os testes. Uma vez finalizados os testes, analise os resultados. Consulte Como analisar os resultados do Firebase Test Lab para saber mais sobre como interpretar os resultados do teste.

Próxima etapa

Leia a documentação do SDK do Google Cloud para explorar as opções de teste que têm disponibilidade geral ou estão na versão Beta.