On this page
Test Management Agile in QA Best practices
19 min read
04 Sep 2026

Acceptance Test Driven Development (ATDD): A Complete Guide

Ambiguous acceptance criteria are among the most expensive defects in delivery, since your team pays for them twice: Once in wasted implementation, and again in rework. Acceptance criteria may read clearly to everyone and still mean something slightly different to each contributor. Rework, missed sprint commitments, and UAT rejections all start there. Acceptance test-driven development (ФЕВВ) is the correct methodology to fix the issue.

Key Takeaways

  • Acceptance test-driven development is a collaborative practice where your product owner, developers, and testers agree on acceptance examples before implementation starts.
  • ATDD works at the feature level and pairs with TDD, which covers unit-level design. BDD overlaps heavily with ATDD, since both rely on collaborative discovery and Given-When-Then scenarios.
  • Most of the work happens in requirements discovery. Teams that open a Gherkin file before discussing the feature skip the part that prevents expensive rework.
  • Acceptance scenarios should describe business behavior, while API endpoints and table names belong in step definitions.
  • Tooling splits into requirements platforms, executable specification frameworks, and test management systems. Reqnroll replaced SpecFlow for .NET after Tricentis ended support at the close of 2024.

This guide covers what ATDD is and where it differs from TDD and BDD, then shows the cycle through a worked password reset example. It also elaborates on tools, the Agile practices, and the habits that keep it running.

What Is Acceptance Test Driven Development (ATDD)?

Acceptance test driven development is a collaborative approach where your product owner, developers, and testers agree on acceptance examples before a feature gets built. Because those examples describe the behavior the finished code has to show, they guide implementation from the first commit.
You will see acceptance test driven development ATDD written both ways across QA documentation, and both spellings mean the same practice. “Driven” is the operative word in that definition. Tests written after a feature ships had no influence on its design, so that work counts as plain acceptance testing. ATDD puts the examples first, and your developers build toward them.

Practitioners often summarize the cycle as four steps, known as Discuss, Distill, Develop, and Demo. Your team discusses the requirement, distills it into specific examples, then develops against those failing examples before demonstrating the result.

Why ATDD Is a Requirements Practice

ATDD is a requirements practice because its main output is a set of agreed rules, and the tests come from those rules. Consider the shipping requirement again: until someone asks how large an order qualifies and whether discounts change the total, the rule stays incomplete. Traditional delivery raises those questions during implementation or after release, when answering them means changing code. ATDD pulls the same questions into refinement.

ATDD vs TDD vs BDD

All three approaches use tests or examples to guide development, though each one answers a different question about the system. Search results routinely conflate ATDD acceptance test driven development with the other two, so a side-by-side comparison helps.

Aspect ATDD TDD BDD
Primary focus Business acceptance criteria and customer requirements Technical design and implementation correctness Behavior and shared domain language across roles
Who participates Product owner, developers, testers Developers Product owner, developers, testers, analysts
Abstraction level Externally observable business behavior Internal code units such as classes and functions Domain behavior expressed in business language
Typical test format Given-When-Then scenarios or acceptance criteria Unit tests with assertions Given-When-Then scenarios focused on behavior
Primary outcome Agreement on what “done” means Clean, maintainable, well-designed code Documentation that stays accurate as the system changes
Typical cycle Discuss  define examples  implement  verify Red  Green  Refactor Discovery  Formulation  Automation

TDD and ATDD differ mainly in scope. In test driven development, a developer writes a failing unit test, adds the minimum code that makes it pass, then refactors. ATDD works one level up, at the feature. A single acceptance test such as “customer receives free shipping at €50” can cover several TDD cycles for pricing and cart eligibility.

BDD and ATDD overlap heavily in modern practice. Both emerged around vague requirements and poor communication between business and delivery, and both use collaborative discovery with Given-When-Then examples. The vocabulary differs: ATDD talks about acceptance criteria, BDD about behavior and executable specifications. Teams practicing one routinely borrow techniques from the other.

