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:

  1. Business and Technology should refer to the same system in the same way - ItsAllBehaviour

  2. Any system should have an identified, verifiable value to the business - WheresTheBusinessValue

  3. 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: