Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Présentation

La fonctionnalité Auto Test Retries de Test Optimization permet de réessayer les tests en échec jusqu’à N fois pour éviter d’échouer votre compilation en raison de tests instables : un cas de test en échec est réessayé soit jusqu’à ce qu’il réussisse, soit jusqu’à ce qu’il n’y ait plus de tentatives restantes (auquel cas la compilation échoue).

Configuration

Assurez-vous que Test Optimization est configuré pour vos exécutions de test.

Compatibilité

dd-trace-java >= 1.34.0

La compatibilité du framework de test est la même que celle de Test Optimization Compatibility, à l’exception de Scala Weaver.

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Optimization settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Le comportement par défaut de la fonctionnalité est de réessayer tout cas de test en échec jusqu’à 5 fois. Ce comportement peut être affiné avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ONLY_KNOWN_FLAKES - si cette variable d’environnement est définie sur true, seuls les cas de test que Test Optimization considère comme flaky sont réessayés.
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - peut être défini sur n’importe quel nombre non négatif pour modifier le nombre maximal de tentatives par cas de test.

Compatibilité

dd-trace-js >= v5.19.0

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Optimization settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Le comportement par défaut de la fonctionnalité est de réessayer tout cas de test en échec jusqu’à 5 fois. Ce comportement peut être affiné avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - définissez sur 0 ou false pour désactiver explicitement les tentatives même si le paramètre distant est activé (par défaut : true).
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - un nombre non négatif pour modifier le nombre maximal de tentatives par cas de test (par défaut : 5).

Compatibilité

