ApiaryActive
Try: pause · settings · learn · wipe
← Community / Reading Room
AT
computing · 3 min read

Acceptance Test Driven Development

Acceptance Test Driven Development (ATDD) is a software development methodology that integrates acceptance testing, development, and requirements gathering…

Overview

Acceptance Test Driven Development (ATDD) is a software development methodology that integrates acceptance testing, development, and requirements gathering into a single process. It is an extension of Test-Driven Development (TDD) and Behavior-Driven Development (BDD) and aims to ensure that software meets the desired functional and non-functional requirements. ATDD emphasizes the collaboration between developers, testers, and customers to define the acceptance criteria before writing any code.

History

The concept of ATDD has its roots in Extreme Programming (XP), a software development methodology that emerged in the late 1990s. In XP, acceptance testing was an essential part of the development process, but it was not explicitly linked to the development cycle. The practice of writing acceptance tests before writing code was first described by Lisa Crispin in her 2003 book "Agile Testing: Effective Practices for Testers and Developers in Agile Teams".

Principles and Practices

ATDD is based on several key principles:

  1. Definition of Done: The team defines what needs to be done to complete a user story or feature, including acceptance criteria and tests.
  2. Acceptance Criteria: The team writes acceptance tests that cover the functional and non-functional requirements of the software.
  3. Collaboration: Developers, testers, and customers work together to define the acceptance criteria and write the acceptance tests.
  4. Test-Driven Development: Developers write code to pass the acceptance tests.
  5. Refactoring: Developers refactor the code to ensure it is simple, efficient, and easy to maintain.

The ATDD process typically involves the following steps:

  1. Requirements Gathering: The team gathers requirements from customers or stakeholders.
  2. Acceptance Criteria Definition: The team defines the acceptance criteria for the software feature or functionality.
  3. Acceptance Test Writing: The team writes acceptance tests that cover the acceptance criteria.
  4. Code Development: Developers write code to pass the acceptance tests.
  5. Refactoring: Developers refactor the code to ensure it is simple, efficient, and easy to maintain.
  6. Test Execution: The team executes the acceptance tests to ensure the software meets the acceptance criteria.

Tools and Techniques

Several tools and techniques are used to support ATDD, including:

  1. Behavior-Driven Development (BDD) Frameworks: Frameworks such as Cucumber, SpecFlow, and Behave allow developers to write acceptance tests in a natural language syntax.
  2. Test Automation Frameworks: Frameworks such as Selenium, Appium, and TestComplete allow developers to automate acceptance tests.
  3. Acceptance Test Frameworks: Frameworks such as FitNesse, JBehave, and TestNG allow developers to write and execute acceptance tests.
  4. Agile Project Management Tools: Tools such as Jira, Trello, and Asana allow teams to manage their backlog, track progress, and collaborate on acceptance criteria.

Benefits

ATDD offers several benefits, including:

  1. Improved Quality: ATDD ensures that software meets the desired functional and non-functional requirements.
  2. Reduced Defects: ATDD reduces the number of defects in the software by ensuring that acceptance criteria are well-defined and thoroughly tested.
  3. Increased Collaboration: ATDD fosters collaboration between developers, testers, and customers, ensuring that everyone is aligned on the software requirements.
  4. Better Communication: ATDD improves communication between stakeholders by providing a clear understanding of the software requirements.
  5. Reduced Risk: ATDD reduces the risk of software projects by ensuring that acceptance criteria are well-defined and thoroughly tested.

Challenges and Limitations

ATDD can be challenging to implement, especially in organizations with traditional testing and development practices. Some of the challenges and limitations of ATDD include:

  1. Resistance to Change: Some teams may resist the change to ATDD due to the need to adopt new tools, techniques, and practices.
  2. Lack of Resources: ATDD requires additional resources, including time, money, and people, to write acceptance tests and execute them.
  3. Inadequate Training: Teams may need training on ATDD principles, practices, and tools to effectively adopt the methodology.
  4. Complexity: ATDD can be complex to implement, especially in large-scale software projects.

Conclusion

Acceptance Test Driven Development is a software development methodology that integrates acceptance testing, development, and requirements gathering into a single process. It aims to ensure that software meets the desired functional and non-functional requirements by fostering collaboration between developers, testers, and customers. While ATDD offers several benefits, it can be challenging to implement, especially in organizations with traditional testing and development practices.

Frequently asked
What is Acceptance Test Driven Development about?
Acceptance Test Driven Development (ATDD) is a software development methodology that integrates acceptance testing, development, and requirements gathering…
What should you know about overview?
Acceptance Test Driven Development (ATDD) is a software development methodology that integrates acceptance testing, development, and requirements gathering into a single process. It is an extension of Test-Driven Development (TDD) and Behavior-Driven Development (BDD) and aims to ensure that software meets the…
What should you know about history?
The concept of ATDD has its roots in Extreme Programming (XP), a software development methodology that emerged in the late 1990s. In XP, acceptance testing was an essential part of the development process, but it was not explicitly linked to the development cycle. The practice of writing acceptance tests before…
What should you know about principles and Practices?
ATDD is based on several key principles:
What should you know about tools and Techniques?
Several tools and techniques are used to support ATDD, including:
References & sources
  1. Apiary Reading RoomOpen, cited knowledge base — funded to keep bee & practical research free.
From the Apiary Reading Room. Opinion & editorial — not financial advice. We don't overclaim.
More from the Reading Room