Published On: 8 mars 20234,1 min read

Flaky tests : comment éviter la flakiness ?

Par définition, selon l’équipe QA de Google, un flaky test (ou test bancal en français), est un test pouvant présenter à la fois un résultat de réussite et un résultat d’échec avec le même code dans le même environnement. Autrement dit, les flaky tests sont une analyse du code d’une application Web qui ne produit pas le même résultat à chaque fois que la même analyse est exécutée.

Ils sont non seulement frustrants, mais peuvent également être assez coûteux, car ils augmentent le temps de la rotation (pool de tests joués dont il fait partie). Dans l’idéal, vous devez éviter le flakiness pour que vos tests puissent rester stables, ainsi que les résultats.

Quelle est la cause des flaky tests ?

Ce terme mérite une définition bien développée pour améliorer les expérimentations dans le secteur technologique. Vous rencontrerez majoritairement les flakiness lors des exécutions de tests automatisés, il tient du miracle d’y échapper dans ce contexte.

Il existe de nombreuses causes pouvant être à l’origine des flaky tests, qui de plus peuvent se cumuler. Ce terme est encore peu connu, mais il est important de se focaliser sur sa définition et son application afin d’améliorer les résultats de vos tests. N’hésitez pas à opter pour la traduction d’autres sources en anglais pour appréhender le concept. Voici les causes les plus courantes du flakiness :

  • La qualité des jeux de données (ils ont été modifiés voire supprimé entre 2 tests, un grand classique) ;
  • Des problèmes de réseau temporaires (dans le cadre de tests web ou de requêtes) ;
  • Des services tiers non disponibles momentanément, autre grand classique ;
  • Un des automates n’a plus les ressources requises pour jouer le test correctement (saturation mémoire, processeur…) ;
  • L’exécution en parallèles de tests non compatibles (même compte utilisé pour des actions contradictoires) ;
  • Le non-respect de l’ordonnancement des tests (un test joué trop top n’a pas les données nécessaires ou altère l’état du système empêchant le bon déroulement des tests suivants) ;
  • L’environnement de recette est limité en ressources et n’arrive pas à encaisser la « charge » générée par l’ensemble des automates.

Bon à savoir : Ils seront peu fréquents lors de tests unitaires (type de test fonctionnel), mais plus la complexité et l’étendue des tests augmenteront, plus vous y serez confrontés.

Comment éviter les flaky tests ?

Il n’y a pas de solution toute prête pour éviter le flakiness, juste un ensemble de bonnes pratiques qui, si elles peuvent être appliquées, peuvent réduire considérablement leur apparition. En effet, il n’est pas rare aujourd’hui dans le domaine de la technologie de voir deux tests identiques marcher et échouer en même temps. Ceci peut arriver alors que vous avez utilisé les mêmes environnements, logiciels et codes.

Ce phénomène touche aussi bien les tests en français que les tests en anglais. Voici les règles à suivre pour éviter le flakiness :

  • Rejouer automatiquement les tests en erreurs (option proposée dans de CloudNetCare) ;
  • Bouchonner ou mocker les services tiers ;
  • Réinitialiser les automates avant la recette et vérifier leur résolution dans le cadre de tests web (pour éviter les erreurs liées à un éventuel responsive design) ;
  • S’assurer du bon ordonnancement des tests ;
  • Dédier des jeux de données et interdire leur utilisation par des tiers ;
  • S’assurer qu’il n’y aura pas de maintenance ou d’interventions sur l’environnement de recette durant la phase d’exécution des tests ;
  • Limiter le nombre de tests en français ou en anglais en parallèle si l’environnement de recette n’est pas suffisamment robuste ;
  • Éviter l’utilisation de pauses arbitraires dans les parcours et préférer des attentes actives d’éléments suffisamment longs pour pallier les lenteurs momentanées.

Que faut-il retenir du test bancal ?

La flakiness peut être un véritable obstacle lors d’un test automatique. Mais que vous automatisiez vos tests ou non, vous n’échapperez probablement pas aux tests flaky dans les premiers temps, car la plupart des soucis rencontrés par les automates peuvent aussi l’être par les testeurs. 

Néanmoins, cela ne doit pas vous décourager pour autant, car certaines bonnes pratiques sont assez simples à mettre en place et la bonne gestion des tests flaky peut drastiquement réduire leur apparition. L’utilisation d’un logiciel ou d’un produit puissant est fortement recommandée. Puis, peu de rigueur et parfois un bon coup de poing sur la table peuvent stabiliser un environnement de test de façon presque magique.

Testez plus vite
et mieux avec les outils
CloudNetCare

UX Functional testing

Plateforme SaaS de tests de montée en charge

UX Functional testing
UX Functional testing

Testez plus vite et mieux avec
les outils
CloudNetCare

UX Functional testing

Plateforme SaaS de tests de montée en charge

UX Functional testing
UX Functional testing