Faça testes automotivos em uma caixa

O Complete Automotive Tests in a Box (CATBox) é um pacote de código aberto que oferece as estruturas e ferramentas necessárias para simplificar e executar testes automotivos com a configuração mínima. O CATBox é escalonável e compatível com as ferramentas, a infraestrutura e os testes que você usa para testar e validar as implementações do Android Automotive OS (AAOS). Assim, você pode oferecer produtos de alta qualidade no marketplace.

Design e implementação do CATBox

O conjunto de testes do CATBox fornece as ferramentas, os frameworks e os testes necessários para executar testes funcionais e de desempenho em um dispositivo de destino automotivo e usando um dispositivo complementar.

A imagem a seguir ilustra um design de alto nível de um pacote CATBox.

CATBox

Figura 1. Pacote CATBox

Tradefed

O Tradefed é um framework de teste contínuo de código aberto usado para executar testes em dispositivos Android. Para mais detalhes, consulte a Visão geral do Trade Federation.

Framework de testes automotivos

O CATBox é baseado em um framework de teste automotivo chamado Spectatio, que fornece APIs para testar vários apps em dispositivos automotivos. Ele é criado com base no UI Automator, um framework de teste de código aberto que fornece um conjunto de APIs para criar testes de IU que interagem com aplicativos do usuário e do sistema.

Downloads do pacote de teste CATBox

Android 14

O Android Automotive 14 é a versão do marco de desenvolvimento com o codinome U. Use os links a seguir para fazer o download dos pacotes de teste do CATBox para o Android 14:

Android 12

O Android 12 é a versão do marco de desenvolvimento com o codinome S. Use os links a seguir para fazer o download dos pacotes de teste do CATBox para o Android 12:

Android 11

O Android 11 é a versão do marco de desenvolvimento com o codinome R. Use os links a seguir para fazer o download dos pacotes de teste do CATBox para o Android 11:

Criar CATBox

Use o comando de build catbox quando o código do AOSP do Android estiver disponível na estação de trabalho local.

Para criar o pacote CATBox localmente:

  1. Selecione o destino do dispositivo com base na arquitetura dele e execute o comando abaixo:

    lunch <target>
    
  2. Para criar o CATBox, execute o seguinte comando:

    make catbox
    

    Esse comando cria o arquivo android-catbox.zip no diretório /out/host/linux-x86/catbox, que pode ser usado para executar testes.

Configurar o ambiente

A configuração de ambiente necessária para executar testes do CATBox é semelhante à Configuração do CTS. Para configurar o ambiente, conclua as seguintes tarefas:

Configurar e executar o CATBox

Use o framework de teste Tradefed para executar os testes em dispositivos Android. Antes de configurar o CATBox, consulte a Visão geral da Trade Federation.

Para configurar e executar o CATBox, consulte as seções abaixo.

Configurar o dispositivo

Antes de executar um plano de teste, siga estas etapas para configurar o dispositivo:

  1. Verifique se você instalou as versões recentes do Android Debug Bridge (adb) e da Android Asset Packaging Tool (AAPT), além de adicionar o local dessas ferramentas ao caminho do sistema da máquina. Para mais detalhes, consulte ADB e AAPT.

  2. Conecte pelo menos um dispositivo e prepare o dispositivo em teste (DUT, na sigla em inglês) da seguinte maneira:

    1. Para redefinir o dispositivo automotivo para a configuração original, acesse Configurações > Sistema > Redefinir opções > Apagar todos os dados.

    2. Aguarde o dispositivo reiniciar automaticamente.

    3. Verifique se o adb está ativado. Para confirmar se o dispositivo está disponível, execute o comando a seguir:

      adb devices
      
    4. Para ativar a raiz, execute este comando:

      adb -s DEVICE_SERIAL root
      

      Substitua DEVICE_SERIAL pelo ID do dispositivo automotivo.

    5. Conecte-se à rede Wi-Fi.

Extrair o pacote CATBox

Depois de configurar o dispositivo, descompacte o pacote CATBox e acesse a pasta extraída:

unzip android-catbox.zip
cd android-catbox

Executar testes no CATBox

Para executar o CATBox com os planos de teste no pacote CATBox:

./tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --serial DEVICE_SERIAL

Substitua DEVICE_SERIAL pelo ID do dispositivo automotivo. Se você tiver vários dispositivos conectados à máquina host, use DEVICE_SERIAL para diferenciá-los. Substitua TEST_PLAN_NAME pelo nome do plano de teste que você quer executar.

Para conferir a lista mais completa de planos disponíveis, use a linha de comando:

./tools/catbox-tradefed list plans | grep -i catbox

Tipos de planos de teste

A tabela a seguir mostra os planos de teste funcionais disponíveis.

