Banco de pruebas
Para que una prueba forme parte de VTS, debe tener la siguiente configuración en Android.bp
.
test_suites: ["vts"],
Además, agregar la prueba al conjunto general-tests
le permite ser parte de un conjunto de mapeo de pruebas utilizado en comprobaciones previas al envío.
Configuración de prueba
En la mayoría de los casos, la configuración de prueba, que es un archivo XML utilizado por Trade Federation para ejecutar una prueba VTS, se genera automáticamente durante la compilación. Sin embargo, puede personalizar la configuración de la prueba.
Cree un archivo de configuración de prueba personalizado
Crear un nuevo archivo XML de prueba desde cero puede resultar complicado, ya que implica comprender cómo funciona el arnés de prueba, así como la diferencia entre cada corredor de prueba. El archivo de configuración de prueba generado automáticamente está diseñado para facilitar este proceso.
Si debe personalizar el archivo XML de prueba, puede utilizar el archivo generado automáticamente como punto de partida.
Para ubicar el archivo de configuración de prueba generado automáticamente, primero ejecute el comando make
para crear la configuración, como se muestra a continuación.
$ m VtsHalUsbV1_1TargetTest
En su directorio de compilación, puede buscar el archivo de configuración según el nombre del módulo, como se muestra a continuación.
$ find out/ -name VtsHalUsbV1_1TargetTest.config
Puede haber varias copias del archivo y puede utilizar cualquiera de ellas. Copie el archivo .config
al directorio donde está el archivo Android.bp
.
Si solo hay un módulo de prueba en el archivo Android.bp
, puede cambiar el nombre del archivo XML a AndroidTest.xml
y el sistema de compilación lo usará automáticamente como archivo de configuración del módulo de prueba. De lo contrario, agregue un atributo test_config
al módulo, como se muestra en el siguiente ejemplo.
test_config: "VtsHalUsbV1_1TargetTest.xml",
Ahora tiene un archivo de configuración de prueba con el que trabajar e implementar la personalización.
Forzar la ejecución de la prueba con adb root
La mayoría de las pruebas VTS requieren privilegios de root para ejecutarse. Si el archivo de configuración de prueba se genera automáticamente, puede agregar el siguiente atributo a Android.bp
.
require_root: true,
Si el archivo de configuración de prueba está personalizado, agregue lo siguiente al archivo XML de prueba.
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
Detener el marco durante la prueba.
Muchas pruebas de VTS no requieren la ejecución del marco de Android, y ejecutar la prueba con el marco detenido permite que la prueba se ejecute con estabilidad sin verse afectada por fallas del dispositivo. Si el archivo de configuración de prueba se genera automáticamente, puede agregar el siguiente atributo a Android.bp
.
disable_framework: true,
Si el archivo de configuración de prueba está personalizado, agregue lo siguiente al archivo XML de prueba.
<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>
Agregar argumentos de prueba adicionales
Algunas pruebas de gtest pueden requerir más tiempo para ejecutarse. En tales casos, puede agregar opciones del ejecutor de pruebas en el archivo XML.
Por ejemplo, la configuración native-test-timeout
en la siguiente entrada permite que la prueba se ejecute con un tiempo de espera de 3 minutos, en lugar del valor predeterminado de 1 minuto.
<test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNfcV1_0TargetTest" />
<option name="native-test-timeout" value="180000"/>
</test>
Requerir nivel API mínimo
Algunas pruebas VTS solo pueden ejecutarse en dispositivos con un nivel API mínimo. Si el archivo de configuración de prueba se genera automáticamente, puede agregar el siguiente atributo a Android.bp
.
test_min_api_level: 29,
Si el archivo de configuración de prueba está personalizado, agregue el siguiente comando al archivo XML de prueba.
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.MinApiLevelModuleController">
<option name="min-api-level" value="29" />
</object>
Android 12 define las propiedades ro.board.first_api_level
y ro.board.api_level
para mostrar el nivel de API de las imágenes del proveedor en estos dispositivos. Al combinar estas propiedades con ro.product.first_api_level
, los conjuntos de pruebas eligen los casos de prueba adecuados para los dispositivos.
Android 13 define ro.vendor.api_level
que se establece automáticamente calculando el nivel de API del proveedor requerido mediante las propiedades ro.product.first_api_level
, ro.board.first_api_level
y ro.board.api_level
.
ro.board.first_api_level
La propiedad ro.board.first_api_level
es el nivel de API cuando las imágenes del proveedor para un SoC se publican por primera vez con esta propiedad. Esto no depende del nivel de API de inicio del dispositivo, sino que solo depende del primer nivel de API del SoC que define este valor. El valor es permanente durante toda la vida útil del SoC.
Para configurar ro.board.first_api_level
, los fabricantes de dispositivos pueden definir BOARD_SHIPPING_API_LEVEL
en su archivo device.mk
, como se muestra en el siguiente ejemplo:
# BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
BOARD_SHIPPING_API_LEVEL := 23
Definirá automáticamente la propiedad ro.board.first_api_level en vendor/build.prop
en el dispositivo. La propiedad la establece el proceso init
del proveedor.
ro.board.api_level
La propiedad ro.board.api_level
es el nivel API actual de las imágenes del proveedor para un SoC. Cuando se actualiza el nivel API de la imagen del proveedor que tiene ro.board.first_api_level
, el dispositivo que utiliza el SoC debe definir la propiedad ro.board.api_level
con el nivel API actual de la imagen del proveedor en lugar de actualizar ro.board.first_api_level
. Si esta propiedad no está configurada, se utilizará ro.board.first_api_level
de forma predeterminada.
Para configurar ro.board.api_level
, defina BOARD_API_LEVEL
en el archivo device.mk
con el valor deseado.
ro.vendor.api_level
La propiedad ro.vendor.api_level
se introdujo en Android 13 para mostrar el nivel de API que las imágenes del proveedor deben admitir. Esto se establece automáticamente en el mínimo de ro.board.api_level
(o ro.board.first_api_level
si ro.board.api_level
no está definido) y ro.product.first_api_level
. Las pruebas para la implementación del proveedor que requieren una actualización de la imagen del proveedor pueden excluirse de los requisitos del proveedor para el SoC al hacer referencia a esta propiedad.
Proceso de fragmentación usando VTS
Para la versión 10 de Android o superior, puede realizar el proceso de fragmentación en varios dispositivos mientras realiza pruebas con planes VTS y CTS-on-GSI siguiendo las instrucciones a continuación.
run vts --shard-count <number of devices> -s <device serial> ...
Este comando divide el plan VTS en fragmentos y los ejecuta en varios dispositivos.
run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...
Este comando divide el plan CTS-on-GSI en fragmentos y los ejecuta en varios dispositivos.