Your product owners, developers, and testers should all be able to track the coverage behind every requirement. aqua cloud, an AI-driven test and requirement management platform, orchestrates data, acceptance criteria, and test cases in one place, so every example stays interconnected. aqua Intelligence, grounded in your own project documentation, drafts test cases from those requirements in seconds and writes them in your domain language. Every plan also includes unlimited free Guest licences, so business analysts and stakeholders can read acceptance criteria and coverage reports without taking a paid seat. Teams moving to aqua save up to 60% of the time they spend on QA management, which pays for the refinement hours ATDD asks for. Bidirectional Jira sync keeps refinement outcomes and test results aligned in both directions, while Azure DevOps and Confluence integrations carry acceptance criteria through to implementation.

Draft executable test cases from your agreed acceptance criteria in seconds with aqua’s AI

Try aqua for free

Key Principles of ATDD

Acceptance test driven development practice rests on a small set of ideas that hold whatever tooling your team picks: business, development, and testing agree on scope before code starts, and concrete examples replace wording open to more than one reading.

Collaboration Comes Before Implementation

ATDD brings the business, development, and testing perspectives into one conversation before the work starts. Teams usually call the pattern the Three Amigos, though the group may also include a designer or an architect. Consider whether “€50 orders” means “at least €50” or “more than €50.” The two readings produce different cart logic, so someone has to decide between them. Refinement is where that decision belongs.

Examples Make Rules Specific

Agreeing that “orders over €50 qualify for free shipping” is easy. The harder question is whether a €55 order with a €10 discount qualifies. Working through cases like that forces precision, and your product and delivery teams converge on one vocabulary. Specification by Example builds on the same idea, since real scenarios express business rules that prose leaves open to interpretation.

Acceptance Gets Agreed Before Code

Your team settles what “done” looks like while the requirement is still editable. That agreement becomes the target for developers and the checklist for testers. Automated acceptance test driven development adds executable checks on top. Some teams automate every scenario while others keep a manual set, and both practice ATDD.

The ATDD Process: Step by Step


AI-generated image.

The ATDD cycle runs from a rough user need through to permanent regression coverage. Our seven-step breakdown is one practical reading of that flow, since the practice itself prescribes no fixed number of stages.

1. Start With a User Need

Every cycle begins with a statement of what your users need, whether that arrives as a user story or a one-line backlog item. For example: “Registered customers receive free standard shipping when their eligible order exceeds €50.” At this stage the requirement lacks the detail needed for confident implementation. Your team agrees on the problem here, and the solution comes later.

2. Discuss It Collaboratively

The Three Amigos examine the story from business, implementation, and testing perspectives. Product states the intent, a developer names what the code cannot decide from the wording, and a tester names the boundaries and error paths. Product says “free shipping above €50,” the developer asks which subtotal to calculate, and the tester asks what happens at exactly €50. Product answers both questions in the session, and your team writes the answers down before anyone leaves.

3. Distill Abstract Rules Into Concrete Examples

With the assumptions on the table, your team converts wording into cases anyone can verify. Take “orders over €50 qualify for free shipping” and test the wording against real carts. The rule might then become: “Free standard shipping applies when the eligible merchandise subtotal after discounts is at least €50.” The agreed examples then read as follows:

Cart contents Expected outcome
€50 in eligible items Free shipping
€49.99 in eligible items Paid shipping
€75 before a €30 discount Paid shipping
€60 with €15 in excluded items Paid shipping

The third row is where your team discovers whether “exceeds €50” meant “more than” or “at least.”

Acceptance criteria and acceptance tests work at two levels of detail, and teams frequently conflate them:

Acceptance criteria Acceptance tests and examples
Purpose Define the conditions for acceptance Prove those conditions with specific cases
Form Business rule Specific input or context, plus the expected result
Example Orders of €50 or more get free shipping €50 free shipping; €49.99 paid shipping

Example Mapping separates the two for the same reason. Rules state what has to hold, and examples show what that looks like for one particular cart.

4. Formulate Acceptance Tests

Once the examples are agreed, express them in a format that can guide implementation. Given-When-Then works well here because it separates context, action, and outcome:

Scenario: Free shipping at threshold

  • Given a registered customer
  • And their eligible cart subtotal is €50
  • When they proceed to checkout
  • Then standard shipping should be free

