4 min lecture • Guide 744 of 877
Développement Piloté par les Tests avec GitScrum
Le TDD n'est pas juste une question de test - c'est une question de design et de confiance. GitScrum supporte les workflows TDD avec un suivi de tâches qui reflète le cycle rouge-vert-refactor.
Fondamentaux TDD
Le Cycle TDD
CYCLE ROUGE-VERT-REFACTOR:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ┌────────────┐ │
│ │ ROUGE │ ← Écrire test échouant │
│ │ (Test │ "Que devrait faire le code?" │
│ │ Échouant) │ │
│ └─────┬──────┘ │
│ │ │
│ ▼ │
│ ┌────────────┐ │
│ │ VERT │ ← Écrire code minimum pour passer │
│ │ (Test │ "Le faire marcher, rien de plus" │
│ │ Passant) │ │
│ └─────┬──────┘ │
│ │ │
│ ▼ │
│ ┌────────────┐ │
│ │ REFACTOR │ ← Améliorer sans casser tests │
│ │ (Code │ "Le rendre propre" │
│ │ Propre) │ │
│ └─────┬──────┘ │
│ │ │
│ └──────────→ Répéter │
│ │
│ TEMPS DE CYCLE: Minutes, pas heures │
│ │
│ RÈGLES CLÉS: │
│ • Jamais écrire code sans test échouant │
│ • Écrire le code minimum pour passer │
│ • Refactorer seulement quand tests sont verts │
│ • Exécuter tests fréquemment │
└─────────────────────────────────────────────────────────────┘
Bénéfices TDD
POURQUOI TDD FONCTIONNE:
┌─────────────────────────────────────────────────────────────┐
│ │
│ BÉNÉFICES DESIGN: │
│ • Force à penser interface d'abord │
│ • Mène à code modulaire, testable │
│ • Attrape problèmes design tôt │
│ • Résulte en designs plus simples │
│ │
│ BÉNÉFICES QUALITÉ: │
│ • Bugs attrapés immédiatement │
│ • Haute couverture tests naturellement │
│ • Protection régression │
│ • Confiance pour refactorer │
│ │
│ BÉNÉFICES PRODUCTIVITÉ: │
│ • Moins de temps débogage │
│ • Feedback plus rapide │
│ • Documentation via tests │
│ • Onboarding plus facile │
│ │
│ BÉNÉFICES PSYCHOLOGIQUES: │
│ • Petites victoires (tests verts) │
│ • Confiance dans le code │
│ • Sûr de changer │
│ • Progrès clair │
│ │
│ SANS TDD: │
│ Écrire code → Tester après → Trouver bugs → Debug → Fix │
│ │
│ AVEC TDD: │
│ Écrire test → Écrire code → Test passe → Refactor → Fait │
└─────────────────────────────────────────────────────────────┘
TDD en Pratique
Exemple de Workflow
EXEMPLE TDD - AJOUTER AU PANIER:
┌─────────────────────────────────────────────────────────────┐
│ │
│ STORY: "En tant qu'utilisateur, je peux ajouter items │
│ à mon panier" │
│ │
│ CYCLE TDD 1: │
│ │
│ ROUGE: Écrire test │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ test('ajoute item à panier vide', () => { ││
│ │ const cart = new Cart(); ││
│ │ cart.add(item); ││
│ │ expect(cart.items.length).toBe(1); ││
│ │ }); ││
│ │ // Résultat: ❌ ÉCHOUE - Cart n'existe pas ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ VERT: Écrire code minimum │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ class Cart { ││
│ │ items = []; ││
│ │ add(item) { this.items.push(item); } ││
│ │ } ││
│ │ // Résultat: ✅ PASSE ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ REFACTOR: (Rien à refactorer encore) │
│ │
│ CYCLE TDD 2: Ajouter comportement suivant... │
└─────────────────────────────────────────────────────────────┘