datadog-ci-rb >= 1.4.0

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Optimization settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Le comportement par défaut de la fonctionnalité est de réessayer tout cas de test en échec jusqu’à 5 fois. Ce comportement peut être affiné avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - définissez sur 0 ou false pour désactiver explicitement les tentatives même si le paramètre distant est activé (par défaut : true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - un nombre non négatif pour modifier le nombre maximal de tentatives par cas de test (par défaut : 5).
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT - un nombre non négatif pour définir le nombre total maximal de tests en échec à réessayer (par défaut : 1000)

Compatibilité

dd-trace-dotnet >= 3.4.0

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Optimization settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Par défaut, la fonctionnalité réessaie chaque cas de test en échec jusqu’à 5 fois. Personnalisez les réessais automatiques de tests avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - définissez sur 0 ou false pour désactiver explicitement les tentatives même si le paramètre distant est activé (par défaut : true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - un nombre non négatif pour modifier le nombre maximal de tentatives par cas de test (par défaut : 5).
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT - un nombre non négatif pour définir le nombre total maximal de tests en échec à réessayer (par défaut : 1000)

Compatibilité

orchestrion >= 0.9.4 + dd-trace-go >= 1.69.1

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Optimization settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Par défaut, la fonctionnalité réessaie chaque cas de test en échec jusqu’à 5 fois. Personnalisez les réessais automatiques de tests avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - définissez sur 0 ou false pour désactiver explicitement les tentatives même si le paramètre distant est activé (par défaut : true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - un nombre non négatif pour modifier le nombre maximal de tentatives par cas de test (par défaut : 5).
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT - un nombre non négatif pour définir le nombre total maximal de tests en échec à réessayer (par défaut : 1000)

Compatibilité

dd-trace-py >= 3.0.0 (pytest >= 7.2.0)

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Le comportement par défaut de la fonctionnalité est de réessayer chaque cas de test en échec jusqu’à cinq fois. Les tests qui échouent initialement lors de la configuration, du nettoyage ou des fixtures dans Pytest ne sont pas réessayés.

Vous pouvez affiner ce comportement avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - définissez sur 0 ou false pour désactiver explicitement les tentatives même si le paramètre distant est activé (par défaut : true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - un nombre non négatif pour modifier le nombre maximal de tentatives par cas de test (par défaut : 5).
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT - un nombre non négatif pour définir le nombre total maximal de tests échoués à réessayer (par défaut : 1000)

Tentatives automatiques de test dynamiques

dd-trace-py >= 4.15.0

Par défaut, Auto Test Retries applique la même limite de tentatives à chaque cas de test en échec. Dynamic Auto Test Retries (Dynamic ATR) base le nombre de tentatives sur la durée d’exécution du test lors de sa première tentative. Les tests plus rapides reçoivent plus de tentatives et les tests plus lents en reçoivent moins.

Le budget de tentatives pour un test est déterminé une fois, à partir de la durée de sa tentative initiale, et s’applique à toutes ses tentatives. Un test cesse d’être réessayé dès qu’une tentative réussit.

Les compartiments de durée par défaut sont :

Durée de la première tentativeTentatives par défaut
5 secondes ou moins10
Plus de 5 secondes, jusqu’à 10 secondes5
Plus de 10 secondes, jusqu’à 30 secondes3
Plus de 30 secondes, jusqu’à 5 minutes2
Plus de 5 minutes1

Chaque test échoué est réessayé au moins une fois, quelle que soit sa durée.

Pour activer Dynamic Auto Test Retries, définissez les variables d’environnement suivantes :

  • DD_CIVISIBILITY_DYNAMIC_ATR_ENABLED - définissez sur true pour baser le nombre de tentatives sur la durée de la première tentative du test au lieu de la limite fixe DD_CIVISIBILITY_FLAKY_RETRY_COUNT (par défaut : false) - la limite fixe est ignorée lorsque Dynamic ATR est activé. Auto Test Retries doit être activé dans CI/CD Settings.
  • DD_CIVISIBILITY_DYNAMIC_ATR_BUCKETS - cinq entiers séparés par des virgules entre 1 et 20 qui remplacent les budgets par défaut du tableau précédent, classés du compartiment de durée le plus rapide au plus lent (par exemple, 10,4,1,1,1). Si cette variable n’est pas définie ou est vide, les budgets par défaut du tableau précédent sont utilisés. Si DD_CIVISIBILITY_DYNAMIC_ATR_BUCKETS contient une valeur non valide, la bibliothèque l’ignore, enregistre un avertissement et utilise les budgets par défaut.

Remarque : La limite au niveau de la session DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT s’applique toujours lorsque le ATR dynamique est activé.

Compatibilité

dd-sdk-swift-testing >= 2.5.2

Configuration

Après avoir configuré Test Optimization, configurez Auto Test Retries dans CI/CD Optimization settings. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Bascule Auto Test Retries dans les paramètres CI/CD.

Le comportement par défaut de la fonctionnalité est de réessayer tout cas de test en échec jusqu’à 5 fois. Ce comportement peut être affiné avec les variables d’environnement suivantes :

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - définissez sur 0 ou false pour désactiver explicitement les tentatives même si le paramètre distant est activé (par défaut : true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - un nombre non négatif pour modifier le nombre maximal de tentatives par cas de test (par défaut : 5).
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT - un nombre non négatif pour définir le nombre total maximal de tests en échec à réessayer (par défaut : 1000)

Failed Test Replay

Failed Test Replay n'est pris en charge que pour Java, JavaScript et .NET.

En plus de relancer automatiquement les tests échoués, Failed Test Replay vous permet de voir les données des variables locales dans le cadre supérieur de la trace de pile de l’erreur de test.

Failed Test Replay nécessite qu’Auto Test Retries soit activé, car il capture les données des variables issues des exécutions de test relancées.

Activez Failed Test Replay dans CI/CD Optimization settings sous Mitigation > Failed Test Replay. Vous pouvez appliquer le paramètre au niveau de l’organisation, du dépôt ou du service de test.

Créez un index de logs

Failed Test Replay crée des logs qui sont envoyés à Datadog et apparaissent aux côtés de vos logs d’application habituels.

Si vous utilisez des filtres d’exclusion, assurez-vous que les logs de Failed Test Replay ne sont pas filtrés :

  1. Créez un index de logs et configurez-le sur la rétention souhaitée avec aucun échantillonnage.
  2. Définissez le filtre pour qu’il corresponde au tag source:dd_debugger. Tous les logs de Failed Test Replay ont cette source.
  3. Assurez-vous que le nouvel index a priorité sur tout autre index avec des filtres correspondant à ce tag, car la première correspondance l’emporte.

Une fois Failed Test Replay activé, vous pouvez voir les données des variables locales dans les tests ayant échoué :

Failed Test Replay.

Limitations connues

jest-image-snapshot est incompatible avec jest.retryTimes à moins que customSnapshotIdentifier ne soit passé (voir la documentation de jest-image-snapshot) à toMatchImageSnapshot. Par conséquent, les tentatives automatiques de test ne fonctionnent pas à moins que customSnapshotIdentifier ne soit utilisé.

Explorez les résultats dans l’explorateur d’optimisation des tests

Vous pouvez interroger les tests ayant fait l’objet d’une nouvelle tentative dans l’explorateur d’optimisation des tests : ils ont le tag @test.is_retry défini sur true (certains d’entre eux peuvent également avoir le tag @test.is_new défini sur true, ce qui indique qu’ils ont été relancés par la fonctionnalité Early Flakiness Detection).

Dépannage

Si vous suspectez des problèmes avec Auto Test Retries, ouvrez CI/CD Optimization settings, trouvez votre dépôt ou service, et désactivez Auto Test Retries.

Pour aller plus loin