Este guia descreve como executar um teste de instrumentação, Robo ou Game Loop usando a CLI gcloud .
Para obter uma lista completa dos comandos gcloud
que você pode usar com seu aplicativo Android no Test Lab, visite a documentação de referência do gcloud firebase test android
.
Antes de você começar
Adicione o Firebase ao seu projeto Android , caso ainda não o tenha feito.
Etapa 1. Configurar a CLI gcloud
- Baixe o SDK do Google Cloud
- Certifique-se de que sua instalação esteja atualizada:
gcloud components update
- Faça login na CLI gcloud usando sua Conta do Google:
gcloud auth login
- Defina seu projeto do Firebase no gcloud, onde PROJECT_ID é o ID do seu projeto do Firebase:
gcloud config set project PROJECT_ID
Isso inclui a ferramenta CLI gcloud.
Passo 2. Verifique os dispositivos de teste disponíveis
Use os comandos gcloud a seguir para visualizar dispositivos de teste e 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.
Exemplo de saída
- A coluna
models describe
: Obtenha mais informações sobre umMODEL_ID
Android específico.gcloud firebase test android models describe MODEL_ID
A saída contém a marca do modelo do dispositivo, o fabricante, as versões do sistema operacional, os níveis de API compatíveis, as interfaces binárias de aplicativo (ABI) compatíveis, as datas de lançamento e se o dispositivo é físico ou virtual.
versions list
: obtenha uma lista de versões de 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
eVERSION
) 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 indicado na colunaTAGS
será usado.Exemplo de saída
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 um código de idioma. Se você não especificar as localidades para testar, o inglês será usado como localidade padrão.
Etapa 3. Execute seu teste
Agora que você conhece a variedade de modelos de dispositivos, localidades e versões de sistema operacional disponíveis para testar seu aplicativo, você pode especificar dispositivos usando o comando gcloud firebase test android run
e a sinalização --device
para executar testes Robo ou de instrumentação.
Execute um teste Robo
Mesmo que você não tenha nenhum teste de instrumentação, ainda poderá procurar bugs no 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 através da interface do usuário do aplicativo e, em seguida, rastreia o aplicativo para encontrar falhas e outros problemas potenciais.
Para executar um teste Robo, execute o seguinte 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 \ --client-details matrixLabel="Example matrix label"
- O parâmetro
--type robo
estará implícito se nenhum valor--type
for especificado. - Para ajudar a identificar e localizar suas matrizes de teste no Firebase Console, você pode usar o sinalizador opcional
--client-details matrixLabel="Example matrix label"
para rotular sua matriz de teste. - 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 à especificação desses argumentos na linha de comando, você pode opcionalmente especificar seus argumentos em um arquivo de argumentos formatado em YAML. Execute gcloud topic arg-files
para saber como usar esse recurso.
Para saber como investigar os resultados do teste Robo, consulte Analisar os resultados do seu teste .
Execute um teste de instrumentação
Agora use a ferramenta de linha de comando gcloud
para executar os testes Espresso do aplicativo Notepad nas configurações especificadas do dispositivo Android. Use o tipo de teste instrumentation
para executar os testes em app-debug-test-unaligned.apk
da seguinte maneira:
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 --client-details matrixLabel="Example matrix label"
- O parâmetro de instrumentação
--type
estará implícito se um APK de teste for especificado com--test
. - Para ajudar a identificar e localizar suas matrizes de teste no Firebase Console, você pode usar o sinalizador opcional
--client-details matrixLabel="Example matrix label"
para rotular sua matriz de teste. - 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 à especificação desses argumentos na linha de comando, você pode opcionalmente especificar seus argumentos em um arquivo de argumentos formatado em YAML. Execute gcloud topic arg-files
para saber como usar esse recurso.
A CLI gcloud oferece suporte ao Android Test Orchestrator . O Orchestrator requer 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 a sinalizaçã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 seu teste que falhou foi realmente instável ou não usando o sinalizador --num-flaky-test-attempts
, que especifica o número de vezes que uma execução de teste deve ser tentada novamente 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 ao build 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:
- Abra o link do console do Firebase que a ferramenta
gcloud
imprimiu acima da tabela de resultados do teste em seu terminal. - Clique em uma execução de teste na lista desse link para abrir a página de detalhes dessa execução.
- Clique em Resultados do teste para acessar o intervalo do Cloud Storage com os resultados do teste dessa execução.
- 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:
A saída da execução do 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 resultados do Firebase Test Lab para Android .
Login personalizado e entrada de texto com teste Robo
O teste Robo completa 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 preencher telas de login personalizadas usando as credenciais da 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 os campos de texto no seu aplicativo, use o parâmetro --robo-directives
e forneça uma lista separada por vírgulas de pares key-value
, onde 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"). Os campos EditText
são suportados, mas não os campos de texto nos elementos da UI WebView
.
Por exemplo, você poderia 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 sinalizadores disponíveis que permitem executar testes com especificações diferentes:
Sinalização do Android Test Orchestrator : uma sinalização para ativar 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 do Game Loop : 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 de 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 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 testar o desempenho do seu aplicativo em redes não confiáveis ou imprevisíveis.
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. O exemplo de script bash 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.
Script de códigos de saída 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. Este erro poderá 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. |