Maison  >  Article  >  interface Web  >  Comment identifier et atténuer les tests instables : meilleures pratiques et stratégies.

Comment identifier et atténuer les tests instables : meilleures pratiques et stratégies.

WBOY
WBOYoriginal
2024-07-17 02:34:15913parcourir

How to Identify and Mitigate Flaky Tests: Best Practices and Strategies.

Amélioration de la fiabilité et de l'efficacité des tests dans les pipelines CI/CD

Un test irrégulier est un test qui réussit parfois et échoue parfois sans aucune modification du code testé. Ces tests peuvent être particulièrement gênants car ils compromettent la fiabilité de la suite de tests.

Considérez que votre pipeline CI/CD est configuré de telle sorte qu'une fois la build réussie, uniquement si votre code réussit un ensemble de cas de test prédéfinis.

Dans une situation idéale, vous devez avoir défini la priorité pour chaque cas de test et assumer la dernière base de code pour réussir au moins un certain pourcentage de cas.

Mais en raison des cas de test instables, qui continuent d'échouer, car ils peuvent être obsolètes ou le cas d'utilisation est modifié, votre scénario de test échoue et la fusion de la demande d'extraction devient un cauchemar. Au lieu de réduire le pourcentage de cas réussis, nous devrions envisager de réorganiser ces cas de test.

Raison de comprendre Flaky Test.

  1. Résultats de tests imprévisibles : les tests irréguliers provoquent l'imprévisibilité en réussissant parfois et en échouant parfois, même si le code n'a pas changé. Ce caractère aléatoire peut rendre difficile la confiance dans les résultats des tests.

  2. Débogage complexe : rechercher la cause première d'un test instable peut être difficile car le problème peut ne pas se reproduire de manière cohérente, ce qui rend difficile son identification et sa résolution.

  3. Perte de temps et de ressources : les développeurs peuvent passer beaucoup de temps à réexécuter des tests, à enquêter sur les faux positifs et à déboguer des problèmes qui ne sont pas réellement liés à la fonctionnalité du code.

  4. Impact sur l'intégration continue (CI) : des tests irréguliers peuvent perturber les pipelines d'intégration continue, entraînant des échecs de construction inutiles et réduisant l'efficacité globale des processus de tests automatisés.

  5. Fausse confiance ou méfiance : des tests instables peuvent soit créer une fausse confiance lorsqu'ils réussissent sporadiquement, soit susciter une méfiance dans la suite de tests lorsqu'ils échouent de manière imprévisible, ce qui rend plus difficile la fiabilité des résultats des tests.

Moyens d'atténuer les cas de test Flaky.

  1. Meilleures pratiques pour atténuer : pour réduire les tests irréguliers, les développeurs peuvent se moquer des dépendances externes, utiliser des données déterministes, garantir que les tests sont isolés et éviter de se fier au timing ou à l'ordre d'exécution.

  2. Détection automatisée : la mise en œuvre d'outils automatisés qui détectent les tests instables en exécutant des tests plusieurs fois et en comparant les résultats peut aider à identifier et à résoudre les problèmes au début du cycle de développement.

  3. Isolement des tests : Garantir que chaque test s'exécute dans un isolement complet, sans compter sur des états partagés ou des facteurs externes, peut réduire considérablement les risques de floconnement.

  4. Maintenance régulière : réviser et refactoriser régulièrement la suite de tests pour supprimer ou corriger les tests instables permet de maintenir l'intégrité et la fiabilité du processus de test au fil du temps.

