Test-Driven Development – TDD

Le TDD ((Développement piloté par les tests) est une pratique de développement logiciel dans laquelle les tests unitaires sont écrits avant le code de production. Il s’agit d’une approche itérative et disciplinée qui suit un cycle en trois étapes, souvent résumé par la devise : « Red → Green → Refactor ».

Le cycle TDD

  1. Red : Écrire un test unitaire qui exprime une exigence ou un comportement attendu. Ce test échoue initialement (car le code n’existe pas encore).
  2. Green : Écrire le code minimal nécessaire pour que le test passe. L’objectif est la fonctionnalité, pas l’élégance.
  3. Refactor : Améliorer la structure du code (lisibilité, suppression de duplications, performance) sans modifier son comportement, en s’appuyant sur la sécurité offerte par les tests.

Ce cycle se répète pour chaque petite unité de fonctionnalité, souvent en quelques minutes.

Objectifs et bénéfices

  • Spécification vivante : les tests deviennent une documentation exécutable du comportement du système.
  • Conception émergente : le TDD pousse à concevoir des modules modulaires, découplés et testables dès le départ.
  • Réduction de la dette technique : le refactoring continu améliore la qualité interne du code.
  • Confiance dans les modifications : la suite de tests permet de détecter immédiatement les régressions.
  • Alignement avec les besoins : chaque ligne de code répond à un test, donc à une exigence réelle.

Important :
Le TDD ne garantit pas que le logiciel répond à toutes les exigences métier (il couvre surtout le niveau unitaire), mais il assure que le code fait exactement ce qu’on lui a demandé de faire, de façon vérifiable et reproductible.

Limites

  • Ne remplace pas les tests d’intégration, d’acceptation ou UX.
  • Peut sembler contre-intuitif ou coûteux au début, mais réduit les coûts de maintenance à long terme.
  • Moins adapté aux phases d’exploration très floues (ex. : prototypage créatif), sauf combiné avec d’autres pratiques (ex. : Spike solutions).

Synonymes / termes associés

  • Développement piloté par les tests
  • Cycle Red-Green-Refactor
  • Test-first programming
  • Pratique XP (Extreme Programming)
Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.