Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Comece a testar com a CLI do gcloud

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Este guia descreve como executar um teste de instrumentação, Robo ou loop de jogo usando a CLI gcloud .

Para obter uma lista completa de comandos gcloud que você pode usar com seu aplicativo Android no Test Lab, visite a documentação de referência para gcloud firebase test android .

Antes de você começar

Se ainda não o fez, adicione o Firebase ao seu projeto Android .

Etapa 1. Configurar a CLI gcloud

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

  3. Certifique-se de que sua instalação esteja atualizada:
    gcloud components update
    
  4. Faça login na CLI do gcloud usando sua conta do Google:
    gcloud auth login
    
  5. Defina seu projeto Firebase em gcloud, onde PROJECT_ID é o ID do seu projeto Firebase:
    gcloud config set project PROJECT_ID
    

Etapa 2. Verifique os dispositivos de teste disponíveis

Use os comandos gcloud a seguir para ver os dispositivos de teste e as localidades disponíveis para seu teste.

Como opção, você também pode baixar o aplicativo Notepad de amostra para começar a executar os comandos imediatamente. Use o arquivo binário app-debug-unaligned.apk e o arquivo de testes de instrumentação app-debug-test-unaligned.apk , que estão localizados em NotePad/app/build/outputs/apk/ .

  • models list : obtenha uma lista atual de dispositivos Android disponíveis para você testar.

    gcloud firebase test android models list
    

    Na saída do comando:

    • A coluna MODEL_ID contém o identificador que você pode usar posteriormente para executar testes no modelo do dispositivo.
    • A coluna OS_VERSION_ID contém as versões do sistema operacional suportadas pelo dispositivo.

    Saída de exemplo

    gcloud firebase test android models list output

  • models describe : Obtenha mais informações sobre um MODEL_ID Android específico.

    gcloud firebase test android models describe MODEL_ID
    

    A saída contém a marca do modelo do dispositivo, fabricante, versões do sistema operacional, níveis de API compatíveis, interfaces binárias de aplicativo (ABI) compatíveis, datas de lançamento e se o dispositivo é físico ou virtual.

  • versions list : obtenha uma lista das versões do sistema operacional atualmente disponíveis para testar.

    gcloud firebase test android versions list
    

    Você pode usar um identificador de qualquer uma das duas primeiras colunas da saída do comando ( OS_VERSION_ID e VERSION ) para executar testes posteriormente em uma versão do sistema operacional Android. Se você não especificar as versões do sistema operacional Android para testar, o padrão observado na coluna TAGS será usado.

    Saída de exemplo

    gcloud android versions list

  • locales list : obtenha a lista atual de localidades disponíveis para teste.

    gcloud firebase test android versions list
    

    A primeira coluna da saída do comando, LOCALE , contém o identificador que você pode usar posteriormente para executar testes em uma localidade. Se você não especificar as localidades para testar, o inglês será usado como a localidade padrão.

Executando testes

Agora que você conhece a variedade de modelos de dispositivos, localidades e versões de SO disponíveis para testar seu aplicativo, pode especificar dispositivos usando o gcloud firebase test android run e o sinalizador --device para executar testes Robo ou de instrumentação.

Executando o teste Robo

Mesmo se você não tiver nenhum teste de instrumentação, ainda poderá procurar por bugs em seu aplicativo. Use o teste Robo para realizar uma revisão automatizada da interface do usuário do seu aplicativo. O teste Robo testa o aplicativo realizando uma análise estática dos vários caminhos por meio da interface do usuário do aplicativo e, em seguida, rastreando o aplicativo para encontrar travamentos e outros possíveis problemas.

Vamos começar executando um comando de exemplo:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s

O parâmetro --type robo é implícito se nenhum valor --type for especificado. Você pode ver o conjunto completo de opções de linha de comando para executar testes digitando: gcloud help firebase test android run . Como alternativa para especificar todos esses argumentos na linha de comando, você pode opcionalmente especificar seus argumentos em um arquivo de argumento no formato YAML. Execute gcloud topic arg-files para saber como usar esse recurso.

Consulte a seção Analisar os resultados do teste para saber como investigar os resultados do teste Robo.

Executando seus testes de instrumentação

Agora, use a ferramenta de linha de comando gcloud para executar os testes Espresso do aplicativo Notepad nas configurações de seu dispositivo Android especificado. Use o tipo de teste de instrumentation para executar os testes em app-debug-test-unaligned.apk da seguinte forma:

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape

O parâmetro --type instrumentation estará implícito se um APK de teste tiver sido especificado com --test . Como alternativa para especificar todos esses argumentos na linha de comando, você pode opcionalmente especificar seus argumentos em um arquivo de argumento no formato YAML. Execute gcloud topic arg-files para saber como usar esse recurso.

A CLI gcloud é compatível com Android Test Orchestrator . Orchestrator requer AndroidJUnitRunner v1.1 ou superior. Para habilitá-lo, use gcloud firebase test android run com o
--use-orchestrator sinalizador. Para desativá-lo, use o sinalizador --no-use-orchestrator .