Différentes stratégies et outils pour atténuer les cas de test irréguliers

  1. Jenkins, CircleCI, Travis CI : des outils d'intégration continue/déploiement continu (CI/CD) comme ceux-ci peuvent être configurés pour réexécuter les tests qui échouent, aidant ainsi à identifier les tests instables. Ils ont souvent des plugins ou un support intégré pour gérer les tests irréguliers.

  2. Docker : les entreprises utilisent Docker pour créer des environnements isolés pour exécuter des tests. Cela garantit que les tests bénéficient d'un environnement cohérent et propre à chaque fois qu'ils sont exécutés, réduisant ainsi la desquamation causée par les différences environnementales.

  3. Machines virtuelles (VM) : à l'instar de Docker, les machines virtuelles peuvent être utilisées pour garantir que les tests s'exécutent dans un environnement contrôlé et isolé, minimisant ainsi les interférences d'autres processus ou dépendances.

  4. Analyse statistique utilisant l'apprentissage automatique : certains systèmes avancés utilisent l'apprentissage automatique pour analyser les résultats des tests et identifier des modèles indiquant des tests instables. Cela peut aider à identifier et à traiter de manière proactive la desquamation.

  5. Politiques de révision de code et crochets de contrôle de version : la mise en œuvre de politiques strictes de révision de code qui incluent des vérifications des sources potentielles de failles peut empêcher l'introduction de tests irréguliers.
    L'utilisation de hooks de pré-validation ou d'autres mécanismes de contrôle de version pour exécuter des tests de manière contrôlée avant que les modifications ne soient fusionnées peut détecter rapidement les tests instables.

Stratégies de certaines des grandes organisations

  1. Google :
  • Réexécuter les tests ayant échoué : Google a une politique selon laquelle il réexécute les tests qui ne parviennent pas à déterminer si l'échec est cohérent. Cela aide à identifier les tests instables. Ils disposent également d'outils et d'une infrastructure internes pour gérer et atténuer les défauts dans leurs vastes suites de tests.

  • Isolement des tests : Google souligne l'importance de l'isolement des tests pour garantir que les tests n'interfèrent pas les uns avec les autres, ce qui est essentiel pour réduire la desquamation.

  1. Microsoft :
  • Analyses de tests et rapports : Microsoft utilise des outils d'analyse et de reporting de tests détaillés pour suivre les tests instables. En analysant les résultats des tests au fil du temps, ils peuvent identifier des modèles et identifier les tests instables.

  • Mise en quarantaine des tests instables : Microsoft met parfois en quarantaine les tests instables, les séparant de la suite de tests principale jusqu'à ce qu'ils soient corrigés pour éviter qu'ils n'affectent les résultats globaux des tests.

3. Facebook :

  • Detox : Facebook a développé une bibliothèque open source appelée Detox pour tester ses applications mobiles. Detox garantit que les tests sont exécutés dans un état et un environnement cohérents, réduisant ainsi les défauts causés par les opérations asynchrones et autres problèmes de timing.

  • Tests continus : Facebook intègre des tests continus dans son processus de développement, en utilisant des outils pour réexécuter automatiquement les tests et identifier les comportements instables au début du cycle de développement.

4. Netflix :

  • Ingénierie du chaos : Netflix utilise des pratiques d'ingénierie du chaos pour tester la résilience de ses systèmes. En introduisant intentionnellement des pannes et des perturbations, ils peuvent identifier les tests instables et améliorer la robustesse de leurs tests et systèmes.

  • Réessais automatisés : Netflix utilise des mécanismes de réessais automatisés au sein de ses pipelines CI/CD pour réexécuter les tests qui échouent par intermittence, aidant ainsi à identifier et à gérer les tests instables.

5. LinkedIn :

  • Outils de gestion des tests instables : LinkedIn a développé des outils spécifiquement pour la gestion des tests instables. Ces outils aident à suivre les tests instables, à fournir une visibilité sur leur occurrence et à prioriser leur résolution.

  • Standardisation de l'environnement de test : LinkedIn se concentre sur la standardisation des environnements de test pour réduire la variabilité et garantir que les tests s'exécutent dans des conditions cohérentes, ce qui contribue à atténuer les irrégularités.

À propos de l'auteur

Apoorv Tomar est développeur de logiciels et blogue sur **Mindroast. Vous pouvez vous connecter sur les réseaux sociaux. Abonnez-vous à la **newsletter pour le dernier contenu organisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn