Configurer des suites

Dans Tradefed, une suite est une configuration dans laquelle plusieurs tests sont exécutés exécuteur de test commun qui pilote l'exécution globale.

Dans Tradefed, les suites passent par ITestSuite qui permet d'ajouter et de supprimer des tests indépendamment exécuter.

Définitions

  • Suite: ensemble de modules de test configurés pour s'exécuter sous un cluster de premier niveau similaire configuration pour signaler leurs résultats en un seul appel.
  • Configuration de premier niveau: configuration appliquée aux appareils avant d'exécuter l'une des modules de test.
  • Configuration principale: configuration XML Tradefed au niveau de la suite qui décrit les modules à exécuter et la configuration de premier niveau à exécuter utilisé.
  • Configuration au niveau du module: configuration appliquée aux appareils juste avant d'exécuter le de ce module. Ces configurations sont également appelées configurations spécifiques au module.
  • Configuration du module: fait référence au fichier XML Tradefed AndroidTest.xml qui décrit les modules et la configuration au niveau du module doit être faite.
  • Module: unité de test composée d'une étape de configuration (configuration au niveau du module) et d'un test d'exécution et de suppression.
  • Nouvelle tentative intramodule: nouvelle tentative automatique effectuée par l'exploitant à l'intérieur du module.
  • Nouvelle tentative de la suite: réexécution complète des tests de la suite ayant précédemment échoué.

Structure ITestSuite

ITestSuite de Tradefed fait référence à la classe de base commune qui pilote l'exécution d'une suite. Il est partagé par toutes les principales suites de tests, en particulier le test de compatibilité Android (CTS) et Android Vendor Test Suite (Suite de test pour les fournisseurs Android) (VTS), et garantit une expérience d'exécution cohérente dans toutes les suites.

Nous appelons parfois ITestSuite le terme exécuteur de suites.

L'exécuteur de la suite suit les étapes ci-dessous lors de l'exécution:

  1. Chargez la configuration du module et déterminez l'ensemble à exécuter.
  2. Exécutez chaque module:

    1. Exécutez la configuration au niveau du module.
    2. Exécuter les tests du module
    3. Exécutez la suppression au niveau du module.
  3. Présentez les résultats.

Configuration de premier niveau

Du point de vue de Tradefed, ITestSuite n'est qu'un test parmi d'autres. C'est une plate-forme complexe mais il ne s'agit que d'un test, comme n'importe quel autre IRemoteTest. Ainsi, lorsque vous spécifiez l'exécuteur de suite dans une configuration Tradefed, schéma de la configuration: exécution de build_provider, target_preparer, test (notre suite dans le cas présent) et target_cleaner.

Cette séquence de la configuration Tradefed contenant ITestSuite est configuration de premier niveau.

Exemple :

<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>

Métadonnées du module

Nous appelons les informations supplémentaires des métadonnées du module spécifiées dans le module de test. AndroidTest.xml Ces métadonnées vous permettent de spécifier des informations supplémentaires le module, et les modules peuvent être filtrés à l'aide des métadonnées.

Exemples de métadonnées:

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

Exemple de filtre sur les métadonnées:

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

Ce qui précède exécuterait tous les modules avec un framework en tant que métadonnées de composant.

Exemple complet de AndroidTest.xml:

<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>

Module paramétré

parameter est un type de métadonnées spécial.

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

Cette métadonnée spécifie que le module doit être exécuté dans un autre mode, par exemple en tant qu'appli instantanée, au lieu d'un mode d'application standard.

Tous les modes ou paramètres possibles sont décrits par ModuleParameters et d'avoir un gestionnaire associé ModuleParametersHelper qui vous permet de modifier la configuration du module pour qu'elle s'exécute dans ce mode.

Par exemple, le mode Appli instantanée force l'installation de l'APK comme appli instantanée .

Pour que le paramétrage ait lieu, la ligne de commande doit l'activer par:

--enable-parameterized-modules

Il est également possible d'exécuter un mode donné avec:

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

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

Lorsqu'une version paramétrée d'un module s'exécute, elle renvoie ses résultats sous un nom de module paramétré, par exemple CtsGestureTestCases[instant] par rapport à CtsGestureTestCases de base.