No Android 11 ou versões mais recentes, os módulos auxiliares de interação com o dispositivo do conjunto de teste de compatibilidade (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 da interface que não está coberto pelo Documento de definição de compatibilidade do Android (CDD) ou documentos da API, podem ser realizadas enquanto ainda são aprovados no CTS.
OEMs que querem personalizar a interface do Android durante o desenvolvimento do produto e precisam ser aprovados pelo CTS podem implementar módulos auxiliares. Se você usar a implementação padrão do Android, não será necessário fazer mais nada.
Implementar módulos auxiliares
Requisitos para personalizar a interface
Verifique os módulos CDD ou Mainline para saber se há requisitos de interface. Se a interface desejada for coberta pelos módulos CDD ou Mainline, ela não poderá ser personalizada.
Se os testes do CTS que interagem com a interface desejada não usarem o framework auxiliar, essa interface não poderá ser personalizada. Trabalhe com o proprietário do teste para converter o módulo de teste antes que a interface possa ser alterada.
Caso contrário, você pode personalizar a interface.
Fluxo de trabalho de implementação
- Personalize a interface conforme necessário para seu produto específico.
- Designe os módulos auxiliares do AOSP atuais como subclasses para os módulos de teste
do CTS que precisam interagir com a interface. Substitua as interações
necessárias de forma adequada para a interface personalizada. As substituições variam de acordo
com o tipo de mudança.
- As subclasses do OEM estão em um pacote OEM, como
com.[oem].cts.helpers
. - Cada subclasse OEM é nomeada com um prefixo comum que a diferencia
da implementação do AOSP, que tem o prefixo
Default
.
- As subclasses do OEM estão em um pacote OEM, como
- Crie os auxiliares em um APK seguindo essas convenções do executor de testes.
Android.bp
precisa declararandroid_test_helper_app
com o mesmo nome do pacote contido.- A
AndroidManifest.xml
do APK precisa declarar uma propriedade de metadados chamadainteraction-helpers-prefix
com o valor do prefixo de classe escolhido no marcador anterior. - O app precisa depender de
cts-helpers-core
,cts-helpers-interfaces
ecom.android.cts.helpers.aosp
. Se os auxiliares do OEM implementarem totalmente todas as interfaces relevantes,com.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 as implementações auxiliares em vários APKs, essa propriedade poderá conter uma lista de pacotes separados por dois-pontos. - Verifique se o APK está disponível no diretório
testcases
ao executar o Tradefed para CTS. Se necessário, confirme se a classe de implementação de ajudante esperada foi escolhida examinando as mensagens do Logcat. - Opcional, mas altamente recomendado: envie sua implementação de ajudante para o 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 de
com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Se você personalizar a interface de impressão, poderá criar uma
com.oem.cts.helpers.OemCtsPrintHelper
que é uma subclasse de DefaultCtsPrintHelper
.
android_test_helper_app
em Android.bp
é chamado de 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á 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
ajudantes padrão do AOSP 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 auxiliares, os proprietários de testes podem usar a definição @Rule
documentada em
cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
.
Cada módulo do CTS que usa o framework e o comportamento auxiliar
esperado é documentado em uma interface definida em
cts/libs/helpers/core/src/com/android/cts/helpers
.
Como executar testes do CTS
Testar sem ajudantes
Além de uma propriedade, a opção de testar sem auxiliares não existe no tempo de execução no dispositivo, mas modifica opcionalmente como os testes de CTS interagem com o dispositivo. Se você precisar executar o CTS sem as implementações auxiliares, terá duas opções:
- Remova a propriedade
ro.vendor.cts_interaction_helper_packages
do dispositivo. Isso impede que os helpers sejam usados totalmente nesse build. - Remova o APK auxiliar do diretório
testcases
antes de executar o CTS. Isso impede que os helpers sejam usados por qualquer execução até que o APK seja restaurado paratestcases
.
É possível 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.
Confira 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 que contém nomes de pacotes. Ele pode receber 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 muda 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.
Como testar com personalizações
Por padrão, as implementações de referência passam no CTS no Android padrão. Verifique se as implementações do parceiro passam no CTS com personalizações da interface. Execute os módulos do CTS que abrangem a interface ou os recursos que você personalizou.
Alguns módulos ou auxiliares do CTS ainda não oferecem suporte a algumas personalizações.
- Um módulo do CTS que interage com a interface que você quer personalizar pode não usar o framework auxiliar. Espera-se que os módulos do CTS sejam convertidos no framework auxiliar com base na demanda e nas prioridades do proprietário do teste. Faça pedidos de conversão no início do processo para garantir que a conversão seja programada, semelhante a solicitar mudanças de CTS para oferecer suporte aos recursos planejados.
- As funções fornecidas por um assistente atual podem não atender totalmente às personalizações que você quer fazer. As funções auxiliares precisam abstrair as dependências da interface. Se uma função auxiliar tiver uma dependência de interface indireta, ela poderá ser tratada de forma semelhante a bugs no CTS.