Utiliser la nouvelle tentative de la suite

Une suite tend à inclure plusieurs modules de test et peut atteindre un nombre test de la taille du corpus. Par exemple, l'outil Compatibility Test Suite (CTS) Android. comprend des centaines de modules et des centaines de milliers de scénarios de test.

Il peut arriver qu'un grand nombre de tests échouent en raison d'une mauvaise isolation. ou des appareils dont l'état est défectueux.

La fonctionnalité de nouvelle tentative de la suite est conçue pour résoudre ces problèmes: elle vous permet de relancer les échecs au lieu des suites complètes afin d'écarter les failles et une mauvaise isolation. Si un test échoue systématiquement, la nouvelle tentative échoue également. et vous obtenez un signal beaucoup plus fort qui indique qu'il y a un vrai problème.

Implémenter la nouvelle tentative de la suite

La nouvelle tentative d'obtention des résultats implique de lire les résultats précédents et d'exécuter à nouveau la à l'appel précédent.

L'interface principale qui pilote la nouvelle tentative est ITestSuiteResultLoader. qui vous permet de charger un résultat précédent et la ligne de commande précédente.

RetryRescheduler utilise ensuite ces informations pour recréer la commande précédente et renseigner certaines des filtres afin de réexécuter uniquement les échecs précédents ou les tests non exécutés.

Exemple de nouvelle tentative dans la suite: CTS

La configuration des nouvelles tentatives dans CTS est la suivante:

<configuration description="Runs a retry of a previous CTS session.">
    <object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
    <test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />

    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level-display" value="WARN" />
    </logger>
</configuration>

Cela s'applique à la plupart des suites qui l'étendent, par exemple VTS :

Elle serait invoquée comme suit:

cts-tradefed run retry --retry <session>

Vous pouvez trouver la session en répertoriant les résultats précédents dans la console CTS:

cts-tf > l r
Session  Pass  Fail  Modules Complete  Result Directory     Test Plan  Device serial(s)  Build ID   Product
0        2092  30    148 of 999        2018.10.29_14.12.57  cts        [serial]          P          Pixel

La commande d'origine exacte sera rechargée et réexécutée avec des filtres supplémentaires. Ce signifie que si votre commande d'origine comprenait des options, elles sont également de la nouvelle tentative.

Exemple :

cts-tradefed run cts-dev -m CtsGestureTestCases

La nouvelle tentative de la méthode ci-dessus est toujours liée à CtsGestureTestCases, car nous réessayons une commande qui ne l’impliquait que.

Configurer la nouvelle tentative pour la suite de type CTS

Pour que cette nouvelle tentative fonctionne, les résultats précédents doivent être exportés dans proto. Vous devez ajouter les éléments suivants:

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

Celui-ci doit être ajouté à la configuration XML de la commande main, et il entraîne la création d'un fichier test-record.pb dans le dossier des résultats.

La nouvelle tentative CTS charge ensuite les données à partir d'une combinaison de test-record.pb et le test_result.xml existant pour préparer l'appel de nouvelle tentative.