Coleta de métricas do lado do dispositivo

Ao executar testes do lado do dispositivo (instrumentações, testes do UI Automator, etc.), os coletores do lado do host podem não ser ideais porque é difícil sincronizar a coleta de métricas com um teste em execução em um dispositivo. Por exemplo, uma captura de tela tirada de forma assíncrona provavelmente perderá a tela desejada e será inútil.

Para atender a esses casos de uso, existe uma versão do lado do dispositivo de nossos coletores e pode ser usada em qualquer instrumentação 'AndroidJunitRunner'. O BaseMetricListener pode ser implementado para relatar automaticamente as métricas coletadas de forma totalmente compatível com o pipeline de relatórios do Tradefed.

Esta biblioteca é dissociada do próprio Tradefed e pode ser usada sem o Tradefed.

Se você estiver usando o executor ' AndroidJUnitTest ' do Tradefed, basta especificar a seguinte opção de linha de comando para que seu coletor seja executado com seus testes:

  --device-listeners android.device.collectors.ScreenshotListener

CUIDADO: para que as classes do coletor sejam resolvidas em tempo de execução, seu APK de instrumentação provavelmente precisará incluí-las estaticamente adicionando o seguinte ao seu makefile:

  LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib

Implementação

Ao implementar sobre a classe base BaseMetricListener , você pode escolher quando deseja coletar suas métricas durante o ciclo de vida da instrumentação:

  • Quando uma execução de teste é iniciada: onTestRunStart
  • Quando um caso de teste é iniciado: onTestStart
  • Quando um caso de teste termina: onTestEnd
  • Quando um caso de teste falha: onTestFail
  • Quando uma execução de teste termina: onTestRunEnd

Interação

A coleta de métricas no lado do dispositivo é feita de forma síncrona com a própria execução da instrumentação, e as métricas são passadas de volta para os resultados da instrumentação e analisadas pelo Tradefed para serem relatadas como parte da invocação.