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
- Personalize a IU conforme necessário para seu produto específico.
- 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
.
- As subclasses OEM estão em um pacote OEM, como
- Crie os auxiliares em um APK seguindo estas convenções do executor de testes.
-
Android.bp
deve declararandroid_test_helper_app
com o mesmo nome do pacote contido. -
AndroidManifest.xml
para o APK deve declarar uma propriedade de metadados chamadainteraction-helpers-prefix
com o valor do prefixo de classe escolhido no marcador anterior. - O aplicativo deve depender de
cts-helpers-core
,cts-helpers-interfaces
ecom.android.cts.helpers.aosp
. Se os auxiliares OEM implementarem totalmente todas as interfaces relevantes, entãocom.android.cts.helpers.aosp
será opcional.
-
- 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. - 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. - 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 paratestcases
.
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 argumentodevice-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 propriedadero.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.