Definition

Behaviour Driven Development (BDD) is a structure and refinement of practices stemming from Acceptance Test Driven Development (ATDD) and Test Driven Development (TDD).

BDD amplifies both TDD and ATDD with the following approaches:

Apply the “Five Why’s” principle to each proposed user story, the purpose is clearly related to business outcomes.
Implement only those behaviors which contribute most directly to these business outcomes, to minimize waste.
Describe behaviors in a single memo which is directly accessible to testers, domain experts, and developers, to boost communication.
Paying attention to the distribution of behavior, so that evolution remains cheap.

Also Known As

BDD is also referred to as “Specification by Example.”

Expected Benefits

Teams already using TDD or ATDD may want to consider BDD for a couple of reasons:
– BDD offers more precise guidance and organizes the conversation between testers, developers, and domain experts.
Memos originating in the BDD approach, are nearest to everyday language.
Tools targeting a BDD approach usually afford the automatic generation of technical and end user documentation from BDD “specifications”.

Common Pitfalls

Dan North (who first formulated the BDD approach) says that it was designed to address recurring issues in the teaching of TDD, but although he said that BDD requires familiarity with a greater range of concepts than TDD does, and it seems hard to recommend a new programmer to learn BDD without prior exposure to TDD concepts.
It isn’t necessary to use any programming languages or tools. The conceptual approach is to make it a technical practice or one that hinges on specific tooling would be to miss the point altogether.