Módulo auxiliar de interação do dispositivo CTS

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

OEMs que desejam personalizar a IU do Android durante o desenvolvimento do produto e precisam passar no 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 IU

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

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

Caso contrário, você poderá personalizar a IU.

Fluxo de trabalho de implementação

  1. Personalize a IU 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 UI. Substitua as interações necessárias de forma adequada pela IU personalizada. As substituições variam dependendo do tipo de alterações.
    • 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 possui o prefixo Default .
  3. Crie os auxiliares em um APK seguindo estas convenções do executor de testes.
    • Android.bp deve declarar android_test_helper_app com o mesmo nome do pacote contido.
    • 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, entã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 testcases ao executar o Tradefed 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 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 UI 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 está configurada 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 aos seus auxiliares, os proprietários do 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 modifica opcionalmente a forma como os testes CTS interagem com o dispositivo. Se precisar executar o CTS sem as implementações auxiliares, você terá duas opções:

  • Remova a propriedade ro.vendor.cts_interaction_helper_packages do dispositivo. Isso evita 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 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 escolha de pacote válida para a implementação 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 definida no dispositivo. O valor da propriedade segue as mesmas restrições da propriedade ro.vendor.cts_interaction_helper_packages descrita acima.

Testando com personalizações

Por padrão, as implementações de referência passam pelo CTS no Android padrão. Verifique se as implementações de parceiros passam no CTS com personalizações de UI. Execute quaisquer módulos CTS que cubram a UI ou os recursos que você personalizou.

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

  • Um módulo CTS que interage com a UI que você deseja customizar 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 ocorra 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 atender totalmente às personalizações que você deseja fazer. As funções auxiliares devem abstrair as dependências da UI. Se uma função auxiliar tiver indiretamente uma dependência da UI, isso poderá ser tratado de forma semelhante aos bugs no CTS.