Utiliser Suite Réessayer

Une suite a tendance à inclure plusieurs modules de test et peut atteindre une taille de corpus de test assez importante. Par exemple, l' Android Compatibility Test Suite (CTS) comprend des centaines de modules et des centaines de milliers des cas de test.

Il devient possible qu'un grand nombre de tests échouent en raison d'une mauvaise isolation ou d'un mauvais état des appareils.

La fonction de nouvelle tentative de suite est destinée à résoudre ces cas : elle vous permet de réessayer les échecs uniquement au lieu des suites complètes afin d'exclure les irrégularités et un mauvais isolement. Si un test échoue systématiquement, la nouvelle tentative échouera également ; et vous obtenez un signal beaucoup plus fort qu'il y a un vrai problème.

Réessayer la suite de mise en œuvre

La nouvelle tentative des résultats implique la lecture des résultats précédents et la réexécution de l'appel précédent.

L'interface principale d' entraînement de la nouvelle tentative est ITestSuiteResultLoader , ce qui permet de charger un résultat précédent, et la ligne de commande précédente.

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

Exemple de nouvelle tentative de suite : CTS

La configuration de nouvelle tentative dans CTS est :

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

Ceci est applicable à la plupart des suites qui vont, par exemple VTS ).

Il serait invoqué via :

cts-tradefed run retry --retry <session>

La session serait trouvée en listant 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. Cela signifie que si votre commande d'origine incluait certaines options, elles feraient également partie de la nouvelle tentative.

Par exemple:

cts-tradefed run cts-dev -m CtsGestureTestCases

La nouvelle tentative de ce qui précède serait toujours limitée à CtsGestureTestCases puisque nous Retrying une commande impliquant seulement elle.

Configurer une nouvelle tentative pour la suite de style CTS

Pour que la nouvelle tentative fonctionne, les résultats précédents doivent être exportés au format proto. Les éléments suivants doivent être ajoutés :

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

Cela doit être ajouté à la configuration XML de la commande principale, et il se traduira par un test-record.pb fichier à créer dans le dossier de résultat.

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