Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Configurar Suite

Suite en Tradefed se refiere a la configuración en la que se ejecutan varias pruebas bajo un corredor de prueba común que impulsa la ejecución general.

En Tradefed, suites son conducidos a través de la ITestSuite clase, que permite a las pruebas que se añaden y se eliminan de forma independiente de la forma en que se ejecutan.

Definiciones

  • Suite: Conjunto de módulos de prueba configurado para ejecutarse en una configuración similar de nivel superior para informar de sus resultados en una sola invocación.
  • Configuración de nivel superior: configuración aplicada a los dispositivos antes de ejecutar cualquiera de los módulos de prueba.
  • Configuración principal: El nivel privado Tradefed configuración XML que describe los módulos que deben funcionar, y que la configuración de nivel superior deben ser utilizados.
  • Configuración a nivel de módulo: configuración aplicada a los dispositivos justo antes de ejecutar el módulo. Estos también se conocen como configuraciones de módulo-específicos.
  • La configuración del módulo: Se refiere a la AndroidTest.xml configuración XML Tradefed que describe los módulos y que la configuración de nivel de módulo que se debe hacer.
  • Módulo: Unidad de prueba compuesta de un paso de configuración (configuración de nivel de módulo), un paso de ejecución de pruebas y una lágrima por paso.

  • Reintento intramódulo: reintento automático realizado por el arnés dentro del módulo.

  • Reintento de la suite: repetición completa de las pruebas fallidas anteriormente de la suite.

Estructura de ITestSuite

ITestSuite en Tradefed se refiere a la clase base común conducir un ejecución suite. Es compartido por todos los principales bancos de pruebas, en concreto el Android Compatibilidad Test Suite (CTS) y Android vendedor Test Suite (VTS) , y asegura una experiencia de ejecución consistente a través de todas las suites.

A veces nos referiremos a ITestSuite como el corredor de baño.

El corredor de la suite sigue estos pasos al ejecutar:

  1. Cargue la configuración del módulo y determine qué conjunto debe ejecutarse.
  2. Ejecute cada módulo: a. Ejecute la configuración a nivel de módulo b. Ejecutar pruebas de módulo c. Ejecutar desmontaje a nivel de módulo
  3. Informar los resultados

Configuración de nivel superior

Desde el punto de vista de Tradefed, ITestSuite es solo otra prueba. Es un problema complejo, pero todavía es sólo una prueba como cualquier otro IRemoteTest . Así que cuando se especifica el corredor de baño en una configuración Tradefed, Tradefed seguirá el patrón habitual de la configuración: correr build_provider , target_preparer , prueba (nuestra suite en este caso), y target_cleaner .

Esta secuencia en la configuración Tradefed que contiene ITestSuite es la configuración de nivel superior.

Ejemplo:

<configuration description="Common config for Compatibility suites">

    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>

    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />

    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>

Metadatos del módulo

Hacemos un llamado Módulo de metadatos información adicional especificada en el módulo de prueba AndroidTest.xml . Le permiten especificar información adicional sobre el módulo y los módulos se pueden filtrar utilizando los metadatos.

Metadatos de ejemplo:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

Filtro de ejemplo en metadatos:

--module-metadata-include-filter component=framework

Lo anterior podría ejecutar todos los módulos con un marco como metadatos del componente.

Completa AndroidTest.xml ejemplo:

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

Módulo parametrizado

Un tipo de metadatos especial es parameter .

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

Estos metadatos especifica que tendrán que ser ejecutado en un modo diferente, por ejemplo como una aplicación instantánea, en lugar de un modo de aplicación estándar del módulo.

Todos los posibles modos o parámetros están descritos por ModuleParameters y tienen un controlador asociado en ModuleParametersHelper que le permite cambiar la configuración del módulo para ejecutar en el modo particular.

Por ejemplo, el modo de aplicación instantánea forzará la instalación del APK como modo instantáneo.

Para que se produzca la parametrización, la línea de comando debe habilitarla a través de:

--enable-parameterized-modules

También es posible ejecutar un solo modo dado a través de:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

Cuando se ejecuta una versión parametrizada de un módulo, informará sus resultados bajo un nombre de módulo parametrizado, por ejemplo, CtsGestureTestCases [instant] frente a CtsGestureTestCases base.