“Begin with the end in mind.” — Stephen R. Covey
Acceptance Test Driven Development (ATDD) is a practice in which the whole team collaboratively discusses acceptance criteria, with examples, and then distills them into a set of concrete acceptance tests before development begins. It’s the best way I know to ensure that we all have the same shared understanding of what it is we’re actually building. It’s also the best way I know to ensure we have a shared definition of Done.
Obviously I think this is an important Agile development practice. In fact, it’s one of the core pieces of my Agile Testing class. Yet somehow I have neglected to write about it much on this blog. Time to rectify that.
So, for your reading pleasure, I now present a PDF document with a detailed example of the whole ATDD flow.
Enjoy! (Comments/questions welcome.)


First of all thanks for Elisabeth about publishing this great article. There isn’t that much material available about ATDD yet and I’m sure I’ll point many people to this one.
Those of the readers who got interested enough Robot Framework can find more information from http://robotframework.org. You would probably find especially the Quick Start Guide (link below) interesting because it is based on the same demo that is used in this article. You can effectively execute the tests presented in the article hands-on.
http://code.google.com/p/robotframework/wiki/QuickStartGuide
I absolutely love the way you’ve explained this so clearly both with graphical diagrams and easily understood examples. ATDD in a nutshell – I will be referring people here!
Hi,
)
Great article and great diagram
I would like to ask your opinion on how ATDD could be compared to Dave Nicolett’s TDR/FTDD and Dan North’s BDD. When I look at JBehave 2.x I see a story written as a group of scenarios that define the behaviour to be implemented which looks quite similar to ATDD.
Emmanuel
I don’t know about TDR/FTDD (my google-fu fails me) but BDD is just one way to do ATDD. Notice that ATDD may also be called Story Test Driven Development, Executable Requirements, etc.
Hi Elisabeth,
Excellent article!!!
In this post I want to analyze very briefly a pratical experience related to the usefulness of ATDD practice.
Let’s consider the case of an Agile project where the teams are distributed in an international scenario: I will refer here to this as an “offshore Agile project”.
Of course, the ATDD practice is a good practice in many contexts and so onsite it can be applied successfully.
But in my experience this practice could be a key practice in offshore Agile projects.
In fact in an offshore project in addition to try to communicate the requirements in the best way is of primary importance to define some good Acceptance Tests: this kind of tests helps to understand much better the requirements and/or the design to be implemented for two main reasons:
• Them help to avoid misunderstandings that usually arise from the only information provided by the requirements (in fact we have to consider many issues related to the offshoring: language, cultural differences, technology quality of the communication, and so forth)
• Them represent a “concrete goal” for the offshore developers
The Acceptance tests in this scenario, favour the adoption of ATDD, absolutely in a natural way.
–Alessandro–
I found the article very interesting and informative. I have a few questions:
What part do the tests executed using ATDD play in the overall testing of the product? Is there additional verification by a QA team and/or product owner?
If there is no additional verification by an independent source (separate from development), doesn’t this introduce a risk where only development is testing the code? Your example seemed to indicate that the developer writes the unit tests and acceptance tests, as well as the code.
Thank you.