Primeiros passos com o Firebase Test Lab na linha de comando gcloud

Com o Firebase Test Lab para Android, você tem uma infraestrutura baseada em nuvem para testar apps do Android, incluindo a integração completa com a interface de linha de comando (CLI) do gcloud. Neste documento, você encontra informações sobre a instalação e a configuração necessárias para dar os primeiros passos no Test Lab a partir do gcloud.

Para ver uma lista completa dos comandos do gcloud firebase test android que você pode usar com o Test Lab, consulte gcloud firebase test android.

Criar um projeto do Firebase

Se você não tiver um projeto do Firebase para o app, acesse o Console do Firebase e clique em Criar novo projeto para fazer isso agora mesmo. Você precisa ser o proprietário ou ter permissões de edição no projeto.

Você pode usar o Test Lab para um número limitado de execuções diárias de teste nos planos Spark e Flame. Para usar o Test Lab sem limites diários de cota, faça upgrade para o plano Firebase Blaze.

Configurar o ambiente local do Google Cloud SDK

  1. Faça o download da ferramenta de linha de comando do gcloud caso ainda não tenha feito isso: Google Cloud SDK
  2. Verifique se a instalação do Cloud SDK está atualizada e se ela inclui o comando gcloud firebase:
    gcloud components update
  3. Verifique se as credenciais de autenticação estão atualizadas:
    gcloud auth login
  4. Configure seu projeto atual no gcloud:
    gcloud config set project PROJECT_ID

Como escolher as configurações do teste

Neste exemplo, você executará alguns testes em um app simples de anotações do Android chamado Notepad.

  1. Faça o download do arquivo APK binário para o app Notepad (app-debug-unaligned.apk) e dos testes de instrumentação correspondentes (app-debug-test-unaligned.apk) disponíveis no diretório NotePad/app/build/outputs/apk/ do notepad.zip.

  2. Veja a seguir a lista atual de dispositivos Android disponíveis para teste:

    
    $ gcloud firebase test android models list
    
    saída da lista de modelos Android de teste para Firebase do gcloud A primeira coluna da resposta ao comando, MODEL_ID, contém o identificador que você pode usar mais tarde para executar testes em um modelo específico. A coluna OS_VERSION_ID lista as versões do sistema operacional compatíveis com esse dispositivo. Quando você não especifica os MODEL_ID(s) para fazer o teste, é usado o padrão indicado na coluna TAGS.

  3. Saiba mais sobre um MODEL_ID específico do Android com o comando firebase test android models describe, como indicado a seguir:

    
    $ gcloud firebase test android models describe Nexus5
    
    No exemplo de comando mostrado acima, são fornecidas as informações detalhadas sobre o modelo Nexus5, inclusive a marca, o fabricante e os níveis de API compatíveis e se o modelo é físico ou virtual.

  4. Veja a lista atual das versões do SO Android disponíveis para teste:

    
    $ gcloud firebase test android versions list
    
    lista de versões de Android do gcloud É possível usar um identificador de qualquer uma das duas primeiras colunas de resposta ao comando (OS_VERSION_ID e VERSION) para depois executar testes em uma versão do SO Android. Caso você não especifique em quais versões do SO Android o teste será realizado, o padrão usado será o indicado na coluna TAGS.

  5. Veja a lista atual de localidades disponíveis para teste:

    
    $ gcloud firebase test android locales list
    
    A primeira coluna da saída do comando, LOCALE, contém o identificador que você pode usar mais tarde para executar testes de localidade. Se você não especificar as localidades para teste, a localidade padrão utilizada será inglês. A saída do comando não foi incluída aqui porque centenas de localidades estão disponíveis.

Como executar testes

Agora que você já conhece a variedade de modelos de dispositivos, versões do sistema operacional e localidades disponíveis para o teste, use essas informações para definir os dispositivos de teste com o comando gcloud firebase test android run e a sinalização --device. Esse comando e essa sinalização são usados tanto no teste automático do app pelo Robo quanto na execução dos testes de instrumentação criados especificamente para testar o app.

Como executar o teste Robo

