La stabilité des tests automatisés est un aspect important de la confiance en CI/CD et à l'automatisation.
Historique de la question
Au départ, les tests automatisés étaient exécutés manuellement, et l'instabilité ne nuisait pas beaucoup. Avec l'augmentation du nombre de tests et l'intégration dans les pipelines, l'émergence des flaky tests (tests qui échouent parfois sans raison apparente) est devenue un problème majeur.
Problème
Les flaky tests entraînent :
Solution
Ce qui aide :
Exemple d'utilisation des attentes :
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
Caractéristiques clés :
Est-ce que des retries massifs résoudraient le problème des flaky tests ?
Non, c'est juste un "bouchage de trous" temporaire. Cela ne résout pas la cause — cela masque seulement les problèmes existants.
Peut-on exécuter les tests automatisés uniquement la nuit pour éviter les échecs dus à la charge ?
L'exécution de nuit ne résoudra pas l'instabilité, cela ne fera que réduire la probabilité ; le problème persistera, il faut en résoudre les causes.
Faut-il supprimer tous les flaky tests immédiatement ?
Non. Il est préférable d'essayer de localiser la cause, de corriger — seulement s'il est impossible de les rendre stables ou s'il s'agit d'un test obsolète — de les supprimer.
L'équipe avait recours à des retries massifs pour des tests qui échouaient constamment. En conséquence, la liste des tests "verts" a augmenté, mais la qualité des tests automatisés n'a pas augmenté — des bugs ont été ignorés.
Avantages :
Inconvénients :
L'équipe a identifié et décrit les causes systémiques des flaky : données non nettoyées, délais UI, problèmes réseau. Ils ont corrigé l'architecture, ajouté des attentes appropriées, réglé l'environnement — le nombre de tests instables a chuté de manière significative.
Avantages :
Inconvénients :