Acceptance Test Driven Development (ATDD) in Practice
Agile teams practicing Acceptance Test Driven Development (ATDD) define acceptance tests collaboratively while discussing each story. This practice helps uncover assumptions and confirm that everyone has a shared understanding of “Done”. During implementation, the technical team automates the natural-language Acceptance Tests by writing code to wire them to the emerging software. In this way, ATDD tests become executable requirements. This session is a demo of the full ATDD workflow from initial discussions to distilling tests into an automatable format to implementing code to the final demo.
We start by explaining the ATDD workflow: Discuss, Distill, Develop, Demo. (20 minutes)
We then introduce a small sample application (currently written in Ruby with a command line interface), and show the existing acceptance tests and the product backlog. (10 minutes)
We call for a volunteer from the audience to play the role of Product Owner and make decisions about the scope and content of the story described (at a high level) in the backlog. We then discuss the story, allowing other participants to ask questions of the Product Owner to clarify the requirements. (15 minutes)
We distill the acceptance criteria and examples offered by the Product Owner into tests in a Robot Framework table. (15 minutes)
We develop the feature, test driven. This allows us to illustrate the difference between TDD and ATDD. (15 minutes)
Finally, we demo the new feature, answer any remaining questions, and wrap up. (15 minutes)
It is worth noting that while the demonstration will include using Robot Framework to automate the acceptance tests, the focus of this session is on the ATDD workflow and not any specific tool or technology. The techniques demonstrated will apply to any Agile-friendly testing framework that supports expressing tests in natural language including FIT, Fitnesse, Twist, Concordion, etc.
- Understand the Discuss, Distill, Develop, Demo workflow
- Learn how to use test ideas to help clarify ambiguous requests and elicit more detailed acceptance criteria from the Product Owner
- Learn how to distill the acceptance criteria and examples offered by the Product Owner during user story discussions into Acceptance Tests in an automatable format
- Discover how automated Acceptance Tests can make progress feel tangible during implementation
- See how the resulting automated tests support the adaptability, enabling us to modify the code without fear
- See how everyone on the whole team, including the business stakeholder(s), developers, and testers collaborates in the ATDD workflow