Une suite a tendance à inclure plusieurs modules de test et peut atteindre une taille de corpus de test assez importante. Par exemple, la suite de tests de compatibilité Android (CTS) comprend des centaines de modules et des centaines de milliers de 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 fonctionnalité 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 défauts et une mauvaise isolation. Si un test échoue systématiquement, la nouvelle tentative échoue également ; et vous recevez un signal beaucoup plus fort indiquant qu’il existe un véritable problème.
Implémenter une nouvelle tentative de suite
La nouvelle tentative de 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 pilotant 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 remplir certains filtres afin de réexécuter uniquement les échecs précédents ou les tests non exécutés.
Exemple de nouvelle tentative de suite : CTS
La configuration des nouvelles tentatives 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 l'étendent, par exemple VTS .
Il serait invoqué avec :
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 originale 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 font également partie de la nouvelle tentative.
Par exemple:
cts-tradefed run cts-dev -m CtsGestureTestCases
La nouvelle tentative de ce qui précède est toujours liée à CtsGestureTestCases
car nous réessayons une commande qui l'impliquait uniquement.
Configurer la 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 prototype. 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 cela entraîne la création d'un fichier test-record.pb
dans le dossier de résultats.
La nouvelle tentative CTS charge ensuite les données d'une combinaison de test-record.pb
et de test_result.xml
existant pour préparer l'invocation de nouvelle tentative.