Scenario: Shipping below threshold

  • Given a registered customer
  • And their eligible cart subtotal is €49.99
  • When they proceed to checkout
  • Then standard shipping should not be free

Gherkin syntax remains optional throughout. Your developers and testers only need to read the same example and reach the same conclusion about the behavior to build. These scenarios then become the working contract between product and delivery.

5. Implement the Functionality

Development starts with the acceptance tests already failing, since the feature does not exist yet. Your developers choose whatever implementation approach fits, such as TDD at the unit level or pair programming. The acceptance specifications define the target throughout.

6. Make the Tests Pass

As implementation progresses, the agreed scenarios start passing one by one. When all of them pass, the feature meets acceptance criteria that your team settled before any code existed. Arguments about whether the work is finished stop here, because the definition was fixed upfront.

7. Retain the Tests as Regression Coverage

Finally, keep the passing acceptance tests as regression coverage, on the condition that they evolve with the requirements they specify. An outdated scenario can still fail correctly while documenting a rule your product owner changed two sprints ago. Automated scenarios flag implementation drift as soon as they run. Manual scenarios report nothing until someone deliberately re-runs them.

Roles and Responsibilities in ATDD

ATDD depends on three perspectives contributing at the right moment, and each one owns a different question. The practice collapses when your team treats it as “QA writes Gherkin scenarios.”

Perspective Usually held by Questions they raise What they own
Business Product owner, business analyst, domain expert Does this discount apply? What happens for premium members? The “what” and the “why”
Development Developers, architects Do we calculate before or after tax? What if the payment gateway is unavailable? The “how,” plus technical constraints on the “what”
Testing Testers, QA engineers What happens at exactly €50? What about an expired token used twice? The “what if” and the completeness of examples

Acceptance Test Driven Development Example: Password Reset

A worked acceptance test driven development example shows what the cycle produces. Product brings a familiar story: “As a customer, I want to reset my password so that I can regain access to my account.”

The story reads as complete until your team examines it:

  • Does the system reveal whether an email address exists?
  • How long does the reset link stay valid?
  • Can someone use the same link twice?
  • What happens when a customer requests a second reset before using the first?
  • Are existing sessions revoked after the password changes?
  • Which password policy applies to the new password?

None of these are edge cases. Each one describes core behavior that the original story left unspecified, so a developer would otherwise decide it alone.

Through discussion the team lands on a business rule: A reset token can be used exactly once and expires after 30 minutes. Three scenarios make that rule testable:

Scenario: Valid token within time limit

  • Given a reset link was created 10 minutes ago
  • When the customer submits a valid new password
  • Then the password changes
  • And the reset token becomes invalid

Scenario: Expired token

  • Given a reset link was created 31 minutes ago
  • When the customer attempts to use it
  • Then the password remains unchanged
  • And the customer is informed that the link expired

Scenario: Reused token

  • Given a reset token has already been used
  • When the customer attempts to use it again
  • Then the request is rejected
  • And the customer is informed that the link is no longer valid

Your developers now know to generate a token that dies after 30 minutes, then check its age and used status before allowing a reset. Testers know what to verify, and product knows what customers will experience. Once the scenarios pass, they stay in the suite so a later refactor cannot quietly remove token expiry.

The acceptance criteria are about defining the details in an unambiguous way. Crucially, they're great for allowing the team to communicate and organise around functionality and make sure they share the same interpretation of a user story.

DeathByWater Posted in Reddit

Benefits of Acceptance Test Driven Development

key-benefits-of-atdd.webp
  • Earlier ambiguity detection: Vague requirements come out in refinement, so a 15-minute discussion replaces three days of misdirected implementation.
  • Agreement across roles: Business, development, and QA settle intended behavior before any code exists.
  • Testable requirements: Acceptance criteria built from examples with observable outcomes are simple to verify.
  • Less requirement-driven rework: Misunderstood requirements are among the most expensive sources of defects, and ATDD exposes them while they are still wording.
  • Built-in regression coverage: Automated acceptance examples keep checking expected behavior after later changes.
  • Reduced scope creep: Specific scenarios tell your developers exactly what behavior to implement.
  • Faster feedback loops: Problems appear in discussion, so the loop tightens from weeks in UAT down to hours in refinement.