Mesmo que não tenha testes de instrumentação, você ainda consegue procurar bugs no seu app. Use o teste Robo para fazer uma revisão automática da interface do usuário do seu app. O teste Robo ativa o app executando uma análise estática dos vários caminhos por meio da interface de usuário dele e, em seguida, rastreando o app para localizar falhas e outros possíveis problemas.

Começaremos 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 quando nenhum valor --type é especificado. Para consultar o conjunto completo de opções de linha de comando para a execução de testes, digite: gcloud help firebase test android run. Outra opção para especificar todos esses argumentos na linha de comando é defini-los em um arquivo de argumentos com formatação YAML. Execute gcloud topic arg-files para aprender a usar esse recurso.

Consulte a seção Analisar resultados de teste para saber como investigar os resultados com base no teste Robo.

Executar testes de instrumentação

Você já pode usar a ferramenta de linha de comando gcloud para executar os testes Espresso no app Notepad com as configurações especificadas do dispositivo Android. Utilize o tipo de teste instrumentation para que eles sejam executados no 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

O parâmetro --type instrumentation é implícito quando um APK de teste é especificado com o --test. Outra opção para especificar todos esses argumentos na linha de comando é defini-los em um arquivo de argumentos com formatação YAML. Execute gcloud topic arg-files para aprender a usar esse recurso.

As versões Alfa e Beta da CLI do gcloud são compatíveis com o Orquestrador de testes do Android. Para usar o Orquestrador, é preciso ter o AndroidJUnitRunner v1.0 ou posterior. Para ativá-lo, use gcloud beta firebase test android run com a sinalização
--use-orchestrator. Para desativá-lo, use a sinalização --no-use-orchestrator.

Observação: você tem a opção de controlar como os testes de instrumentação são executados no Test Lab. Para isso, é preciso usar sinalizações adicionais que não foram mostradas acima. Por exemplo, use a sinalização --test-targets para testar somente uma classe ou um método de uma classe usado pelo APK de teste. Consulte gcloud firebase test android run para saber mais.

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

O Test Lab é compatível com as ferramentas de relatório de cobertura de código EMMA e JaCoCo (em inglês). Se você tiver uma dessas ferramentas integradas à versão do seu app, poderá gerar um relatório de cobertura de código para os testes do Test Lab executando o comando gcloud firebase test android run com os seguintes argumentos:

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/coverage.ec" \
  --directories-to-pull /sdcard

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

  1. Abra o link do Console do Firebase que a ferramenta gcloud exibiu no seu terminal acima da tabela de resultados de teste.
  2. Clique em uma execução de teste na lista desse link para abrir a respectiva página de detalhes.
  3. Clique em Resultados do teste para ver o intervalo do Google 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.

Analisar os resultados do teste

Após alguns minutos, um resumo básico dos resultados do teste é mostrado na ferramenta gcloud:

Resultados de teste de comando

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

Login personalizado e entrada de texto com o teste Robo

Com o teste Robo, as telas de login que usam uma conta do Google para autenticação são preenchidas automaticamente, a menos que você use o parâmetro --no-auto-google-login. As telas de login personalizadas também são preenchidas com as credenciais da conta de teste fornecidas. Também é possível usar esse parâmetro para fornecer um texto de entrada personalizado a outros campos de texto usados pelo seu app.

Para preencher campos de texto no seu app, use o parâmetro --robo-directives e forneça uma lista de pares de key-value separados por vírgulas, em que key é o nome do recurso Android do elemento da IU de destino e value é a string de texto. Os campos EditText são compatíveis, mas os campos de texto nos elementos da IU WebView não são.

Por exemplo, use o seguinte parâmetro para o login personalizado:

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

Comandos e sinalizações da versão Beta

A CLI do gcloud do Test Lab tem vários comandos e sinalizações disponíveis na versão Beta pública:

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 gcloud. No exemplo a seguir de script bash, um teste de instrumentação é executado com tempo limite de dois minutos, e o resultado é exibido, informando se o teste teve sucesso.

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 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ódigos de saída de script do Test Lab

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.
18 O ambiente de teste para esta execução de teste não é compatível devido a dimensões de teste incompatíveis. Esse erro poderá ocorrer se o nível da API do Android selecionada 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.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.