Essayer gratuitement
5 min lecture Guide 832 of 877

Workflow de Développement Piloté par les Tests

Les tests pilotent le design. GitScrum aide les équipes à suivre l'adoption TDD et mesurer l'impact des pratiques test-first sur la qualité et la vélocité.

Fondamentaux TDD

Le Cycle Rouge-Vert-Refactor

CYCLE TDD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ LE CYCLE:                                                   │
│ ─────────                                                   │
│                                                             │
│       ┌─────────────────────────────────────┐              │
│       │                                     │              │
│       │    ┌────────┐                       │              │
│       │    │ ROUGE  │ Écrire test échouant │              │
│       │    └───┬────┘                       │              │
│       │        │                            │              │
│       │        ▼                            │              │
│       │    ┌────────┐                       │              │
│       │    │ VERT   │ Le faire passer       │              │
│       │    └───┬────┘ (code minimal)        │              │
│       │        │                            │              │
│       │        ▼                            │              │
│       │    ┌────────┐                       │              │
│       └────┤REFACTOR│ Améliorer design      │              │
│            └────────┘ (tests passent encore)│              │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ ÉTAPE 1 - ROUGE:                                            │
│ Écrire un test pour comportement qui n'existe pas encore  │
│ L'exécuter → Il échoue (prouve que le test marche)        │
│                                                             │
│ ÉTAPE 2 - VERT:                                             │
│ Écrire juste assez de code pour passer le test            │
│ Pas de sur-ingénierie, pas d'optimisation                 │
│ Juste le faire marcher                                     │
│                                                             │
│ ÉTAPE 3 - REFACTOR:                                         │
│ Maintenant améliorer le code                               │
│ Supprimer duplication, clarifier noms, améliorer design   │
│ Les tests assurent que vous n'avez rien cassé             │
│                                                             │
│ RÉPÉTER pour chaque petit morceau de comportement         │
└─────────────────────────────────────────────────────────────┘

Exemple de Workflow

TDD en Pratique

EXEMPLE TDD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FEATURE: Calculer total commande avec remise               │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ ÉTAPE 1 - ROUGE (Écrire test échouant):                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ test('calcule total avec remise 10%', () => {          ││
│ │   const order = new Order([                            ││
│ │     { price: 100 },                                    ││
│ │     { price: 50 }                                      ││
│ │   ]);                                                  ││
│ │   order.applyDiscount(0.1);                            ││
│ │   expect(order.total()).toBe(135);                     ││
│ │ });                                                     ││
│ │                                                         ││
│ │ EXÉCUTION → ❌ ÉCHEC (Order n'existe pas)              ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ÉTAPE 2 - VERT (Le faire passer):                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ class Order {                                          ││
│ │   constructor(items) {                                 ││
│ │     this.items = items;                                ││
│ │     this.discount = 0;                                 ││
│ │   }                                                     ││
│ │                                                         ││
│ │   applyDiscount(rate) {                                ││
│ │     this.discount = rate;                              ││
│ │   }                                                     ││
│ │                                                         ││
│ │   total() {                                            ││
│ │     const subtotal = this.items.reduce(               ││
│ │       (sum, item) => sum + item.price, 0              ││
│ │     );                                                 ││
│ │     return subtotal * (1 - this.discount);            ││
│ │   }                                                     ││
│ │ }                                                       ││
│ │                                                         ││
│ │ EXÉCUTION → ✅ PASSE                                    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ÉTAPE 3 - REFACTOR (Améliorer):                            │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ • Extraire calcul sous-total                           ││
│ │ • Ajouter validation                                   ││
│ │ • Améliorer nommage                                    ││
│ │ • Exécuter tests → Passent encore ✅                   ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ SUIVANT: Écrire autre test pour comportement suivant      │
│ (ex: remise maximum, prix négatifs, etc.)                 │
└─────────────────────────────────────────────────────────────┘

Bénéfices

Pourquoi le TDD Fonctionne

BÉNÉFICES TDD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ BÉNÉFICES DESIGN:                                           │
│ • Force à penser à l'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 de tests naturellement                 │
│ • Protection régression                                    │
│ • Confiance pour refactorer                               │
│                                                             │
│ SANS TDD:                                                   │
│ Écrire code → Tester après → Trouver bugs → Debug → Fix  │
│                                                             │
│ AVEC TDD:                                                   │
│ Écrire test → Écrire code → Test passe → Refactor → Fait │
└─────────────────────────────────────────────────────────────┘

Solutions Connexes