Nouvelle tentative de test automatique

Un test peut échouer pour une raison quelconque, et parfois une simple réexécution du test suffit à le faire réussir à nouveau (en raison de défauts, tels que des problèmes dans l'infrastructure sous-jacente). Vous pouvez configurer Tradefed pour effectuer la nouvelle tentative automatiquement.

L’essentiel de la nouvelle tentative automatique est d’éviter de réexécuter tous les tests ; il réexécute uniquement les tests ayant échoué, ce qui entraîne d'importantes économies de temps d'exécution.

Tradefed prend également en charge l'exécution de tests plusieurs fois afin de détecter les défauts via la fonction d'itérations . Dans ce cas, tous les tests seront réexécutés et le test échouera si l'une des itérations échoue.

Activer la nouvelle tentative automatique

La nouvelle tentative automatique est contrôlée via l' objet RetryDecision qui fournit deux options pour activer la fonctionnalité : max-testcase-run-count et retry-strategy .

max-testcase-run-count détermine le nombre de tentatives ou d'itérations qui seront tentées. Il définit une limite supérieure pour éviter de réessayer indéfiniment. retry-strategy détermine la décision sur la manière de réessayer ; voir les sections suivantes pour plus de détails.

Désactiver la nouvelle tentative automatique

Utilisez l'option suivante :

--retry-strategy NO_RETRY

Échecs des nouvelles tentatives

Pour réessayer les tests ayant échoué, utilisez les options suivantes :

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

Cela réessayera l'échec jusqu'à ce qu'il réussisse ou jusqu'à ce que le nombre maximum de tentatives soit atteint, selon la première éventualité.

Itérations

Pour réexécuter les tests plusieurs fois, les options suivantes peuvent être utilisées :

--retry-strategy ITERATIONS --max-testcase-run-count X

À quoi ressemblent les résultats ?

Les rapporteurs de résultats recevront par défaut les résultats agrégés de toutes les tentatives.

Par exemple : un Fail et une Pass pour RETRY_ANY_FAILURE entraîneront une Pass agrégée puisque la nouvelle tentative a réussi à effacer l'échec.

Il est possible pour les déclarants de recevoir les résultats non agrégés. Pour ce faire, ils doivent étendre l' interface ISupportGranularResults qui déclare la prise en charge des résultats granulaires (non agrégés).

Détails d'implémentation

Pour activer la nouvelle tentative automatique de réexécution des échecs au niveau du scénario de test, implémentez ITestFilterReceiver .

Si vous ne pouvez pas implémenter ITestFilterReceiver, vous pouvez implémenter IAutoRetriableTest pour contrôler manuellement le fonctionnement de la réexécution. InstalledInstrumentationsTest est un exemple d’implémentation de cette interface.