Planos de teste funcional Descrição
catbox-functional Testes funcionais.
catbox-functional-app-info-setting Testes funcionais de configuração de informações do app.
catbox-functional-admin-user-grant-permissions Testes funcionais de permissões de concessão de usuário administrador.
catbox-functional-app-info-setting-ui-elements Testes funcionais de configuração de informações do app.
catbox-functional-appgrid Testes funcionais da grade de apps.
catbox-functional-base Lista de testes funcionais.
catbox-functional-bluetooth-audio Testes funcionais de áudio Bluetooth.
catbox-functional-bluetooth-palette Testes funcionais da barra de status.
catbox-functional-bluetooth-tests Testes de Bluetooth usando o Mobly.
catbox-functional-brightness-palette Testes funcionais da barra de status.
catbox-functional-btmoped Testes funcionais baseados em Bluetooth Moped.
catbox-functional-date-time-setting Testes funcionais de configuração de data e hora.
catbox-functional-dial Testes funcionais de discagem.
catbox-functional-display-setting Mostrar testes funcionais de configuração.
catbox-functional-driving-optimized-apps Testes funcionais de restrição de UX.
catbox-functional-enable-developers-option Ativar testes funcionais de opções para desenvolvedores.
catbox-functional-home Testes funcionais do Google Home.
catbox-functional-lock-screen Testes funcionais da tela de bloqueio.
catbox-functional-mediacenter Testes funcionais do Media Center.
catbox-functional-microphone-recent-apps Testes funcionais de configuração do microfone.
catbox-functional-microphone-setting Testes funcionais de configuração do microfone.
catbox-functional-multiuser Testes funcionais para vários usuários.
catbox-functional-multiuser-system-user Testes funcionais para vários usuários.
catbox-functional-navigation-bar Testes funcionais da barra de navegação.
catbox-functional-network-palette Testes funcionais da barra de status.
catbox-functional-network-setting Testes funcionais de configuração de rede.
catbox-functional-notification Testes funcionais de notificação.
catbox-functional-privacy-permission-manager Testes funcionais de configuração de permissões de apps de privacidade.
catbox-functional-privacy-setting Testes funcionais de configuração do microfone.
catbox-functional-privacy-setting-ui-elements Testes funcionais de configuração de privacidade.
catbox-functional-profile-icon Testes funcionais da barra de ícones de perfil.
catbox-functional-profiles-icon-list Testes de lista de ícones de perfis.
catbox-functional-security-setting Testes funcionais de configuração de segurança.
catbox-functional-setting Configurar testes funcionais.
catbox-functional-settings-location Configurando testes de local.
catbox-functional-sound-setting Testes funcionais de configuração de som.
catbox-functional-status-bar Testes funcionais da barra de status.
catbox-functional-storage-setting Testes funcionais de configuração de armazenamento.
catbox-functional-system-setting Testes funcionais de configuração do sistema.
catbox-functional-systemui Testes da interface do sistema.
catbox-functional-ux-restriction Testes funcionais de restrição de UX.
catbox-functional-ux-restriction-facet-bar Testes funcionais de restrição de UX.

A tabela a seguir lista os planos de teste de performance do CATBox.

Planos de teste de performance Descrição
catbox-performance-cold-app-start-up-dialer Teste de desempenho de inicialização a frio do app para discador e telefone.
catbox-performance-cold-app-start-up-mediacenter Teste de desempenho de inicialização a frio do app para Media Center.
catbox-performance-cold-app-start-up-settings Teste de desempenho de inicialização a frio do app para configurações.
catbox-performance-create-and-switch-to-new-guest Medir a latência para alternar para um novo convidado.
catbox-performance-create-and-switch-to-new-user Meça a latência para mudar para um novo usuário sem privilégios de administrador.
catbox-performance-hot-app-start-up-dialer Teste de desempenho de inicialização de apps quentes para o discador e o telefone.
catbox-performance-hot-app-start-up-mediacenter Teste de performance de inicialização de apps a quente para o Media Center.
catbox-performance-hot-app-start-up-settings Teste de desempenho de inicialização do app para as configurações.
catbox-performance-jank-appgrid Teste de desempenho para o Appgrid.
catbox-performance-jank-contact-list Teste de desempenho para Contatos.
catbox-performance-jank-media Testes de desempenho para mídia.
catbox-performance-jank-media-switch-playback Teste de desempenho para a reprodução do interruptor de mídia.
catbox-performance-jank-notifications Teste de desempenho para notificações.
catbox-performance-jank-settings Teste de desempenho para as Configurações.
catbox-performance-switch-to-existing-user Medir a latência para alternar para um usuário atual.

Executar o teste do lado do host em vários dispositivos

A execução de testes do lado do host em vários dispositivos usa o CATBox para executar o teste em uma sessão. Por exemplo, BTDiscoveryTest:

make catbox
./tools/catbox-tradefed run commandAndExit catbox-functional-bluetooth-tests --{phone}serial <serial> --{auto}serial <serial> --mobly-host:mobly-par-file-name BTDiscoveryTest

O CATBox instala o apk e, em seguida, o teste é executado no ambiente de execução correto do Python.

Analisar os resultados do teste do CATBox

Os resultados das execuções de testes funcionais e de desempenho são salvos em android-catbox/results/latest.

Tipo de resultado Local
Resultados dos testes test_result.xml
Detalhes dos testes de falha test_result_failures_suite.html
Resultados das métricas de performance /report-log-files/CatboxPerformanceTests.reportlog.json
Execuções de testes funcionais e de desempenho /android-catbox/logs/latest