Faça testes automotivos em uma caixa

O Complete Automotive Tests in a Box (CATBox) é um pacote de código aberto que fornece as estruturas e ferramentas necessárias para simplificar e executar testes automotivos com 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 suas implementações do Android Automotive OS (AAOS). Como resultado, você pode oferecer produtos de alta qualidade ao marketplace.

Design e implementação do CATBox

O conjunto de testes CATBox oferece as ferramentas, os frameworks e os testes necessários para executar testes funcionais e de desempenho em um dispositivo automotivo de destino 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 testes contínuos de código aberto usado para executar testes em dispositivos Android. Para mais detalhes, consulte Visão geral do Trade Federation.

Framework de teste automotivo

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 testes de código aberto que oferece 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 é o lançamento do marco de desenvolvimento com o codinome U. Use os links a seguir para baixar pacotes de teste do CATBox para o Android 14:

Android 12

O Android 12 é o lançamento do marco de desenvolvimento com o codinome S. Use os links a seguir para baixar os pacotes de teste do CATBox para o Android 12:

Android 11

O Android 11 é o lançamento do marco de desenvolvimento com o codinome R. Use os links a seguir para baixar os pacotes de teste do CATBox para o Android 11:

Criar CATBox

Use o comando de build catbox quando o código do AOSP 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 a seguir:

    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 do ambiente necessária para executar testes do CATBox é semelhante à configuração do CTS. Para configurar o ambiente, conclua cada uma das 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 do 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 seu dispositivo:

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

  2. Conecte pelo menos um dispositivo e prepare o dispositivo em teste (DUT) da seguinte forma:

    1. Para redefinir o dispositivo automotivo para a configuração original, acesse Configurações > Sistema > Opções de redefinição > Limpar 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 o root, execute o seguinte comando:

      adb -s DEVICE_SERIAL root

      Substitua DEVICE_SERIAL pelo ID serial do dispositivo automotivo.

    5. Conecte-se à rede Wi-Fi.

Extraia 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 serial do dispositivo automotivo. Se houver 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 testes funcionais Descrição
catbox-functional Testes funcionais.
catbox-functional-app-info-setting Testes funcionais da 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 da 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 ciclomotores Bluetooth.
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 Testes funcionais de configurações de exibição.
catbox-functional-driving-optimized-apps Testes funcionais de restrição de UX.
catbox-functional-enable-developers-option Ative os testes funcionais da opção de desenvolvedores.
catbox-functional-home Testes funcionais do 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 multiusuário.
catbox-functional-multiuser-system-user Testes funcionais multiusuário.
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ções de rede.
catbox-functional-notification Testes funcionais de notificação.
catbox-functional-privacy-permission-manager Testes funcionais da configuração de permissão do app de privacidade.
catbox-functional-privacy-setting Testes funcionais de configuração do microfone.
catbox-functional-privacy-setting-ui-elements Testes funcionais de configurações 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ções de segurança.
catbox-functional-setting Definir testes funcionais.
catbox-functional-settings-location Definindo testes de localização.
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ções 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 desempenho Descrição
catbox-performance-cold-app-start-up-dialer Teste de desempenho de inicialização a frio do app para o discador e o telefone.
catbox-performance-cold-app-start-up-mediacenter Teste de desempenho de inicialização a frio do app para a Central de mídia.
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 mudar para um novo visitante.
catbox-performance-create-and-switch-to-new-user Medir 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 app quente para o discador e o telefone.
catbox-performance-hot-app-start-up-mediacenter Teste de desempenho de inicialização de app quente para a Central de mídia.
catbox-performance-hot-app-start-up-settings Teste de desempenho de inicialização de app quente para Configurações.
catbox-performance-jank-appgrid Teste de desempenho para Appgrid.
catbox-performance-jank-contact-list Teste de desempenho para contatos.
catbox-performance-jank-media Testes de performance para mídia.
catbox-performance-jank-media-switch-playback Teste de performance para reprodução de troca de mídia.
catbox-performance-jank-notifications Teste de performance para notificações.
catbox-performance-jank-settings Teste de performance para configurações.
catbox-performance-switch-to-existing-user Mede a latência para mudar para um usuário existente.

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 do Python correto.

Analisar os resultados do teste 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