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 Game Loop usando a CLI gcloud .

Para obter uma lista completa de comandos gcloud que você pode usar com seu aplicativo Android no Test Lab, acesse a documentação de referência do 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 do gcloud

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

  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 do Firebase no gcloud, onde PROJECT_ID é o ID do seu projeto do Firebase:
    gcloud config set project PROJECT_ID
    

Etapa 2. Verifique os dispositivos de teste disponíveis

Use os seguintes comandos gcloud para visualizar os dispositivos de teste e as localidades disponíveis para seu teste.

Como opção, você também pode baixar o aplicativo Notepad de exemplo 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 específico do Android.

    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 aplicativos (ABI) compatíveis, datas de lançamento e se o dispositivo é físico ou virtual.

  • versions list : obtenha uma lista de versões de SO 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 posteriormente executar testes 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 indicado 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, você pode especificar dispositivos usando o gcloud firebase test android run e a sinalização --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 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 exercita o aplicativo realizando uma análise estática dos vários caminhos pela interface do usuário do aplicativo e, em seguida, rastreando o aplicativo para encontrar falhas e outros problemas em potencial.

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 especificar opcionalmente seus argumentos em um arquivo de argumentos formatado em 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 dispositivo Android especificadas. 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 está 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 especificar opcionalmente seus argumentos em um arquivo de argumentos formatado em YAML. Execute gcloud topic arg-files para saber como usar esse recurso.

A CLI do gcloud é compatível com o Android Test Orchestrator . O Orchestrator requer o AndroidJUnitRunner v1.1 ou superior. Para ativá-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 o --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 era 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 suporta as ferramentas de relatório de cobertura de código EMMA e JaCoCo . Se você tiver uma ferramenta integrada à 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 ao usar 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 console do Firebase 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 nesse link para abrir a página de detalhes dessa execução.
  3. Clique em Resultados do teste 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 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 Analisar resultados do Firebase Test Lab para 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 as telas de login personalizadas usando as credenciais da conta de teste que você fornece. 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 os campos de texto em seu aplicativo, use o parâmetro --robo-directives e forneça uma lista de pares key-value separados por vírgulas, em que a key é o nome do recurso Android do elemento de IU 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 IU do 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 do Test Lab gcloud tem vários comandos e sinalizações disponíveis que permitem executar testes com especificações diferentes:

  • Sinalizador do Android Test Orchestrator : um sinalizador para habilitar o Orchestrator, uma ferramenta que permite executar cada um dos testes do 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 ações do jogador em aplicativos de jogos. Saiba mais sobre como executar testes do Game Loop com o Test Lab .

  • Sinalizador de fragmentação uniforme (em beta) : um sinalizador que especifica o número de fragmentos nos quais você deseja distribuir os casos de teste uniformemente. Os estilhaços 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 estilhaços 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 para dispositivos móveis que você executaria 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 informa 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 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ódigos de saída de script para o Test Lab

Código de saída Notas
0 Todas as execuções de teste foram aprovadas.
1 Ocorreu uma falha geral. As causas possíveis incluem: um nome de arquivo que não existe ou um erro HTTP/rede.
2 O teste foi encerrado porque comandos ou argumentos desconhecidos foram fornecidos.
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 é compatível devido a dimensões de teste incompatíveis. Este 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.