Ir para o console

Análise de resultados no Firebase Test Lab

Há várias maneiras de usar o Firebase Test Lab para executar testes no seu app Android, incluindo a interface da linha de comando, o Android Studio, a IU do Test Lab no Console do Firebase e a API Testing. Independentemente de como esses testes são realizados, os resultados são armazenados no projeto do Firebase que você especificar. É possível analisar os resultados por meio da API ToolResults, além de qualquer uma das ferramentas mencionadas acima. Nesta página, descrevemos como entender e analisar esses resultados de teste.

Principais conceitos

Para ver os resultados de todas as suas execuções de teste anteriores, selecione Test Lab no painel de navegação esquerdo do seu projeto no Console do Firebase. Esta página mostra todas as execuções de teste dos apps que você testou com seu projeto no Test Lab.

Antes de analisar os resultados do teste, é necessário entender três conceitos:

Dimensões × execuções de teste = matriz de teste

  • Dimensões de teste: atributos do dispositivo para testar seu app, incluindo o modelo, versão do SO, localidade e orientação da tela.

  • Execuções de teste: execuções individuais de teste, cada uma com uma combinação exclusiva de dimensões que você selecionou para testar.

  • Matriz de teste: os resultados das suas execuções de teste nas dimensões selecionadas. Se qualquer execução de teste na matriz falhar, o Test Lab marcará a matriz inteira como reprovada.

As seções a seguir explicam como navegar pelos resultados do teste.

Interpretar os resultados de histórico dos testes

Quando navega pelos resultados dos testes selecionando Test Lab, você vê os resultados dos testes executados até agora.

O histórico de testes é agrupado por app. Somente as cinco matrizes mais recentes são mostradas para cada app. Se mais de uma estiver disponível, clique no link Todas as matrizes na parte inferior do teste do app para ver uma lista completa para o app.

Interpretar os resultados da matriz de teste

Ao iniciar um teste por meio da IU do Test Lab, você é redirecionado para uma página em que pode ver sua matriz de teste e clicar em uma execução de teste específica para ver os resultados. O Android Studio e o comando gcloud também oferecem um URL para a página de resultados da matriz de teste.

Em uma matriz de teste comum, você pode executar um teste em uma dezena de dispositivos diferentes ou mais. Cada execução de teste pode gerar um resultado diferente. Os possíveis resultados para cada execução de teste em uma matriz de teste incluem os especificados a seguir:

  • Aprovado Teste aprovado: nenhuma falha foi encontrada.
  • Reprovado Teste reprovado: pelo menos uma falha foi encontrada.
  • Inconclusivo Teste aprovado: os resultados do teste foram inconclusivos, possivelmente devido a um erro no Test Lab.
  • Ignorado Teste aprovado: os valores de dimensão selecionados foram incompatíveis para algumas execuções de teste na matriz. Isso ocorre quando os dispositivos escolhidos não são compatíveis com um ou mais níveis da API Android.

Para analisar os resultados agregados de todas as matrizes de teste de um app específico no seu projeto do Firebase, clique no nome do aplicativo, conforme mostrado no exemplo abaixo:

Exemplo de página de resultados da matriz de teste com apenas quatro execuções Resultados da matriz de teste

Clicar no nome do app direciona você para a lista de matrizes de teste dele. Nessa página, é possível clicar no nome de qualquer matriz para ver os resultados ou então tocar no nome do aplicativo, conforme indicado na caixa vermelha abaixo, a fim de visualizar a lista de matrizes de teste de outros apps associados ao projeto do Firebase.

Exemplo de página da lista de matrizes de teste Lista de matrizes de teste

Uma matriz de teste pode ser aprovada, reprovada ou inconclusiva. Ela será exibida como inconclusiva ou reprovada se houver algum problema na execução do teste. Caso contrário, será aprovada.

Interpretar os resultados do teste Robo