Challenges and Limitations of ATDD

  • Upfront time in refinement: Collaborative specification adds time to requirement discussions, and teams accustomed to starting code immediately find the pace slow. Since the payoff comes later, you need organizational agreement that early clarity is worth the investment.
  • Cultural change: The practice fails when product throws requirements over the wall, or when developers talk to testers only after implementation. Collaborative habits take longer to build than technical skills.
  • Risk of over-specification: Some teams try to document every possible input combination before development starts, which is analysis paralysis. Aim for clarity on key behavior, and stop well short of a 100-page specification.
  • Tooling can distract from the conversation: Teams that debate Cucumber syntax and CI configuration before discussing the requirement automate behavior no one has agreed on.
  • Not every criterion deserves automation: Certain scenarios are expensive to automate, rarely change, or are quicker to verify by hand. Effort spent automating them returns little.
  • Scheduling the Three Amigos: Getting the right people into one room is hard for distributed teams across time zones, and postponed sessions erode the benefit quickly.
  • It does not replace other testing: ATDD answers whether a feature matches agreed acceptance criteria. Performance, security, usability, and exploratory testing all remain your team’s responsibility.

Acceptance Test Driven Development Tools and Frameworks

Acceptance test driven development tools fall into three categories, and each one serves a different part of the cycle.

Collaboration and Requirements Tools

These handle the upstream work, from user stories and acceptance criteria through to approvals and change history. Every agreed example needs a home and a link back to its parent requirement. Jira, Azure DevOps, and a dedicated test management tool such as aqua cover this space. aqua holds the chain from requirement to acceptance criteria to test case to execution result, with approvals and audit history included.

Executable Specification Frameworks

These convert agreed examples into runnable checks. Readability is their shared strength, because non-developers can read the scenarios and challenge them.

Framework Ecosystem Best fit
Cucumber Java, JavaScript, Ruby Teams standardizing on Gherkin scenarios
Reqnroll .NET Gherkin-based executable specifications for modern .NET projects
Robot Framework Python, cross-platform Keyword-driven tests for mixed-skill teams
FitNesse Java, .NET Established suites in long-running products

Reqnroll is the actively maintained successor to the discontinued SpecFlow project, which lost vendor support at the end of 2024. Any .NET team starting today should therefore skip SpecFlow tutorials. Every framework here automates scenarios your team agreed on beforehand, and requirements management stays with the tools in the previous category.

Test Management Systems

Once your team runs acceptance scenarios at scale, ownership and traceability become the daily problem. Which requirement does this failure affect, and who owns the scenario? A test case management tool answers both by centralizing requirements, acceptance criteria, test cases, execution results, and defects. Coverage reporting then tells your team which requirements still have no scenarios attached.

Pick the stack that fits the workflow your team already runs.

Try aqua for free

Acceptance Test Driven Development Diagram


AI-generated image.

The acceptance test driven development diagram below moves through four phases, with feedback loops connecting each phase to the one before it.

Discovery phase: Requirements Two Amigos discussion Business rules identified Examples created

Specification phase: Given-When-Then scenarios Acceptance criteria documented Test cases formalized

Implementation phase: Failing acceptance tests Development using TDD Passing acceptance tests

Maintenance phase: Regression suite Continuous verification Documentation that stays accurate

The phases run iteratively and never strictly in line. When examples reveal an unclear rule, your team returns to discovery. An unexpected failure sends it back to the specification, and changed acceptance criteria restart the cycle from the top.

When writing stories, get the "three amigo's" to join up — architects for the holistic view, devs for the "how" and testers to tie it all up nicely. Your task is to give the group context for what needs to be done, moderate the discussion and ultimately write down what they need to have in the story.

ChaosClarified Posted in Reddit

Acceptance Test Driven Development in Agile

