A Chinese proverb says, “There are many paths to the top of the mountain, but the view is always the same.” And many of the paths share the same trail for portions of the journey. Although acceptance testing has been around for a long time, it was reinvigorated by extreme programming . Its manifestations include ATDD as described in Lean-Agile Acceptance Test-Driven Development by Ken Pugh, example-driven development (EDD) by Brian Marick, behavior-driven development (BDD) by Dan North, story test-driven development (SDD) by Joshua Kerievsky of Industrial Logic, domain-driven design (DDD) by Eric Evans, and executable acceptance test-driven development (EATDD). All these share the common goal of producing high-quality software. They aid developers and testers in understanding the customer’s needs prior to implementation and customers being able to converse in their own domain language.
Acceptance Test-Driven Development refers to a triad: the customer, developer, and tester. The power of three people working together can create the best acceptance tests. If the triad writes the tests together, the distinction between user acceptance tests and system tests is practically eliminated. As will be shown, the three roles of customer, developer, and tester may be played by different individuals or by the same individual with different focuses.
Here is a summary of ATDD/BDD benefits. It’s in the Given-When-Then format which is a popular way of expressing scenarios and tests.
Given current conditions like these:
- No detailed requirements
- Unclear business rules
- Poorly defined acceptance criteria
- Not enough testers
- Defects hold up deployment
- Development team not understanding business process
When Acceptance Test-Driven Development / Behavior Driven Development (ATDD/BDD) is added
Then you can get the following results:
Other Books on ATDD
TDD by Example: A Practical Guide to Acceptance Test-Driven Development by Markus Gärtner
Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing Paperback by Gojko Adzic (Author)