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 Acceptance Test-Driven Development , 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.
Many aspects are shared among the different approaches. ATDD in Acceptance Test-Driven Development encompasses aspects of these other approaches. I’ve documented the parts that come specifically from the other driven developments (DDs), including Brian Marick’s examples, Eric Evan’s ubiquitous language, and Dan North’s given-when-then template. The most visible differences are that the tests here are presented in table format rather than in a more textual format, such as BDD's Cucumber language, and they concentrate on functionality instead of the user interface. This book's version of ATDD matches closely that described by Lasse Koskela and Gojko Adzic and follows the testing recommendations of Jim Coplien .
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.