Une suite tend à inclure plusieurs modules de test et peut atteindre une taille de corpus de test assez importante. Par exemple, la suite de tests de compatibilité (CTS) Android comprend des centaines de modules et des centaines de milliers de cas de test.
Un grand nombre de tests peut échouer en raison d'une mauvaise isolation ou d'un mauvais état des appareils.
La fonctionnalité de nouvelle tentative de suite est conçue pour répondre à ces cas: elle vous permet de réessayer uniquement les échecs au lieu des suites complètes afin d'éliminer les erreurs et l'isolation insuffisante. Si un test échoue de manière cohérente, la nouvelle tentative échoue également. Vous recevez alors un signal beaucoup plus fort indiquant qu'il existe un problème réel.
Implémenter la suite Réessayer
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 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 certains filtres afin de ne réexécuter que les échecs précédents ou les tests non exécutés.
Exemple de nouvelle tentative de suite: CTS
La configuration de la nouvelle tentative 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.
Il est appelé avec:
cts-tradefed run retry --retry <session>
Pour trouver la session, listez 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 réactivée et réexécutée avec des filtres supplémentaires. Cela signifie que si votre commande d'origine incluait des options, elles font également partie de la nouvelle tentative.
Exemple :
cts-tradefed run cts-dev -m CtsGestureTestCases
La nouvelle tentative de la commande ci-dessus est toujours liée à CtsGestureTestCases
, car nous réessayons une commande qui ne la concernait qu'elle.
Configurer la nouvelle tentative pour une suite de type CTS
Pour que la nouvelle tentative fonctionne, les résultats précédents doivent être exportés au format proto. Vous devez ajouter les éléments suivants:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
Cela doit être ajouté à la configuration XML de la commande principale, ce qui 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 à partir d'une combinaison de test-record.pb
et du test_result.xml
existant pour préparer l'appel de nouvelle tentative.