Conjunto de 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 um computador desktop e executa casos de teste diretamente em dispositivos conectados ou em emuladores. Assim como o CTS, o VTS é um conjunto de testes automatizados que usa os seguintes componentes de software principais:

  • O arcabouço de testes Trade Federation do VTS é executado na máquina host e gerencia a execução de testes. Ele oferece a capacidade de configurar o sharding em vários dispositivos em teste (DUTs). Também é possível usar o recurso Repetição de conjunto para repetir apenas as falhas em vez de todo o conjunto de testes, o que reduz bastante o tempo de nova execução.
  • Os 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 escritos em Java.

Tipos de testes

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

Testes no estilo GTest

A maioria dos testes no VTS é do estilo GTest e verifica a implementação da HAL. O teste é escrito em C++ e executado no dispositivo. Um GTest do VTS típico itera por cada instância de uma determinada interface e executa todos os casos de teste em relação a ela. 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 estão incluídos no VTS para serem executados no ARM.

  • O Linux Test Project (external/ltp) valida a confiabilidade, a robustez e a estabilidade do kernel do Linux.

Testes no estilo JUnit

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

Testes independentes do Python3

Alguns testes do 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 usando comandos do shell.