Você também pode controlar como o Test Lab executa seus testes de instrumentação usando sinalizadores adicionais que não são mostrados acima. Por exemplo, você pode usar a --test-targets para testar uma única classe ou um método de classe usado pelo seu APK de teste. Você também pode descobrir se o teste que falhou foi realmente instável ou não usando --num-flaky-test-attempts , que especifica o número de vezes que uma execução de teste deve ser repetida se um ou mais de seus casos de teste falhar por qualquer motivo. Para saber mais, consulte gcloud firebase test android run .

Relatórios de cobertura de código para testes de instrumentação

O Test Lab oferece suporte às ferramentas de relatório de cobertura de código EMMA e JaCoCo . Se você tiver uma das ferramentas integradas à compilação do seu aplicativo, poderá obter um relatório de cobertura de código para testes do Test Lab executando gcloud firebase test android run com alguns argumentos adicionais. Se o Android Test Orchestrator não estiver ativado, use o seguinte:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \
  --directories-to-pull /sdcard/Download

Se você estiver gerando relatórios de cobertura de código enquanto usa o Android Test Orchestrator, modifique suas variáveis ​​de ambiente da seguinte maneira:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \
  --directories-to-pull /sdcard/Download

Quando o Test Lab terminar de executar seus testes, encontre seus relatórios de cobertura de código no Google Cloud Storage:

  1. Abra o link do Firebase console que a ferramenta gcloud imprimiu acima da tabela de resultados do teste em seu terminal.
  2. Clique em uma execução de teste na lista desse link para abrir a página de detalhes dessa execução.
  3. Clique em Test results para acessar o bucket do Cloud Storage com os resultados do teste dessa execução.
  4. Abra artifacts/coverage.ec para ver seu relatório de cobertura de código.

Analise os resultados do seu teste

Após alguns minutos, um resumo básico dos resultados do seu teste é impresso pela ferramenta gcloud:

Command test results

A saída de sua execução de teste de linha de comando também inclui um link para visualizar os resultados do teste. Para saber mais sobre como interpretar esses resultados, consulte Analisando o Firebase Test Lab para resultados do Android .

Login personalizado e entrada de texto com teste Robo

O teste Robo conclui automaticamente as telas de login que usam uma conta do Google para autenticação, a menos que você use o parâmetro --no-auto-google-login . Ele também pode concluir telas de login personalizadas usando credenciais de conta de teste fornecidas por você. Você também pode usar esse parâmetro para fornecer texto de entrada personalizado para outros campos de texto usados ​​pelo seu aplicativo.

Para preencher campos de texto em seu aplicativo, use o parâmetro --robo-directives e forneça uma lista separada por vírgulas de pares key-value , em que a key é o nome do recurso Android do elemento de interface de destino e o value é a string de texto . Você também pode usar esse sinalizador para dizer ao Robo para ignorar elementos específicos da interface do usuário (por exemplo, botão "logout"). Campos EditText são suportados, mas não campos de texto em elementos de interface do usuário WebView .

Por exemplo, você pode usar o seguinte parâmetro para login personalizado:

--robo-directives username_resource=username,password_resource=password

Comandos e sinalizadores disponíveis

A CLI gcloud do Test Lab tem vários comandos e sinalizações disponíveis que permitem executar testes com diferentes especificações:

  • Android Test Orchestrator sinalizador : um sinalizador para habilitar o Orchestrator, uma ferramenta que permite executar cada um dos testes de seu aplicativo em sua própria invocação de Instrumentation . O Test Lab sempre executa a versão mais recente do Orchestrator.

  • Sinalizadores de teste de loop de jogo : um conjunto de sinalizadores de configuração que ativam e controlam um "modo de demonstração" para simular as ações do jogador em aplicativos de jogos. Saiba mais sobre como executar testes de loop de jogo com o Test Lab .

  • Sinalizador Uniform Sharding (em beta) : um sinalizador que especifica o número de estilhaços nos quais você deseja distribuir uniformemente os casos de teste. Os fragmentos são executados em paralelo em dispositivos separados.

  • Sinalizador de fragmentação manual (em beta) : um sinalizador que especifica um grupo de pacotes, classes e/ou casos de teste a serem executados em um fragmento (um grupo de casos de teste). Os fragmentos são executados em paralelo em dispositivos separados.

  • Sinalizador de perfis de tráfego de rede (em beta) : um sinalizador que especifica qual perfil de rede seus testes usam com dispositivos físicos. Os perfis de rede emulam uma variedade de condições de rede, permitindo que você teste o desempenho do seu aplicativo em redes não confiáveis ​​ou imprevisíveis.

Como criar scripts de comandos gcloud com o 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, seriam executados usando a linha de comando gcloud. O script bash de exemplo a seguir executa um teste de instrumentação com um tempo limite de dois minutos e relata se a execução do teste foi concluída com êxito:

if gcloud firebase test android run --app my-app.apk --test my-test.apk --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 você pode usar para entender melhor os resultados dos testes executados usando scripts ou arquivos em lote.

Códigos de saída de script para Test Lab

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.
18 O ambiente de teste para esta execução de teste não é suportado devido a dimensões de teste incompatíveis. Esse erro pode ocorrer se o nível de API do Android selecionado não for compatível com o tipo de dispositivo selecionado.
19 A matriz de teste foi cancelada pelo usuário.
20 Ocorreu um erro de infraestrutura de teste.