Engineering, Product management

Acceptance Test Driven Development

Acceptance Test Driven Development is a software development methodology that uses acceptance tests to drive the development process.

Also called: ATDD, Acceptance Test-Driven Development, Acceptance-Test Driven Development, Acceptance Test Driven Design, Acceptance-Test Driven Design, and Acceptance Test-Driven Design

See also: Acceptance Criteria, Acceptance Test, Agile Definition of Done, Agile Framework, Agile Manifesto, Agile Principles, Agile Product Development, Agile Product Owner, Product Delivery, Product Manager

Relevant metrics: Number of Acceptance Tests, Number of Defects, Time to Complete Acceptance Tests, Number of Automated Tests, and Number of Manual Tests

In this article

What is Acceptance Test Driven Development

Acceptance Test Driven Development (ATDD) is a software development process that focuses on the use of acceptance tests to drive the development of a product. It is a collaborative approach between the customer, the development team, and the testers, and is used to ensure that the product meets the customer’s requirements.

ATDD is based on the idea that the customer should be involved in the development process from the beginning, and that the customer should be able to provide feedback on the product as it is being developed. The customer’s feedback is then used to create acceptance tests, which are used to ensure that the product meets the customer’s requirements.

The acceptance tests are written in a language that is understandable by both the customer and the development team. The tests are then used to drive the development process, ensuring that the product meets the customer’s requirements.

ATDD is a process that is used to ensure that the product meets the customer’s requirements, and that the customer is satisfied with the product. It is a collaborative approach between the customer, the development team, and the testers, and is used to ensure that the product meets the customer’s requirements.

Where did Acceptance Test Driven Development come from?

Acceptance Test Driven Development (ATDD) is a software development methodology that originated in the early 2000s. It is based on the idea of using acceptance tests to drive the development process. The goal of ATDD is to ensure that the software meets the customer’s requirements and expectations.

ATDD was first proposed by software engineer and author, Gojko Adzic, in his book, Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing. In this book, Adzic proposed a methodology for developing software that focused on the customer’s requirements and expectations. He argued that by using acceptance tests to drive the development process, the customer’s requirements and expectations could be met more effectively. This methodology has since become known as Acceptance Test Driven Development.

Achieving Quality Through Automated Testing

Emphasizes the use of automated tests to ensure the quality of the software product, ATDD involves the collaboration of stakeholders, developers, and testers to define acceptance criteria for a feature before it is developed. This process helps to ensure that the software meets the requirements of the stakeholders and that it is of high quality.

ATDD is a valuable tool for software development teams as it helps to ensure that the software meets the requirements of the stakeholders and that it is of high quality. By using automated tests to validate the acceptance criteria, the development team can quickly identify any issues that may arise during the development process. This helps to reduce the amount of time and effort spent on debugging and fixing issues. Additionally, ATDD helps to ensure that the software is tested thoroughly and that any potential issues are identified and addressed before the software is released.

The use of ATDD also helps to ensure that the software is developed in a consistent and reliable manner. By using automated tests to validate the acceptance criteria, the development team can ensure that the software is developed in a consistent manner and that any changes to the code are tested thoroughly. This helps to reduce the risk of introducing bugs or other issues into the software.

The primary goal of ATDD is to help ensure that the software is of high quality. By using automated tests to validate the acceptance criteria, the development team can quickly identify any issues that may arise during the development process. This helps to ensure that the software is of high quality and that any potential issues are identified and addressed before the software is released.

How to

The ATDD process begins with the customer writing acceptance tests that define the desired behavior of the software. These tests are then used to drive the development of the software. The development team uses the acceptance tests to guide the development process and ensure that the software meets the customer’s requirements. The development team also uses the acceptance tests to validate the software and ensure that it meets the customer’s expectations.

The ATDD process is an iterative process that involves the customer, the development team, and the automated tests. The customer writes the acceptance tests, the development team uses the acceptance tests to drive the development process, and the automated tests are used to validate the software. The ATDD process ensures that the software meets the customer’s requirements and expectations.

