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.