Módulo Auxiliar de Interação de Dispositivo CTS

Para o Android 11 ou superior, os módulos auxiliares de interação do dispositivo do Compatibility Test Suite (CTS) permitem personalizar como determinados testes do CTS interagem com a interface do usuário (UI) em um dispositivo específico. Isso significa que ações, como substituir um elemento de interface do usuário que não é coberto pelo Documento de Definição de Compatibilidade do Android (CDD) ou documentos da API, podem ser feitas enquanto ainda passam pelo CTS.

Os OEMs que desejam personalizar a interface do usuário do Android durante o desenvolvimento do produto e precisam passar pelo CTS podem implementar módulos auxiliares. Se você usar a implementação padrão do Android, nenhum trabalho adicional será necessário.

Implementando módulos auxiliares

Requisitos para personalizar a interface do usuário

Verifique os módulos CDD ou Mainline para quaisquer requisitos de interface do usuário. Se a interface do usuário desejada for coberta pelos módulos CDD ou Mainline, essa interface do usuário não poderá ser personalizada.

Se os testes CTS que interagem com a interface do usuário desejada não usarem a estrutura auxiliar, essa interface do usuário não poderá ser personalizada. Trabalhe com o proprietário do teste para converter o módulo de teste antes que a interface do usuário possa ser alterada.

Caso contrário, você pode personalizar a interface do usuário.

Fluxo de trabalho de implementação

  1. Personalize a interface do usuário conforme necessário para seu produto específico.
  2. Designe os módulos auxiliares AOSP existentes como subclasses para os módulos de teste CTS que precisam interagir com a interface do usuário. Substitua as interações necessárias adequadamente para a interface do usuário personalizada. As substituições variam de acordo com o tipo de alteração.
    • As subclasses OEM estão em um pacote OEM, como com.[oem].cts.helpers .
    • Cada subclasse OEM é nomeada com um prefixo comum que a distingue da implementação AOSP, que tem o prefixo Default .
  3. Crie os auxiliares em um APK seguindo estas convenções de executores de teste.
    • Android.bp deve declarar android_test_helper_app com o mesmo nome do pacote contido.
    • O AndroidManifest.xml para o APK deve declarar uma propriedade de metadados chamada interaction-helpers-prefix com o valor do prefixo de classe escolhido no marcador anterior.
    • O aplicativo deve depender de cts-helpers-core , cts-helpers-interfaces e com.android.cts.helpers.aosp . Se os auxiliares OEM implementarem totalmente todas as interfaces relevantes, o com.android.cts.helpers.aosp será opcional.
  4. Defina a propriedade ro.vendor.cts_interaction_helper_packages na imagem do dispositivo para incluir o nome do APK. Se você precisar separar suas implementações auxiliares em vários APKs, essa propriedade poderá conter uma lista de pacotes separados por dois pontos.
  5. Certifique-se de que o APK esteja disponível no diretório de casos de teste ao executar o testcases for CTS. Se necessário, confirme se a classe de implementação auxiliar esperada foi escolhida examinando as mensagens do logcat.
  6. Opcional, mas altamente recomendado: envie sua implementação auxiliar ao AOSP ou disponibilize-a para testes de terceiros.

Exemplo de implementação do auxiliar

Por exemplo, CtsPrintTestCases espera um auxiliar com a interface definida em ICtsPrintHelper . A implementação do AOSP é chamada com.android.cts.helpers.aosp.DefaultCtsPrintHelper .

Se você personalizar a interface do usuário de impressão, poderá criar com.oem.cts.helpers.OemCtsPrintHelper que subclasse DefaultCtsPrintHelper . android_test_helper_app em Android.bp é denominado com.oem.cts.helpers , que produz com.oem.cts.helpers.apk e declara interaction-helpers-prefix como Oem em AndroidManifest.xml .

A propriedade do dispositivo ro.vendor.cts_interaction_helper_packages é definida como com.oem.cts.helpers .

Implementações de referência

As implementações de referência incluem interfaces em cts/libs/helpers e os auxiliares AOSP padrão em cts/helpers . A interface de nível superior está documentada em cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java .

Para conectar o teste CTS a seus auxiliares, os proprietários de teste podem usar a definição @Rule documentada em cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java .

Cada módulo CTS que usa a estrutura e seu comportamento auxiliar esperado é documentado em uma interface definida em cts/libs/helpers/core/src/com/android/cts/helpers .

Executando testes CTS

Testando sem ajudantes

Além de uma propriedade, a opção de testar sem auxiliares não existe em tempo de execução no dispositivo, mas opcionalmente modifica como os testes CTS interagem com o dispositivo. Se você precisar executar o CTS sem as implementações auxiliares, você tem duas opções:

  • Remova a propriedade ro.vendor.cts_interaction_helper_packages do dispositivo. Isso impede que os auxiliares sejam usados ​​inteiramente nessa compilação.
  • Remova o APK auxiliar do diretório testcases antes de executar o CTS. Isso evita que os auxiliares sejam usados ​​por qualquer execução até que o APK seja restaurado para os casos de testcases .

Você pode alterar as configurações padrão com argumentos Tradefed e o controle de propriedade ro.vendor.cts_interaction_helper_packages , que é de onde o APK auxiliar é carregado.

Consulte a seguir os valores ou intervalos esperados para cada uma das configurações disponíveis.

  • ro.vendor.cts_interaction_helper_packages é uma string separada por dois pontos contendo nomes de pacotes. Pode assumir qualquer valor que seja uma opção de pacote válida para a implementação do auxiliar do OEM.
  • cts-tradefed aceita um argumento device-interaction-helper:property-name que altera temporariamente a propriedade esperada para uma execução de teste, como --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp' . O valor do nome da propriedade pode ser qualquer propriedade que você definir no dispositivo. O valor da propriedade segue as mesmas restrições da propriedade ro.vendor.cts_interaction_helper_packages descrita acima.

Testes com personalizações

Por padrão, as implementações de referência passam CTS no estoque Android. Verifique se as implementações de parceiros são aprovadas pelo CTS com personalizações de interface do usuário. Execute os módulos CTS que cobrem a interface do usuário ou os recursos que você personalizou.

Certos módulos ou auxiliares CTS podem não suportar algumas personalizações ainda.

  • Um módulo CTS que interage com a interface do usuário que você deseja personalizar pode não usar a estrutura auxiliar. Espera-se que os módulos CTS sejam convertidos para a estrutura auxiliar com base na demanda e nas prioridades do proprietário do teste. Arquive solicitações de conversão no início do processo para garantir que a conversão seja realizada dentro do cronograma, semelhante a solicitar alterações de CTS para oferecer suporte aos recursos planejados.
  • As funções fornecidas por um auxiliar existente podem não abordar totalmente as personalizações que você deseja fazer. As funções auxiliares devem abstrair as dependências da interface do usuário. Se uma função auxiliar indiretamente tiver uma dependência de interface do usuário, isso pode ser tratado de maneira semelhante a bugs no CTS.