Acceptance test driven development in Agile teams needs no new events, because refinement, planning, and review already cover the discussion. What changes is the content of those meetings. The Scrum Guide treats Definition of Done as a commitment and says nothing about a Definition of Ready. Rows here therefore mix Scrum events with practices some teams add.

Scrum activity or practice Where ATDD fits
Backlog refinement Your team defines examples for each story and identifies the rules behind them
Definition of Ready, where teams use one A story qualifies once agreed, testable examples exist, so vague work stays out of the sprint
Sprint planning Estimates improve because developers know the exact behavior, and testers can prepare data and environments
Daily Scrum Failing acceptance scenarios can expose blockers affecting progress toward the Sprint Goal
Sprint review Stakeholders watch passing scenarios demonstrated and know exactly which behavior works
Retrospective Your team measures how often examples were defined late or revised mid-sprint
Definition of Done Completion means every agreed acceptance scenario passes, which removes subjective judgement

ATDD works best when it changes meetings your team already runs. Adding a separate specification workshop on top of refinement produces the opposite result, because the extra meeting becomes the first thing dropped in a busy sprint. For a wider view of how examples feed test design, our guide to Agile test case design techniques covers the techniques that pair well with ATDD.

How aqua Supports ATDD From Refinement to Execution

aqua cloud supports ATDD by holding requirements and their acceptance examples in one system, then linking each example to the tests and results that verify it. Because refinement outcomes, test cases, and execution history stay in one place, your team can answer coverage questions without opening three tools.

  • Requirements and acceptance criteria in one place. aqua’s requirements management module stores user stories together with their acceptance criteria. Test cases link to them automatically, so anything left uncovered shows up on the requirements view.
  • Gherkin generation from requirements. aqua Intelligence drafts test cases in BDD format directly from a requirement. Your team then reviews a first version of each scenario during refinement.
  • Bidirectional Jira sync. Stories refined in Jira arrive in aqua with their acceptance criteria attached. Results flow back to the ticket afterward, so product sees which scenarios pass.
  • Automation and evidence. Jenkins, Ranorex, and the REST API integration feed automated results back into aqua. The Capture extension meanwhile records manual runs with video and screenshots.

When an acceptance test fails, your team sees the parent requirement, the owner, the execution history, and any linked defect on one screen. That screen is also the record auditors ask for.

Boost your QA testing efficiency by 80% with aqua’s capabilities

Try aqua cloud

Best Practices for Implementing ATDD

Structure the discussion with Example Mapping. The technique organizes refinement around the story, the rules governing it, an example for each rule, and the open questions. Working in that order keeps the session moving, because unresolved questions are recorded for later and stop stalling the discussion. Timebox each story, then feed the output directly into your acceptance tests.

Describe observable behavior in your scenarios. A scenario that reads “When I send POST /api/v2/cart and query table cart_items” documents your architecture. A scenario that reads “When the customer adds the product to their cart, then the product appears in the cart” documents the business rule. Keep endpoints and table names in step definitions, where they belong.

Choose the cheapest test interface that proves the behavior. Business acceptance rarely requires a browser, so service-level or API-level checks are usually the better default. They run faster, break less often, and still verify what product asked for. Some scenarios genuinely need UI verification, and those are worth their cost.

Keep scenarios independent. Each scenario should set up its own context, exercise one behavior, and verify one outcome. Dependence on earlier scenarios makes failures painful to debug, and a scenario covering ten behaviors hides which rule broke. Your suite grows larger this way, and it also becomes far easier to trust.

Automate based on value. Prioritize scenarios that run every sprint or cover core business flows. Leave low-value examples manual until your team has bandwidth to automate them properly. Suites built for total coverage tend to stay permanently red.

Maintain specifications when requirements change. An acceptance scenario that no longer matches the agreed rule becomes misleading documentation, even while it passes. So when product changes a rule, update the scenario in the same sprint and check that it still links to its requirement. Teams that skip this maintenance accumulate documentation describing an older version of the product.