Se você tiver executado seus testes com o Robo, os resultados incluirão vídeos e capturas de tela do Robo rastreando sua IU, além das métricas de teste normais. Esses vídeos e capturas de tela têm indicações visuais das ações executadas pelo Robo durante o rastreamento, como no recurso "Mostrar toques" no Android. Você poderá usar as indicações para acompanhar o progresso do Robo e reproduzir os bugs que forem descobertos.

Exemplo de vídeo com resultados do teste Robo

Resultados do teste Robo

Como interpretar resultados de uma única execução de teste

Na página de resultados da matriz, clique em uma das execuções de teste para ver o resultado dela.

Exemplo de página de resultados da execução de teste Resultados da execução do teste

Nessa página, é exibido o tempo necessário para cada execução de teste. Para testes de instrumentação, também é possível ver os resultados de casos específicos que correspondem aos métodos no seu APK de teste, além dos resultados detalhados do teste, que incluem registros, capturas de tela e vídeos. No caso do teste Robo, os resultados detalhados também incluem um mapa de atividades que mostra graficamente os caminhos da IU que foram acessados pelo teste.

Resultados particionados dos testes de instrumentação

Para ajudar você a interpretar os resultados dos testes de instrumentação, o Test Lab separa cada teste em uma página de relatório detalhada que inclui rastreamentos de pilha, registros e vídeos. Esse recurso funciona mesmo se você não usar o Android Orchestrator.

Exemplo de página de resultados de casos de teste Resultados dos casos de teste

Métricas de desempenho

Testes executados em dispositivos físicos também retornam métricas de desempenho:

MétricaConfiguração necessária do dispositivo
Horário de inicialização do appAPI 19+
Uso da CPUAPI 21+
Uso de memória
Atividade da rede
Quadros por segundoAPI 21+ e inclui um SurfaceView
Desempenho gráficoAPI 23+

Detalhes do desempenho gráfico

O relatório de desempenho gráfico contém estatísticas sobre várias métricas gráficas principais:

  • Vsyncs perdidas: o número de eventos Vsync perdidos, dividido pelo número de frames que levaram mais de 16 ms para renderizar.
  • Alta latência de entrada: o número de eventos de entrada que levaram mais de 24 ms, dividido pelo número de frames que levaram mais de 16 ms para renderizar.
  • Thread de IU lento: o número de vezes em que o thread de IU levou mais de 8 ms para ser concluído, dividido pelo número de frames que levaram mais de 16 ms para renderizar.
  • Comandos de emissão lenta: o número de vezes em que o envio de comandos de emissão para a GPU levou mais de 12 ms, dividido pelo número de frames que levaram mais de 16 ms para renderizar.
  • Uploads de bitmap lentos: o número de vezes em que o bitmap levou mais de 3,2 ms para ser enviado para a GPU, dividido pelo número de frames que levaram mais de 16 ms para renderizar.
  • Tempo de renderização: a distribuição dos tempos de renderização para cada frame da execução do teste. Tempos de renderização maiores que 32 milissegundos causam uma lentidão perceptível na sua interface do usuário. Tempos de renderização de mais de 700 indicam frames congelados. Os dados de renderização são coletados de dumpsys graphicsstats.

Resultados detalhados do teste

Os resultados detalhados ficam disponíveis por 90 dias após a execução e são armazenados em um intervalo do Google Cloud Storage (GCS). Além disso, eles podem ser vistos no Console do Firebase. Para ver os resultados detalhados no intervalo do GCS, clique em Visualizar arquivos de origem na página de resultados da execução do teste. Quando os resultados detalhados do teste não estiverem mais disponíveis, ainda será possível ver quais deles foram aprovados ou reprovados.

Para armazenar os resultados detalhados do teste por mais de 90 dias, é preciso enviá-los para um intervalo do GCS de sua propriedade usando a opção --results-bucket da linha de comando gcloud. Em seguida, você pode definir a configuração Idade para determinar por quanto tempo os resultados são armazenados no seu intervalo do GCS. Consulte Condições de ciclo de vida para saber como alterar a configuração de Idade.