Le BDD (Développement piloté par le comportement) est une pratique collaborative de développement logiciel qui étend les principes du TDD (Test-Driven Development) en centrant la spécification sur le comportement observable du système du point de vue des utilisateurs ou des parties prenantes métier.
Contrairement au TDD, qui se concentre sur les unités techniques, le BDD utilise un langage naturel, partagé et non technique pour décrire ce que le système doit faire dans des scénarios concrets. Cela crée un pont entre les équipes produit, métier et technique.
Éléments caractéristiques
- Scénarios rédigés en langage commun : souvent avec la syntaxe Gherkin (Given / When / Then)
- Spécifications exécutables : ces scénarios sont transformés en tests automatisés via des outils comme Cucumber, Behat (PHP), Jest + Cucumber (JS), etc.
- Focus sur la valeur métier : chaque test correspond à une capacité utilisateur concrète (user story), pas à une fonction interne.
Exemple Gherkin
Scénario : Authentification réussie
Étant donné que je suis sur la page de connexion
Quand je saisis un email et un mot de passe valides
Alors je suis redirigé vers mon tableau de bord
Objectifs
- Réduire les malentendus entre développeurs, designers, chefs de produit et clients.
- Documenter vivant : les tests deviennent une documentation toujours à jour du comportement réel du système.
- Faciliter la validation : les parties prenantes peuvent relire (voire rédiger) les scénarios sans connaître le code.
- Améliorer la qualité UX : en ancrant le développement dans des parcours utilisateurs réels.
Utilité du BDD
- Valider des parcours utilisateurs complexes (ex. : inscription à une newsletter thématique, achat de contenu numérique),
- Aligner les attentes éditoriales (Wanimi, Kabyle.com) avec les implémentations techniques,
- Structurer des tests de non-régression autour de fonctionnalités critiques
Synonymes / termes associés
- Développement centré sur le comportement
- Spécification par exemple (Example Mapping)
- Tests d’acceptation pilotés par le comportement
- Langage ubiquitaire (concept issu du Domain-Driven Design)