- Behavior Driven Development
-
Behavior Driven Development (ou BDD) est une méthode Agile qui encourage la collaboration entre les développeurs, les responsables qualités, les intervenants non-techniques et les entreprises participants à un projet de logiciel. Il a été conçu en 2003 par Dan North comme une réponse au Test Driven Development.
Le processus BDD met en avant le langage naturel et les interactions dans le processus de développement logiciel. Les développeurs utilisant le BDD utilisent leur langue maternelle en combinaison avec le langage du domaine Domaine Driven Design pour décrire l'objectif et le bénéfice de leur code. Cela permet aux développeurs de se concentrer sur les raisons pour lesquelles le code doit être créé, plutôt que les détails techniques, et minimise la traduction entre le langage technique dans laquelle le code est écrit et le domaine de la langue parlée par les entreprises, les utilisateurs, les intervenants, la gestion de projet…
Sommaire
Pratiques BDD
Les pratiques de BDD comprennent :
- La participation des parties prenantes dans le processus par le biais de l'extérieur dans le développement de logiciels outside-in software development
- L'utilisation d'exemples pour décrire le comportement de la demande, ou d'unités de code
- Automatisation de ces exemples pour fournir rapidement des commentaires et des test de non-régression
- Dans le test logiciel, l'utilisation du mot "devrait" contribuer à clarifier la responsabilité et permet la remise en cause de la fonctionnalité du logiciel
- L'utilisation de «vérifier que» permet de différencier les résultats obtenus dans le champ d'application du code en question en provenance des effets secondaires d'autres éléments du code.
- Enfin, l'utilisation de «Mocks» en remplacement des modules de code qui n'ont pas encore été écrits
Vu de l'extérieur
BDD est motivée par la valeur commerciale, c'est un avantage pour l'entreprise qui revient une fois que l'application est en production. La seule façon dont cet avantage peut être réalisée soit par le biais de l'interface utilisateur à la demande, généralement (mais pas toujours) une interface graphique.
De la même manière, chaque morceau de code, à partir de l'interface utilisateur, peut être considéré comme un des intervenants des autres modules de code qu'il utilise. Chaque élément de code prévoit certains aspects de comportement qui, en collaboration avec les autres éléments, prévoit le comportement de l'application. Le premier morceau de code que les développeurs de mettre en œuvre BDD est l'interface utilisateur. Les développeurs peuvent alors bénéficier de la rétroaction rapide de savoir si l'interface utilisateur ressemble et se comporte de façon appropriée. Par le biais de code, et en utilisant les principes de bonne conception et de refactoring, les développeurs de découvrir les collaborateurs de l'interface utilisateur, et de chaque unité de code par la suite. Cela les aide à respecter le principe de YAGNI, car chaque morceau de code de production est nécessaire, soit par l'entreprise ou par un autre morceau de code déjà écrit
Références
Liens externes
- Dan North's article introducing BDD
- Introduction to Behavior Driven Development
- Behavior Driven Development Using Ruby (Part 1)
- Behavior-Driven Development Using Ruby (Part 2)
- In pursuit of code quality: Adventures in behavior-driven development by Andrew Glover
- Behavior Driven Database Development by Pramodkumar Sadalage
Outils
- BDoc - Extracting documentation from unit tests, supporting behaviour driven development
- BDD in Python is core module doctest
- beanSpec - Java
- Behat - PHP
- cfSpec - ColdFusion
- CSpec - C
- dSpec - Delphi
- Concordion - a Java automated testing tool for BDD that uses plain English to describe behaviors.
- Cucumber - Plain text + Ruby. Works against Java, .NET, Ruby, Flex or any web application via Watir or Selenium.
- Cuke4PHP - PHP, pour utiliser Cucumber dans PHP
- easyb - Groovy/Java
- GSpec - Groovy
- Instinct - Java
- Jasmine - Javascript
- JBehave - Java
- JDave - Java
- JFXtras Test - JavaFX
- JSpec - JavaScript (great syntax, async support, many matchers, tiny framework, and more)
- JSSpec - JavaScript
- NBehave - .Net
- NSpec - .Net
- NSpecify - .Net
- NUnit - Another implementation of BDD framework in .Net with focus on specification testing
- PHPSpec - PHP
- RSpec - Ruby
- specs - Scala
- spec-cpp - C++
- Specter - Another implementation of BDD framework in .Net with focus on specification readability
- SSpec - BDD in Smalltalk
- StoryQ - .Net 3.5, can be integrated with NUnit to provide both specification readability and testing
- tspec - Groovy (Thai syntax)
- XSpec - XPath, XSLT et XQuery
Wikimedia Foundation. 2010.