En este documento, se proporciona una descripción general del framework de pruebas de SDV y se te guía para configurar y ejecutar pruebas. Usa el framework de pruebas de SDV para realizar pruebas de extremo a extremo. La herramienta se basa en Mobly y escribes pruebas en Python.
Configura el entorno
En este documento, se supone que ya configuraste tu estación de trabajo para la SDV. Para ejecutar pruebas de Framework, instala virtualenv.
Dependencias de Python
El enfoque recomendado para administrar dependencias en Android es empaquetar pruebas, Python y sus dependencias como un ejecutable con la configuración de compilación. Debes seguir este enfoque en el repositorio de pruebas del SDV.
La biblioteca del framework de pruebas de SDV proporciona estas dependencias de forma predeterminada:
moblyabsl-pySe requiere para usar la parametrización en las pruebas.pexpectSe requiere para la funcionalidad de comandos interactivos.ptyprocessSe requiere para la funcionalidad de comandos interactivos.
Si necesitas dependencias específicas para las pruebas, inclúyelas en el archivo Android.bp de la prueba.
python_test_host {
…
libs: [
"<DEPENDENCY1",
"<DEPENDENCY2",
…
],
…
}
Tipos de pruebas del sistema
Crearás pruebas del sistema con el framework de pruebas de SDV. El framework distingue entre los siguientes tipos. Categoriza las pruebas correctamente:
- Pruebas de muestra: Ejecuta servicios de muestra del SDV y verifica que el resultado coincida con el resultado esperado.
- Pruebas E2E: No uses servicios de muestra de SDV.
- Pruebas de larga duración: Están diseñadas para períodos de ejecución prolongados.
- Pruebas de rendimiento: Usa la biblioteca
perfetto. - Pruebas de hardware: Están diseñadas para ejecutarse exclusivamente en un dispositivo físico, no en un Cuttlefish (CF).
Crea una prueba
Todas las pruebas escritas con el framework deben ubicarse en el repositorio de pruebas. La ubicación exacta de la prueba depende de su tipo.
Cómo configurar una prueba
Configura todas las pruebas para que se ejecuten con atest y CATBox.
Configura atest
El framework proporciona plantillas para pruebas de una, dos y tres máquinas virtuales (VM). Agrega lo siguiente a tu archivo Android.bp:
Una VM
python_test_host {
...
test_config_template: ":sdv_one_device",
}
Dos VMs
python_test_host {
...
test_config_template: ":sdv_two_devices",
}
Tres VMs
python_test_host {
...
test_config_template: ":sdv_three_devices",
}
La plantilla predeterminada es suficiente para la mayoría de las pruebas. Evita crear configuraciones personalizadas, a menos que haya un motivo convincente.
Actualiza el tiempo de espera predeterminado
El tiempo de espera predeterminado debería ser suficiente para ejecutar las pruebas de forma local.
Si la prueba falla de forma local debido a un tiempo de espera agotado, considera dividirla en diferentes pruebas. Las pruebas muy largas con muchos casos de prueba pueden causar un cuello de botella en la ejecución.
Si debes establecer un tiempo de espera más alto que el predeterminado, sigue leyendo.
Anula el tiempo de espera predeterminado
El framework no admite la extensión de la plantilla para la ejecución de atest.
Por lo tanto, usa las plantillas proporcionadas que ofrecen un tiempo de espera extendido.
Prueba de larga duración de una VM
python_test_host {
...
test_config_template: ":sdv_one_device_long_test",
}
Prueba de dos VMs de larga duración
python_test_host {
...
test_config_template: ":sdv_two_devices_long_test",
}
Agrega un comentario que indique claramente el propósito de usar esta plantilla y explique por qué es necesario el tiempo extendido (por ejemplo, si la prueba requiere descargar un artefacto que lleva una cantidad específica de tiempo).
Cómo enviar archivos a un dispositivo
En los siguientes pasos, se describe cómo transferir archivos a un dispositivo para las configuraciones de atest.
Cómo enviar archivos a un dispositivo
El framework no admite la extensión de la plantilla para la ejecución de atest.
Por lo tanto, debes crear un archivo AndroidTest.xml que reemplace por completo la plantilla predeterminada y que incluya las opciones de target_preparer correspondientes para los dispositivos.
Copia el contenido de la plantilla:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
Actualiza
{MODULE}con el nombre del módulo de tu prueba.Agrega
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>
Configura CATBox
Para ejecutar la prueba como un paquete, se requiere una configuración de CATBox.
Crea un archivo de configuración nuevo en
libraries/sdv/sdv_catbox/res/config/y sigue estas convenciones de nomenclatura:- Prueba de ejemplo:
sdv-sample-<NAME>-test.xml - Prueba E2E:
sdv-e2e-<NAME>-test.xml - Prueba de larga duración:
sdv-long-running-<NAME>-test.xml - Prueba de rendimiento:
sdv-performance-<NAME>-test.xml - Prueba de hardware:
sdv-hw-<NAME>-test.xml
- Prueba de ejemplo:
Agrega la información correspondiente según el tipo de prueba:
Configuración de prueba de una 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>
Configuración de prueba de dos 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>
Configuración de prueba de tres 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>
La plantilla predeterminada es suficiente para la mayoría de las pruebas. Evita crear configuraciones personalizadas, a menos que haya un motivo convincente.
Actualiza el tiempo de espera predeterminado
Si el tiempo de espera predeterminado no es suficiente para tu prueba, puedes anularlo.
Anula el tiempo de espera predeterminado
Para anular el tiempo de espera predeterminado, agrega lo siguiente al final de tu archivo de configuración. Las pruebas largas deben tener un tiempo de espera máximo de 10 minutos.
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
Cómo enviar archivos a un dispositivo
En la siguiente sección, se describe cómo transferir archivos a un dispositivo cuando se configura CATBox.
Cómo enviar archivos a un dispositivo
Para transferir archivos al dispositivo correspondiente, agrega la siguiente configuración después de la opción 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>
Si necesitas los archivos en cada dispositivo, agrega la configuración para cada uno (por ejemplo, name=device1, name=device2).
Ejecución de prueba
En estas instrucciones, se supone que ya configuraste un entorno de SDV en funcionamiento.
Configura el entorno
El framework no inicia instancias de Cloud Virtual Device (CVD), por lo que debes iniciarlas antes de ejecutar las pruebas.
Configura el entorno y lanza el destino de la SDV:
. build/envsetup.sh lunch <TARGET>Inicia la primera instancia de Cloud Virtual Device (CVD):
cvd create --config=sdv_core_instance1Inicia la segunda instancia de Cloud Virtual Device (CVD) (para pruebas de varias VMs):
cvd create --config=sdv_core_instance2Inicia la tercera instancia de Cloud Virtual Device (CVD) (para pruebas de varias VMs):
cvd create --config=sdv_core_instance3
Ejecuta atest
atest <TestModuleName>
Ejecuta CATBox
En estos comandos, se supone que estás en el directorio raíz del repositorio.
- Compila CATBox:
m catbox - Opcional: Consulta todos los planes de prueba de SDV disponibles en CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
Ejecuta una prueba:
Ejecuta una prueba 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
Ejecuta la prueba de dos 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
Ejecuta la prueba de tres 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