Esta página oferece uma visão geral da biblioteca do framework de teste do SDV e orienta você na configuração e execução de testes. Use o framework de teste do SDV para testes de ponta a ponta. A ferramenta é baseada no Mobly. Você escreve testes em Python.
Configure o ambiente
Esta página pressupõe que você já tenha configurado sua estação de trabalho para SDV. Para executar testes do framework, instale o virtualenv.
Dependências do Python
A abordagem recomendada para gerenciar dependências no Android é empacotar testes, Python e as dependências deles como um executável usando a configuração de build. Você precisa seguir essa abordagem no repositório de testes do SDV.
A biblioteca do framework de teste do SDV fornece essas dependências por padrão:
moblyabsl-py: obrigatório para usar a parametrização em testes.pexpect: obrigatório para a funcionalidade de comandos interativos.ptyprocess: obrigatório para a funcionalidade de comandos interativos.
Se você precisar de dependências específicas de teste, inclua-as no arquivo Android.bp do teste:
python_test_host {
…
libs: [
"<DEPENDENCY1",
"<DEPENDENCY2",
…
],
…
}
Tipos de testes do sistema
Você cria testes do sistema usando o framework de teste do SDV. O framework distingue entre os seguintes tipos. Categorize os testes corretamente:
- Testes de amostra:executam serviços de amostra do SDV e verificam se o resultado corresponde à saída esperada.
- Testes de E2E:não usam serviços de amostra do SDV.
- Testes de longa duração:projetados para períodos de execução estendidos.
- Testes de desempenho:usam a biblioteca
perfetto. - Testes de hardware:projetados para serem executados exclusivamente em um dispositivo físico, não em um Cuttlefish (CF).
Criar um teste
Todos os testes escritos usando o framework precisam estar localizados no repositório de testes. O local exato do teste depende do tipo dele.
Configurar um teste
Configure todos os testes para serem executados usando o atest e o CATBox.
Configurar o atest
O framework fornece modelos para testes de uma, duas e três máquinas virtuais (VMs). Adicione o seguinte ao arquivo Android.bp:
Uma VM
python_test_host {
...
test_config_template: ":sdv_one_device",
}
Duas VMs
python_test_host {
...
test_config_template: ":sdv_two_devices",
}
Três VMs
python_test_host {
...
test_config_template: ":sdv_three_devices",
}
O modelo padrão é suficiente para a maioria dos testes. Evite criar configurações personalizadas, a menos que haja um motivo convincente.
Atualizar o tempo limite padrão
O tempo limite padrão precisa ser suficiente para executar os testes localmente.
Se o teste falhar localmente devido a um tempo limite, considere dividi-lo em testes diferentes. Testes muito longos com muitos casos de teste podem causar um gargalo na execução.
Se você precisar definir um tempo limite maior que o padrão, continue lendo.
Substituir o tempo limite padrão
O framework não oferece suporte à extensão do modelo para execução de atest.
Portanto, use os modelos fornecidos que oferecem um tempo limite estendido.
Teste longo de uma VM
python_test_host {
...
test_config_template: ":sdv_one_device_long_test",
}
Teste longo de duas VMs
python_test_host {
...
test_config_template: ":sdv_two_devices_long_test",
}
Adicione um comentário que indique claramente a finalidade de usar esse modelo e explique por que o tempo estendido é necessário (por exemplo, se o teste exigir o download de um artefato que leva um período específico de tempo).
Enviar arquivos para um dispositivo
As etapas a seguir descrevem como enviar arquivos para um dispositivo para configurações de atest.
Enviar arquivos para um dispositivo
O framework não oferece suporte à extensão do modelo para execução de atest.
Portanto, você precisa criar um arquivo AndroidTest.xml que substitua totalmente o modelo padrão e inclua as opções target_preparer correspondentes para os dispositivos.
Copie o conteúdo do modelo:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
Atualize
{MODULE}com o nome do módulo do teste.Adicione
com.android.tradefed.targetprep.PushFilePreparera cada dispositivo.
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
Configurar o CATBox
Para executar o teste como um conjunto, é necessária uma configuração do CATBox.
Crie um novo arquivo de configuração em
libraries/sdv/sdv_catbox/res/config/e siga estas convenções de nomenclatura:- Teste de amostra:
sdv-sample-<NAME>-test.xml - Teste de E2E:
sdv-e2e-<NAME>-test.xml - Teste de longa duração:
sdv-long-running-<NAME>-test.xml - Teste de desempenho:
sdv-performance-<NAME>-test.xml - Teste de hardware:
sdv-hw-<NAME>-test.xml
- Teste de amostra:
Adicione as informações correspondentes com base no tipo de teste:
Configuração de teste de uma VM
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/one-device" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
Configuração de teste de duas VMs
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/two-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
Configuração de teste de três VMs
<!-- Copyright 2025 Google LLC -->
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/three-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
O modelo padrão é suficiente para a maioria dos testes. Evite criar configurações personalizadas, a menos que haja um motivo convincente.
Atualizar o tempo limite padrão
Se o tempo limite padrão não for suficiente para o teste, você poderá substituí-lo.
Substituir o tempo limite padrão
Para substituir o tempo limite padrão, adicione o seguinte ao final do arquivo de configuração. Testes longos precisam ter um tempo limite máximo de 10 minutos.
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
Enviar arquivos para um dispositivo
A seção a seguir descreve como enviar arquivos para um dispositivo ao configurar o CATBox.
Enviar arquivos para um dispositivo
Para enviar arquivos para o dispositivo correspondente, adicione a seguinte configuração após a opção plan:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
Se você precisar dos arquivos em cada dispositivo, adicione a configuração para cada um deles (por exemplo, name=device1, name=device2).
Execução do teste
Estas instruções pressupõem que você concluiu a configuração de um ambiente de SDV funcional.
Configure o ambiente
O framework não inicia instâncias do Cloud Virtual Device (CVD), então você precisa iniciá-las antes de executar os testes.
Configure o ambiente e inicie o destino do SDV:
. build/envsetup.sh lunch <TARGET>Inicie a primeira instância do CVD:
cvd create --config=sdv_core_instance1Inicie a segunda instância do CVD (para testes de várias VMs):
cvd create --config=sdv_core_instance2Inicie a terceira instância do CVD (para testes de várias VMs):
cvd create --config=sdv_core_instance3
Executar o atest
atest <TestModuleName>
Executar o CATBox
Esses comandos pressupõem que você esteja no diretório raiz do repositório.
- Criar o CATBox:
m catbox - (Opcional) Confira todos os planos de teste do SDV disponíveis no CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
Execute um teste:
Executar um teste de VM
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520
Executar um teste de duas VMs
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521
Executar um teste de três VMs
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522