Introduction au TDD
Objectifs pédagogiques
À la fin de cette page, vous serez capable de :
- définir le Test Driven Development (TDD)
- comprendre son principe fondamental
- expliquer son intérêt pour la qualité logicielle
- faire le lien avec les tests automatisés backend
Qu’est-ce que le TDD ?
Le TDD (Test Driven Development) est une méthode de développement qui consiste à écrire les tests avant le code de production.
Le développement suit un cycle court et répétitif appelé Red / Green / Refactor :
- 🔴 Red – écrire un test qui échoue
- 🟢 Green – écrire le code minimal pour faire passer le test
- 🔵 Refactor – améliorer le code sans casser les tests
Pourquoi pratiquer le TDD ?
Le TDD permet de :
- clarifier le besoin avant de coder
- produire du code naturellement testable
- limiter fortement les régressions
- améliorer la conception du logiciel
- obtenir une documentation vivante via les tests
👉 Le test devient un outil de conception, pas seulement de vérification.
Exemple conceptuel (backend)
Exigence :
Calculer le prix total d’une commande avec TVA
Approche TDD :
- Écrire un test :
« une commande de 100 CHF retourne 108 CHF avec TVA » - Le test échoue (fonction inexistante)
- Implémenter le calcul minimal
- Le test passe
- Refactoriser si nécessaire
TDD et réalité du projet
Le TDD :
- n’est pas toujours appliqué partout
- demande de la rigueur et de la discipline
- est particulièrement pertinent pour :
- la logique métier
- les règles de calcul
- les services backend
- les API
👉 Il est très adapté aux projets backend (ex. API, services).
Lien avec Clean Code
Le TDD pousse naturellement à :
- des fonctions courtes et simples
- des responsabilités bien séparées
- un faible couplage
- des dépendances injectées
- un code plus lisible et maintenable
👉 TDD et Clean Code se renforcent mutuellement.
Exemple TDD – Fil rouge MyEvents
Dans l’application MyEvents, on a l’exigence suivante :
Un utilisateur ne peut pas acheter un billet si l’événement est complet.
Approche classique (sans TDD)
- on code la fonctionnalité
- on teste après coup
- le cas “événement complet” peut être oublié
Approche TDD
1️⃣ Écrire le test (il échoue)
```text Given un événement avec une capacité maximale atteinte And un utilisateur authentifié When l’utilisateur tente d’acheter un billet Then l’achat est refusé And un message "Événement complet" est retourné
➡️ Le test échoue car la règle n’existe pas encore.
1️⃣ Écrire le test (il échoue)
À retenir
- le TDD consiste à écrire les tests avant le code
- le cycle Red / Green / Refactor structure le développement
- le TDD améliore la qualité, la testabilité et la conception
- ce n’est pas une obligation, mais un excellent levier de qualité