Teste de fornecedor (VTS) e infraestrutura

O Conjunto de teste de fornecedor do Android (VTS) oferece testes extensivos sobre o seguinte:

  • Kernel
  • Camada de abstração de hardware (HAL)

O VTS é executado em uma máquina de mesa e executa casos de teste diretamente em dispositivos conectados ou nos emuladores. Semelhante ao CTS, o VTS é um conjunto de testes automatizados que usa os seguintes componentes principais de software:

  • O arcabouço de testes Trade Federation do VTS é executado na máquina host e gerencia a execução do teste. Ele oferece a capacidade de configurar o sharding em vários dispositivos em teste (DUTs). Também é possível usar o recurso Suite Retry para tentar novamente apenas as falhas em vez de todo o conjunto de testes, o que reduz bastante o tempo de execução.
  • Casos de teste individuais são executados no DUT. Os casos de teste podem ser testes no estilo GTest, testes de kernel ou testes no estilo JUnit programados em Java.

Tipos de testes

Os vários tipos de testes de VTS são descritos nas seções a seguir.

Testes no estilo GTest

A maioria dos testes no VTS são testes no estilo GTest que verificam a implementação do HAL. O teste é escrito em C++ e executado no dispositivo. Um GTest VTS típico faz a iteração de cada instância de uma determinada interface e executa todos os casos de teste nele. Consulte VtsHalHealthStorageV1_0TargetTest para ver um exemplo.

Testes do kernel do Linux

  • O kselftest (external/linux-kselftest) é uma coleção de testes incluídos no repositório do kernel do Linux em tools/testing/selftests, dos quais 23 são incluídos no VTS para execução em ARM.

  • Os testes do Linux Test Project (external/ltp) validam a confiabilidade, a robustez e a estabilidade do kernel do Linux.

Testes no estilo JUnit

Um pequeno conjunto de testes orientados a host no VTS são testes no estilo JUnit, por exemplo, KernelApiSysfsTest. Os testes Java são implementados como BaseHostJUnit4Test, que é associado a um dispositivo de teste e pode executar comandos do shell para realizar a validação.

Testes independentes do Python3

Alguns testes VTS, como vts_treble_sys_prop_test, são escritos em Python3. Os testes baseados em Python são implementados como unittest.TestCase, e cada caso de teste pode interagir com o dispositivo por comandos do shell.