O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Primeiros passos com testes de instrumentação

Veja neste guia como preparar e executar um teste de instrumentação usando o Firebase Test Lab. Para usar este guia, você precisará de um teste de instrumentação (escrito por você ou sua equipe) que usa o Espresso ou frameworks de teste do Android UI Automator 2.0. Os testes de instrumentação podem ser executados por até 45 minutos em dispositivos físicos e por até 60 minutos em dispositivos virtuais.

Nas etapas posteriores, você fará upload do APK do app e do APK de teste ao Firebase. Consulte Testar o app para saber mais sobre como criar um APK de teste. Como opção, também é possível fazer o download do app de amostra NotePad.

Etapa 1. (Opcional) Adicionar a biblioteca de capturas de tela ao app

O Test Lab oferece uma biblioteca de capturas de tela que permite fazer capturas de tela ao executar testes de instrumentação no app. Quando o teste terminar, veja as capturas de tela no Android Studio ou no Console do Firebase.

A capacidade de fazer capturas de tela já está incorporada no APK de teste app-debug-test-unaligned.apk e no app de amostra NotePad. As capturas de tela também são realizadas automaticamente quando você executa um Teste Robo.

  1. No Android Studio, abra a visualização Project e clique com o botão direito do mouse no nome do projeto. Em seguida, clique em New > Directory.

  2. Na caixa de diálogo New Directory, digite aars. Isso cria um diretório aars na raiz do seu projeto de teste (como um diretório de mesmo nível para a pasta app).

  3. Copie cloudtestingscreenshotter_lib.aar e cole-o na pasta aars.

  4. No arquivo build.gradle no nível raiz (para envolvidos no projeto) do app, adicione uma referência à pasta aars em cada bloco repositories:

    repositories {
        jcenter()
        flatDir {
            dirs '../aars'
        }
    }
    ...
  5. No diretório de nível superior do módulo (para o app de exemplo NotePad, este é o diretório app), abra o arquivo build.gradle e adicione uma dependência em cloudtestingscreenshotter_lib.aar para o bloco dependencies de nível superior:

    dependencies {
        // Cloud testing
        androidTestCompile (name:'cloudtestingscreenshotter_lib', ext:'aar')
        // Other dependencies go here
        }
    
  6. No arquivo AndroidManifest.xml, especifique as permissões do sistema para o app adicionando as seguintes linhas na tag <manifest>. Se você estiver testando no Android 10 (API de nível 29) ou posterior, omita a permissão WRITE_EXTERNAL_STORAGE. O app não exige essa permissão para ler e gravar capturas de tela no dispositivo.

    <manifest ... >
       <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
       <uses-permission android:name="android.permission.INTERNET"/>
       ...
    </manifest>
    

Quando quiser realizar uma captura de tela no teste, chame o método ScreenShotter.takeScreenshot da biblioteca cloudtestingscreenshotter_lib, em que o primeiro argumento é um rótulo que você usa para identificar a captura de tela (main_screen_2 é usado no exemplo abaixo):

Java

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);

Kotlin+KTX

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */)

Ver suas capturas de tela

Se você estiver usando o Android Studio para executar o teste, quando a execução dele for concluída, será possível comparar as capturas de tela coletadas. Para isso, selecione um elemento na árvore de resultados do teste e clique em Ver capturas de tela Ver capturas de tela.

Tela de comparação de capturas de tela

É possível selecionar e comparar capturas de tela de diferentes configurações, conforme mostrado abaixo:

Tarefa Ação
Alternar entre execuções de teste. Use o menu suspenso no canto superior esquerdo.

menu de caso de teste
Alternar entre capturas de tela em uma execução de teste. Use as setas no canto superior direito.

Alternador de capturas de tela
Adicionar painéis extras de comparação de capturas de tela ao modo de exibição atual. Clique em Comparar.

Comparar
Escolher uma dimensão de teste diferente (tipo de dispositivo, orientação, local etc.). Selecione um novo membro de dimensão na lista, na parte inferior da captura de tela.

Etapa 2. Ativar recursos de teste opcionais

É possível ativar os seguintes recursos no teste antes de executá-los com o Test Lab:

Ativar o Orchestrator

O Android Test Orchestrator é uma ferramenta que executa cada um dos testes de instrumentação do app de forma independente. O Test Lab sempre usa a versão mais recente do Orchestrator.

Para ativar o Orchestrator no Test Lab, na configuração do teste de instrumentação, clique em Opções adicionais > Executar com o Orquestrador.

Benefícios e desvantagens

  • Benefício: nenhum estado compartilhado. cada teste é executado em uma instância de instrumentação própria. Assim, o estado compartilhado não se acumula em todos os testes.
  • Benefício: falhas isoladas. Se um teste falha, ele encerra apenas a própria instrumentação. Os outros testes continuam em execução.
  • Desvantagem: tempos de execução mais longos. Cada teste executa a própria instância de instrumentação. Isso significa que o processo de teste leva um pouco mais tempo em geral. Se não for verificado, o aumento nos tempos de execução pode afetar o uso da cota ou o período faturado e fazer com que você atinja o tempo limite dos dispositivos.

Ativar fragmentação

A fragmentação de testes divide um conjunto de testes em subgrupos (fragmentos) que são executados separadamente e isolados. O Test Lab executa automaticamente cada fragmento em paralelo usando vários dispositivos e conclui todo o conjunto de testes em menos tempo.

Como funciona a fragmentação de testes

Digamos que você crie N fragmentos. Para cada dispositivo selecionado, o Test Lab cria N dispositivos idênticos e executa um subconjunto dos testes em cada dispositivo. Isso significa que os casos de testes fragmentados podem resultar em várias execuções de testes por dispositivo. Ao contrário dos casos de testes não fragmentados, que sempre resultam na execução de um teste por dispositivo. Para uma visão geral rápida dos principais conceitos do Test Lab, consulte Conceitos chave.

É possível ativar a fragmentação de testes no Console do Firebase:

  1. Na configuração do teste de instrumentação, clique em Opções adicionais.

  2. Na seção Fragmentação, digite o número de fragmentos que você quer executar.

Faturamento por fragmentos de teste

O Test Lab implementa os fragmentos usando o mecanismo de fragmentação interno do AndroidJUnitRunner. Para evitar ser cobrado por gerar fragmentos vazios (fragmentos sem casos de teste designados), o número de fragmentos que você cria deve ser menor que o número total de casos de teste. Dependendo de quanto tempo cada caso de teste leva para ser executado, geralmente é uma boa ideia atribuir de 2 a 10 casos de teste por fragmento.

Para mais informações sobre faturamento, leia Uso, cotas e faturamento.