ATDD depends on collaborative discovery, agreed examples, and traceability from business intent through verification. aqua cloud, an AI-powered test and requiremeте management solution, covers all three in one platform. Define requirements and acceptance criteria with your team, then let aqua Intelligence draft complete test scenarios from your project’s own documentation. Every acceptance example links back to its parent requirement, so your team keeps bidirectional traceability at any scale. aqua is ISO 27001 certified and DORA compliant, so the acceptance evidence your team collects holds up in an external audit without a separate reporting exercise. More than 200 companies and 35,000 users across 26 countries already run their QA this way. Run scenarios manually or through 10+ native automation integrations, including Jenkins, Ranorex, JMeter, SoapUI, REST API, PowerShell, UnixShell, and MSSQL or Oracle databases. The Capture integration then records every execution with video and screenshots for your audit history.

Reach complete ATDD traceability and 100% test coverage with project-aware AI

Try aqua for free

Conclusion

ATDD moves acceptance from a final check into an early conversation. When your product owner, developers, and testers agree on specific examples before implementation, ambiguity comes out while the requirement is still editable. Those examples then work as specification, verification, and documentation at once. The practice does ask for cultural change, refinement time, and tooling that traces a requirement through to execution. With those in place, your team spends far less of each sprint rebuilding features that were misunderstood the first time.

On this page:
See more
Speed up your releases x2 with aqua
Request a demo
step

FOUND THIS HELPFUL? Share it with your QA community

FAQ

What Is the Difference Between ATDD and TDD?

TDD is a developer practice built on unit tests that shape internal design. ATDD works at the feature level, where business examples define observable behavior. Your developers often run several TDD cycles underneath a single acceptance test.

Is ATDD the Same as BDD?

They overlap heavily in modern practice. Both rely on collaborative discovery and Given-When-Then examples. BDD emphasizes behavior and shared domain language across the delivery cycle. ATDD centers on acceptance criteria and the point at which a feature counts as done.

Who Writes Acceptance Tests in ATDD?

Your whole team contributes. Product owners define the business outcome, developers raise technical constraints, and testers push on edge cases. A tester or business analyst usually writes the final wording, though the examples themselves come out of the shared discussion.

What Are the Main Benefits of ATDD?

Earlier detection of vague requirements, agreement across roles, testable acceptance criteria, and less requirement-driven rework. Automated examples also stay in your suite as regression coverage that documents intended behavior for anyone joining your team later.

Which Tools Support Acceptance Test Driven Development?

Cucumber, Reqnroll, and Robot Framework convert agreed examples into executable specifications. Requirements, coverage, and traceability belong in test management platforms such as aqua cloud. Jira or Azure DevOps handle the story-level workflow around them.

Does ATDD Require Automating Every Scenario?

No. Automate the scenarios that run each sprint or cover core business flows, and keep rare or expensive checks manual. Teams that automate everything usually accumulate a maintenance load heavy enough to push them off the practice.

When Should Your Team Define Acceptance Tests?

Shortly before development starts, during backlog refinement. Define them earlier and the details go stale before coding begins. Leave it later and your team writes tests for code that already exists.

Article experts

Prepared by
Martin Koch
Main author
QA Mentor & Process Coordinator at aqua

Enhancement of the aqua product is Martin’s main responsibility and biggest mission. His expertise covers ITIL Process Consulting, Change Management, Quality Assurance, Quality Management, and Requirements Management. Martin works in QA services for regulated industries for more than 18 years being an irreplaceable leader at…

Latest publications
Fact-checked by
Nurlan Suleymanov
Fact checker
Quality Standards Officer at aqua

Nurlan, a QA Coordinator & Quality Standards Officer, takes pride in orchestrating seamless QA operations. His expertise in coordinating QA-focused projects and integrating QA solutions has consistently yielded top-tier client satisfaction. Aside from a full-time QA coordinator, Nurlan's role involves creating compelling content that educates…

Latest publications
Reviewed by
Pavel Vehera
Reviewer
Quality Assurance Consultant and Author at aqua

Pavel, a Quality Assurance Consultant and Author, brings deep expertise to solving complex testing challenges. His background in software development has helped organizations transform their QA practices from reactive to proactive. Beyond consulting, Pavel develops best practice guides and case studies for aqua cloud that…

Latest publications
X
🤖 Exciting new updates to aqua AI Assistant are now available! 🎉