Les quatre questions qui trient tout échec
Un test rouge est une affirmation, pas un verdict. Quatre questions vous disent quel problème vous avez réellement — avant de toucher au code.
Posez-les dans l'ordre
- A-t-il déjà passé ? Vérifiez
git logsur le fichier de test. Un test qui n'a jamais été vert est un problème de nouveau test, pas une régression. - Échoue-t-il en local ? Les échecs uniquement en CI sont des problèmes d'environnement — la leçon 5 les couvre. Échouer sur votre machine est une bonne nouvelle : vous pouvez le voir.
- Échoue-t-il seul ? Exécutez juste ce test-là. Passe seul mais échoue dans la suite ? Un autre test lui fuit un état dessus.
- Échoue-t-il à chaque fois ? Exécutez-le dix fois. 10/10 est un vrai bug — suivez la trace. 3/10 est une race condition — le timing est le suspect.
▸ The four questions as commands
# 1. did it ever pass?
git log --oneline -- tests/test_checkout.py
# 2 + 3. does it fail locally — alone, and in company?
pytest tests/test_checkout.py::test_guest_checkout
pytest tests/
# 4. does it fail every time?
for i in {1..10}; do pytest -q tests/test_checkout.py::test_guest_checkout; doneCe que signifient les réponses
- Jamais passé → corrigez les hypothèses du test.
- Échoue en local, seul, à chaque fois → un bug ordinaire. Lisez la trace (prochaine leçon).
- Échoue seulement dans la suite → fuite d'état. Trouvez le test qui tourne avant lui.
- Échoue parfois → une race condition. Mesurez-la (leçon 4).
Basé sur la doc pytest sur la sélection et la ré-exécution des tests
Toutes les leçons de Le test qui échoue : déboguer l'automatisation comme un senior
- Les quatre questions qui trient tout échec
- Lire le traceback comme un senior
- Rétrécir l'espace de recherche
- Instable ou cassé : prouvez-le avec un chiffre
- Ça n'échoue qu'en CI
- Le compte rendu : bug produit ou bug de test