Advantages of Acceptance Test Driven Development

  • Increased Quality. Acceptance Test Driven Development (ATDD) helps to ensure that the software meets the customer’s requirements and expectations. By writing tests that are based on the customer’s acceptance criteria, developers can quickly identify any issues and make sure that the software is of the highest quality.
  • Improved Communication. ATDD encourages collaboration between the customer and the development team. By having the customer provide acceptance criteria, the development team can better understand the customer’s needs and ensure that the software meets their expectations.
  • Reduced Costs. By using ATDD, developers can quickly identify any issues and make sure that the software is of the highest quality. This helps to reduce the cost of development, as fewer bugs and defects need to be fixed.
  • Faster Delivery. By using ATDD, developers can quickly identify any issues and make sure that the software is of the highest quality. This helps to reduce the time it takes to develop the software, as fewer bugs and defects need to be fixed.

Challenges of Acceptance Test Driven Development

  • Writing Acceptance Tests. Writing acceptance tests can be a challenge, as it requires a deep understanding of the system and its requirements. It also requires a good understanding of the language used to write the tests.
  • Maintenance. Acceptance tests need to be maintained as the system evolves, which can be a time-consuming process.
  • Debugging. Debugging acceptance tests can be difficult, as it requires a deep understanding of the system and its requirements.
  • Cost. Acceptance tests can be expensive to develop and maintain, as they require a significant amount of time and resources.
  • Time. Acceptance tests can take a long time to develop and maintain, which can delay the development process.

Other things to know about Acceptance Test Driven Development

Acceptance Test Driven Development (ATDD) is a form of Behavior Driven Development (BDD) that emphasizes the use of acceptance tests to define the behavior of a system. ATDD is a collaborative approach that involves all stakeholders in the development process, including customers, developers, and testers.

Relevant questions to ask
  • What is the purpose of the Acceptance Test Driven Development?
    Hint The purpose of Acceptance Test Driven Development (ATDD) is to ensure that software meets the customer's requirements and expectations. It is a development methodology that focuses on creating automated tests that are used to validate the functionality of the software.
  • What are the benefits of using Acceptance Test Driven Development?
    Hint The benefits of using ATDD include improved communication between developers and customers, increased quality of the software, and faster development cycles.
  • What are the risks associated with using Acceptance Test Driven Development?
    Hint The risks associated with using ATDD include the potential for increased complexity of the software, the need for additional resources to create and maintain the tests, and the potential for increased costs.
  • What are the best practices for implementing Acceptance Test Driven Development?
    Hint The best practices for implementing ATDD include creating a test plan, writing automated tests, and integrating the tests into the development process.
  • How will Acceptance Test Driven Development fit into my existing development process?
    Hint ATDD can be integrated into an existing development process by creating a test plan, writing automated tests, and integrating the tests into the development process.
  • What resources do I need to successfully implement Acceptance Test Driven Development?
    Hint The resources needed to successfully implement ATDD include a test plan, automated tests, and a development process that supports ATDD.
  • How will I measure the success of Acceptance Test Driven Development?
    Hint The success of ATDD can be measured by the number of tests that are created and passed, the number of defects that are found and fixed, and the amount of time saved by using ATDD.
  • What are the potential challenges I may face when using Acceptance Test Driven Development?
    Hint Potential challenges when using ATDD include the need for additional resources to create and maintain the tests, the potential for increased complexity of the software, and the need to ensure that the tests are kept up to date.
People who talk about the topic of Acceptance Test Driven Development on Twitter
Relevant books on the topic of Acceptance Test Driven Development
  • Specification by Example: How Successful Teams Deliver the Right Software by Gojko Adzic (2011)
  • Agile Testing: A Practical Guide for Testers and Agile Teams by Lisa Crispin and Janet Gregory (2009)
  • Acceptance Test Driven Development with Java by Markus Gärtner (2013)
  • Acceptance Test Driven Development: A Practical Guide to ATDD by Paul Hammant (2007)
  • Succeeding with Agile: Software Development Using Scrum by Mike Cohn (2010)

Want to learn more?

Receive a hand picked list of the best reads on building products that matter every week. Curated by Anders Toxboe. Published every Tuesday.

No spam! Unsubscribe with a single click at any time.

Community events
Product Loop

Product Loop provides an opportunity for Product professionals and their peers to exchange ideas and experiences about Product Design, Development and Management, Business Modelling, Metrics, User Experience and all the other things that get us excited.

Join our community

Made with in Copenhagen, Denmark

Want to learn more about about good product development, then browse our product playbooks.