Teste com a CLI do Google Cloud

Este guia descreve como executar um teste XCTest ou Game Loop usando a CLI gcloud.

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

  1. Baixe o SDK do Google Cloud
  2. Isso inclui a ferramenta CLI gcloud.

  3. Certifique-se de que sua instalação esteja atualizada e inclua 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 no gcloud, onde PROJECT_ID é o ID do seu projeto do Firebase:
         gcloud config set project PROJECT_ID

Etapa 2 : execute seu teste

Execute um XCTest

  1. Faça upload do arquivo .zip do seu teste executando o seguinte comando (se você ainda não empacotou seu aplicativo, consulte Empacotando seu XCTest ):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Escolha suas dimensões de teste.

    O Test Lab permite executar testes em diversas versões, dispositivos, orientações de tela e localidades do iOS. Essas configurações são conhecidas como dimensões de teste do teste. Para ver as opções de cada dimensão (por exemplo, versões Xcode compatíveis com a versão iOS do dispositivo), substitua models , versions ou locales por dimension no seguinte comando:

    gcloud firebase test ios dimension list

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

    Examine a lista de dimensões de teste e selecione algumas combinações nas quais você gostaria de executar o teste. Visite Planos de preços para ver o número máximo de combinações que você pode executar por dia.

  3. Depois de escolher um conjunto de dimensões de teste, você pode 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ê deseja testar, inclua uma sinalização --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 com a qual o teste foi construído e a versão padrão do Xcode usada pelo Test Lab. Para especificar uma versão compatível do Xcode para seu teste, use o sinalizador --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=11.3

    Para ajudar a identificar e localizar suas matrizes de teste no Firebase Console, você pode rotular sua matriz de teste usando a sinalização --client-details matrixLabel="<label>" no exemplo a seguir:

    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 autorizações que exigem um App ID explícito, você pode fazer isso configurando a sinalização --test-special-entitlements . O Test Lab assina novamente o aplicativo com um novo identificador de pacote para oferecer suporte a direitos especiais. Portanto, certifique-se de que não haja recursos em seu arquivo zip contendo referências diretas ao ID do pacote do aplicativo.

Notificações via push

Para autorizar solicitações de notificação push, os usuários podem criar tokens da web JSON usando a chave de assinatura privada junto 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 baseada em token com APNs.

Grupos de aplicativos

Os IDs de grupos de aplicativos são universalmente exclusivos. Isso significa que, quando assinarmos novamente os aplicativos do usuário, só poderemos usar o ID do grupo de aplicativos associado à conta do desenvolvedor do Test Lab. Se o seu teste depender de grupos de aplicativos, ele falhará.

Execute um teste de loop de jogo

Execute o comando gcloud beta firebase test ios run e use os seguintes sinalizadores para configurar a execução:

Sinalizadores para testes de Game Loop
--type

Obrigatório : especifica o tipo de teste do iOS que você deseja executar. Você pode inserir os 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. Este sinalizador só é válido ao executar testes de Game Loop.

--scenario-numbers

Os loops (também conhecidos como cenários) que você deseja executar no seu aplicativo. Você pode 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 os loops 1, 2, 3 e 5.

--device-model

O dispositivo físico no qual você deseja executar o teste (descubra quais dispositivos disponíveis você pode usar).

--timeout

A duração máxima que você deseja que seu teste seja executado. Você pode 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.

Por exemplo:

  • --timeout=200 força o término do teste quando ele for executado por até 200 segundos.
  • --timeout=1h força o término do seu teste quando ele dura até uma hora.

Por exemplo, o comando a seguir executa um teste de Game Loop que executa os 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 obter mais informações sobre a CLI gcloud, consulte a documentação de referência .

Etapa 3 (opcional) : Automatize testes futuros que você criar

Script de comandos gcloud com Test Lab

Você pode usar scripts de shell ou arquivos em lote para automatizar comandos de teste de aplicativos móveis que, de outra forma, você executaria usando a linha de comando gcloud. Este exemplo de script bash executa um XCTest com um tempo limite de dois minutos e relata se a execução do teste foi concluída com êxito:

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 de script

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

Código de saída Notas
0 Todas as execuções de teste 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 foram fornecidos comandos ou argumentos desconhecidos.
10 Um ou mais casos de teste (classes testadas ou métodos de classe) em uma execução de teste não foram aprovados.
15 O Firebase Test Lab não conseguiu determinar 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.

Passo 4 : Investigue os resultados dos testes

Quando o teste for iniciado, você receberá um link para a página Resultados do teste . Os testes podem levar alguns minutos para serem executados, dependendo do número de configurações diferentes que você selecionou e da duração do tempo limite de teste definida para seus testes. Após a execução dos testes, você poderá revisar os resultados dos testes. Consulte Analisando os resultados do Firebase Test Lab para saber mais sobre como interpretar os resultados do seu teste.

Próxima Etapa

Leia a documentação do SDK do Google Cloud para explorar as opções de teste que estão disponíveis ao público geral ou em versão beta .