Para dispositivos com Android 6 ou Android 7, você pode testar o provisionamento de dispositivos usando o Android Enterprise (AE) Test Harness, que é um conjunto de testes para validar a compatibilidade empresarial de dispositivos Android. O conjunto inclui aplicativos de suporte, casos de teste, arquivos de configuração e um executor de teste ( afw-test-tradefed
) construído em cts-tradefed
. Antes de configurar o AE Test Harness, certifique-se de concluir o Provisioning for Device Administration .
Para dispositivos com Android 8 ou superior, o uso do AE Test Harness está obsoleto .
Configurando um ambiente de desenvolvimento
O ambiente de desenvolvimento para o AE Test Harness é semelhante ao sistema operacional Android. Siga as etapas em Requisitos para configurar uma máquina de desenvolvimento.
Baixando o código fonte
Faça download do código-fonte do AE Test Harness usando as etapas em Download da fonte . O código-fonte do AE Test Harness está no projeto ./test/AfwTestHarness
. O nome da ramificação determina a versão do AE Test Harness para download (cada plataforma Android tem uma versão separada do AE Test Harness). Por exemplo, o nome da ramificação do Android 7.0 Nougat é afw-test-harness-nougat-dev
. Para inicializar o repositório e baixar o código-fonte para esta ramificação, use os seguintes comandos:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
repo init -u https://android.googlesource.com/platform/manifest -b afw-test-harness-nougat-dev
repo sync -j24
Para verificar o código-fonte de uma versão diferente, especifique a ramificação com a tag correspondente. As filiais disponíveis incluem:
Nome da Filial | Plataforma Android Suportada |
---|---|
afw-test-harness-nougat-dev | Android 7.0 |
afw-test-harness-2.1 | Android 7.0 |
afw-test-harness-marshmallow-dev | Android 6.0 |
afw-test-harness-1.5 | Android 6.0 |
Outros projetos de dependência necessários para construir o chicote também são baixados com o código-fonte.
Visualizando no Android Studio
Para visualizar e editar o código-fonte no Android Studio:
- Execute os seguintes comandos
make idegen
development/tools/idegen/idegen.sh
- No Android Studio, abra
android.ipr
.
O código-fonte do AE Test Harness está em test/AfwTestHarness
.
Configurando o Chicote de Teste AE
Você pode personalizar o chicote configurando test/AfwTestHarness/afw-test.props
. Para executar o chicote com êxito, conclua as etapas a seguir:
- Configure a rede Wi-Fi em
afw-test.props
com as seguintes propriedades:wifi_ssid wifi_password (optional) wifi_security_type (optional, available options are: NONE, WEP or WPA)
- Obtenha pelo menos uma conta de um domínio vinculado ao Test DPC como seu controlador de política de dispositivo. Especifique os detalhes em
afw-test.props
com as seguintes propriedades:work_account_username work_account_password
O AE Test Harness usa o Test DPC para testar os fluxos de provisionamento, portanto, as contas devem se vincular ao Test DPC para executar o teste.
Construindo o Chicote de Teste AE
Inicialize a configuração de compilação usando:
source build/envsetup.sh
lunch
Selecione um tipo de dispositivo e pressione Enter .
Construa o chicote usando:
make afw-test-harness -j32
Isso cria um diretório ( out/host/linux-x86/afw-th/android-cts
) com todos os binários, arquivos de configuração e ferramentas necessários para executar o equipamento de teste. Este diretório também é compactado em um arquivo ( out/host/linux-x86/afw-th/android-afw-test-harness.zip
) para distribuição.
Executando o Chicote de Teste AE
Use as etapas a seguir para executar o AE Test Harness:
- Em seu ambiente de compilação, inicie o executor de teste usando:
afw-test-tradefed
Isso inicia o consolects-tf
, carrega planos de teste, casos de teste eafw-test.props
deout/host/linux-x86/afw-th/android-cts
. - Na pasta descompactada de
android-afw-test-harness.zip
, inicie o executor de teste usando:cts-tf> ./android‐cts/tools/afw-test‐tradefed
Isso carrega planos de teste, casos de teste eafw-test.props
do diretórioandroid-cts
. Certifique-se de que./android‐cts/repository/testcases/afw-test.props
tenha a conta de trabalho e a configuração de Wi-Fi. - Execute um plano de teste. Cada plano de teste é um arquivo XML que contém um conjunto de pacotes de teste do diretório de pacotes de teste
AfwTestHarness/tests
. Os planos comuns incluem:-
afw-userdebug-build
. Contém todos os pacotes de teste que requerem uma compilação userdebug. -
afw-user-build
. É executado em uma compilação do usuário, mas requer que o dispositivo de teste seja configurado corretamente, incluindo a conclusão da configuração inicial e a ativação da depuração USB.
Para executar o plano de testeafw-userdebug-build
, use:cts-tf> run cts --plan afw-userdebug-build
Para ver todos os planos de teste, use o comandolist plans
. Para visualizar as definições do plano, consulteout/host/linux-x86/afw-th/android-cts/repository/plans
. -
- Execute um pacote de teste. Para executar um único pacote de teste, use
cts-tf> run cts --package com.android.afwtest.NfcProvisioning
Para visualizar todos os pacotes, use o comandolist packages
. Para mais opções, use o comandorun cts --help
.
Depurando o equipamento de teste AE
Execute todos os comandos no console afw-test-tradefed ( cts-tf
), que você pode iniciar executando afw-test-tradefed
.
- Exiba mais informações com os sinalizadores
-l INFO
ou-l DEBUG
. Exemplo:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG
- Execute o equipamento de teste em um dispositivo específico com o sinalizador
-s
. Exemplo:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG -s device_sn
- Execute o chicote de teste em todos os dispositivos conectados com o sinalizador
--all-devices
. Exemplo:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG --all-devices
- Visualize as execuções em execução atuais usando
list invocations
ouli
. - Visualize o resumo das execuções de teste anteriores usando os
list results
oulr
. - Veja outros comandos de
list
usandohelp list
. - Monitore o logcat em tempo real com filtro usando
afwtest
, abra outro terminal e inicie o logcat usando:adb logcat | grep afwtest
. Após a conclusão de um teste:- Veja os logs em
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
. O logcat completo do dispositivo e o log do host (logsafw-test-tradefed
) são salvos em arquivos zip separados. - Encontre informações relevantes pesquisando no logcat do dispositivo por afwtest . Exemplo:
zless out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time /device_logcat_ random-number .zip | grep afwtest
- Para visualizar o log completo do afw-test-tradefed, use:
zless out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time /host_log_ random-number .zip
- Veja os logs em
- Um pacote de teste automatiza um fluxo de provisionamento corporativo passando pelas páginas da interface do usuário e gravando um log de navegação no arquivo logcat do dispositivo para cada página. Exemplo:
afwtest.AutomationDriver: Navigating:com.android.afwtest.uiautomator.pages.gms.AddAccountPage
As páginas de interface do usuário para o pacote de testecom.android.afwtest.NfcProvisioning
incluem:-
com.android.afwtest.uiautomator.pages.managedprovisioning.NfcProvisioningPage
-
com.android.afwtest.uiautomator.pages.PageSkipper
-
com.android.afwtest.uiautomator.pages.LandingPage
-
- Se um teste falhou durante o processo de provisionamento, o logcat contém um erro semelhante a:
TestRunner: java.lang.RuntimeException: Failed to load page: com.android.afwtest.uiautomator.pages.packageinstaller.DeviceAccessPage
Isso geralmente é causado por erros em uma página de interface do usuário anterior ou na página que falhou ao carregar, portanto, tente encontrar outras mensagens de erro no logcat antes desse erro , em seguida, tente reproduzi-lo manualmente seguindo o fluxo de provisionamento. - Se um pacote de teste falhar:
- Uma captura de tela é salva em
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
usando a seguinte sintaxe:screenshot-test_ test_class_full_name _ test_case_name - random_number .png
. Essas informações também são registradas no log do host. - Um relatório de bug é salvo em
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
como:bug- test_class_full_name _ test_case_name - random_number .zip
.
- Uma captura de tela é salva em
- Após a execução de todos os pacotes de teste, uma captura de tela é feita e salva em
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
as:screenshot- random_number .png
. Essas informações também são registradas no log do host.
Perguntas frequentes
Posso executar o plano de teste afw-userdebug-build
em um dispositivo atualizado com a compilação do usuário?
Não. Os pacotes de teste na fábrica do plano afw-userdebug-build
redefinem o dispositivo de teste antes de executar o fluxo de teste real e exigem que a depuração adb
seja habilitada automaticamente. Com uma compilação de usuário, a depuração adb
pode ser habilitada apenas alterando manualmente a configuração nas opções do desenvolvedor.
Posso executar o plano de teste afw-user-build
em um dispositivo atualizado com a compilação userdebug?
Sim, mas recomendamos que você execute este plano de teste em uma compilação de usuário.
Às vezes, meu teste falha porque o carregamento da interface do usuário leva muito tempo. Como posso consertar isso?
Defina a configuração timeout_size
em ./android-cts/repository/testcases/afw-test.props
. As configurações válidas são: S, M, L, XL, XXL.
O pacote de teste com.android.afwtest.NfcProvisioning
(ou SuwDoProvisioning
) falha no meu dispositivo porque a configuração inicial instalada mostra a interface do usuário personalizada (como Termos e condições) após a conclusão do provisionamento. Como posso pular essa interface do usuário personalizada?
Deve haver uma interface do usuário mínima após o processo de provisionamento. O equipamento de teste ignorará automaticamente essa interface do usuário se a interface do usuário tiver um botão com texto significativo ou descrição de conteúdo que contenha qualquer uma das seguintes palavras: Ignorar, Concluir, Concluído, Aceitar, Concordar, Avançar, Continuar ou Continuar. Como alternativa, você pode definir um botão em afw-test.props
para configurar o equipamento de teste para ignorar sua interface do usuário. Exemplo:
oem_widgets=your_btn your_btn.text=your_customized_text your_btn.package=your_package your_btn.action=click
Para definir vários widgets, separe usando vírgulas.
O pacote de teste com.android.afwtest.NfcProvisioning
(ou SuwDoProvisioning
) falhou e a última tela da interface do usuário é "Verifique sua conta". Por que isso acontece e como posso recuperar o dispositivo de teste?
Essa falha ocorre porque o pacote de teste anterior falhou ao limpar a proteção de redefinição de fábrica no final do teste. Você deve inserir manualmente a conta para desbloquear o dispositivo.
Meu dispositivo precisa de mais tempo para redefinir as configurações de fábrica. Posso estender o tempo limite de redefinição de fábrica?
Sim. Configure a configuração factory_reset_timeout_min
em afw-test.props
. As configurações válidas estão em minutos; você pode definir qualquer número de minutos que funcione com o seu dispositivo.