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 peuvent échouer en raison d'une mauvaise isolation ou d'un état incorrect des appareils.
La fonctionnalité de nouvelle tentative de la suite est conçue pour résoudre ces cas: elle vous permet de relancer les échecs uniquement au lieu des suites complètes afin d'écarter les failles et les problèmes d'isolation. Si un test échoue systématiquement, la nouvelle tentative échoue également, et vous obtenez un signal beaucoup plus fort indiquant qu'il y a 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 gère 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 n'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.
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 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 méthode ci-dessus est toujours liée à CtsGestureTestCases
, car nous tentons de relancer une commande qui ne l'impliquait que.
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" />
Cet élément doit être ajouté à la configuration XML de la commande principale pour qu'un fichier test-record.pb
soit créé dans le dossier de résultat.
La nouvelle tentative CTS charge ensuite les données à partir d'une combinaison de test-record.pb
et de test_result.xml
existants pour préparer l'appel de nouvelle tentative.