Catch up on everthing we announced at this year's Firebase Summit. Learn more

Testar com a CLI do gcloud

Este guia descreve como executar um XCTest ou loop de jogo usando a CLI do 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 do gcloud.

  3. Verifique se a instalação está atualizada e inclui o comando gcloud firebase:
          gcloud components update
  4. Faça login na CLI do gcloud usando sua Conta do Google:
          gcloud auth login
  5. Defina seu projeto do Firebase no 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 que você execute testes em várias versões do iOS, 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 compatíveis com a versão do 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 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 um sinalizador --device separado:

    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 sinalização --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

Testar direitos especiais

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

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 baseada em token com APNs.

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 4 (opcional): automatize testes futuros criados por você.

Como escrever scripts de comandos gcloud com o 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 do 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 diversos 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 5: investigar 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. Depois da execução dos testes, é possível analisar os resultados. Consulte Como analisar os resultados do Firebase Test Lab e aprenda a interpretar esses resultados.

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 disponíveis na versão Beta.