BehaviourDrivenDevelopment
Behaviour-Driven Development (BDD) is an evolution in the thinking behind TestDrivenDevelopment and AcceptanceTestDrivenPlanning.
It brings together strands from TestDrivenDevelopment and DomainDrivenDesign into an integrated whole, making the relationship between these two powerful approaches to software development more evident.
It aims to help focus development on the delivery of prioritised, verifiable business value by providing a common vocabulary (also referred to as a UbiquitousLanguage) that spans the divide between Business and Technology.
It presents a framework of activity based on three core principles:
Business and Technology should refer to the same system in the same way - ItsAllBehaviour
Any system should have an identified, verifiable value to the business - WheresTheBusinessValue
Up-front analysis, design and planning all have a diminishing return - EnoughIsEnough
BDD relies on the use of a very specific (and small) vocabulary to minimise miscommunication and to ensure that everyone – business stakeholders, developers, testers, analysts and managers – are not only on the same page but using the same words.
For people familiar with the concept of DomainDrivenDesign, you could consider BDD to be a UbiquitousLanguage for software development.
It must be stressed that BDD is a rephrasing of existing good practice, it is not a radically new departure. Its aim is to bring together existing, well-established techniques under a common banner and with a consistent and unambiguous terminology. BDD is very much focused on GettingTheWordsRight and this focus is intended to produce a vocabulary that is accurate, accessible, descriptive and consistent.
In fact GettingTheWordsRight was the starting point for the development of BDD, and is still very much at its core, but the power of getting the words right has led to some insights and extrapolations that have helped us to better understand our approach and to extend it.
Feel free to edit anything you find to make it clearer or to add your opinion (and sign with YourName
if you like).
Interesting starting points:
- Introduction: A brief overview
- TheBddProcess: A description of a development process using BDD
- BehaviourDrivenAnalysis: How do we approach analysis for BDD?
- BehaviourDrivenProgramming: What changes do we make to our approach to programming?
- More DescriptionsOfBdd: other ways of describing the cat-skinning process
- DanielNorth has written an article describing how BDD evolved.
- LizKeogh has updated the page on Wikipedia.
- BddTools: Tools for implementing BDD.