ATDD

ATDD (Acceptance Test-Driven Development) is a development methodology in which the entire team defines acceptance test criteria before development begins, automates those tests, and then proceeds with implementation.
Differences from TDD
While TDD drives a developer's code design, ATDD aims to align the entire team's understanding of business requirements. Just as TDD follows a "RED → GREEN → Refactor" cycle, ATDD has its own distinct cycle:
- Discuss: The product owner, developers, and QA discuss requirements and agree on acceptance criteria through concrete examples.
- Distill: The agreed-upon criteria are translated into a structured format such as Given-When-Then.
- Develop: Acceptance tests are automated, and implementation begins with the tests in a RED state.
- Demo: Once the tests turn GREEN, the results are demonstrated to stakeholders.
Three Amigos
At the heart of ATDD is the "Three Amigos" session held before implementation. By discussing acceptance criteria from three perspectives — business, development, and testing — ambiguities and misalignments in the specification are resolved early. This is highly effective in preventing rework caused by misunderstandings that only surface after coding has begun.
Barriers to Adoption
Because ATDD affects the entire development process, it cannot be started simply by introducing a tool. The whole team needs to become comfortable with writing acceptance criteria, and active involvement from the product owner is essential. A practical approach is to start with a single user story, experience the benefits firsthand, and then gradually expand the scope.
Articles covering this term
Related Terms

No-Code/Low-Code Development
No-code/low-code development is a development approach that minimizes the need for programming exper

E2E Test
E2E testing (End-to-End testing) is a testing methodology that simulates user interactions to drive

Acceptance Testing
Acceptance testing is a testing method that verifies whether developed features meet business requir

SSM (AWS Systems Manager)
AWS Systems Manager (SSM) is an AWS managed service for centrally operating and managing EC2 instanc
