{"id":5003368,"date":"2015-12-17T00:26:39","date_gmt":"2015-12-17T00:26:39","guid":{"rendered":"https:\/\/aadev22.local\/?post_type=aa_glossary&#038;p=5003368"},"modified":"2022-08-29T14:42:14","modified_gmt":"2022-08-29T21:42:14","slug":"atdd","status":"publish","type":"aa_glossary","link":"https:\/\/agilealliance.org\/glossary\/atdd\/","title":{"rendered":"Acceptance Test Driven Development (ATDD)"},"content":{"rendered":"<div>\n<div>\n<p>Analogous to\u00a0<a href=\"https:\/\/agilealliance.org\/glossary\/tdd\/\">test-driven development<\/a>,\u00a0Acceptance Test Driven Development (ATDD) involves team members with different perspectives (customer, development, testing) collaborating to write\u00a0<a href=\"https:\/\/agilealliance.org\/glossary\/acceptance\/\">acceptance tests<\/a>\u00a0in advance of implementing the corresponding functionality. \u00a0The collaborative discussions that occur to generate the acceptance test is often referred to as the\u00a0<a href=\"https:\/\/agilealliance.org\/glossary\/three-amigos\/\">three amigos<\/a>, representing the three perspectives of customer (what problem are we trying to solve?), development (how might we solve this problem?), and testing (what about\u2026).<\/p>\n<p>These acceptance tests represent the user\u2019s point of view and act as a form of requirements to describe how the system will function, as well as serve as a way of verifying that the system functions as intended. In some cases the team automates the acceptance tests.<\/p>\n<\/div>\n<\/div>\n<h2>Also Known As<\/h2>\n<div>\n<div>\n<p>ATDD may also be referred to as Story Test Driven Development (SDD), Specification by Example or\u00a0<a href=\"https:\/\/agilealliance.org\/glossary\/bdd\/\">Behavior Driven Development (BDD)<\/a>. \u00a0These different terms exist to stress some differences in approach that lead to similar outcomes.<\/p>\n<\/div>\n<\/div>\n<h2>Expected Benefits<\/h2>\n<div>\n<div>\n<p>Just as TDD results in applications designed to be easier to\u00a0<a href=\"https:\/\/agilealliance.org\/glossary\/unit-test\/\">unit test<\/a>, ATDD favors the creation of interfaces specific to functional testing. (Testing through an application\u2019s actual UI is considered less effective.)<\/p>\n<\/div>\n<\/div>\n<h2>Common Pitfalls<\/h2>\n<div>\n<div>\n<p>Even more than the use of automated acceptance tests, this practice is strongly associated with the use of specific tools such as\u00a0<a href=\"http:\/\/fit.c2.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Fit<\/a>\/<a href=\"http:\/\/fitnesse.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">FitNess<\/a>,\u00a0<a href=\"https:\/\/cucumber.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Cucumber<\/a>\u00a0or others.<\/p>\n<p>One major risk, therefore, is that the tool chosen will hinder rather than advance the main purpose of this practice: facilitating conversation between developers and product owners about product requirements. Tools should be adapted to meet product owners\u2019 needs rather than the other way around.<\/p>\n<\/div>\n<\/div>\n<h2>Origins<\/h2>\n<div>\n<div>\n<ul>\n<li>2003: Kent Beck briefly mentions ATDD in the book \u201cTest Driven Development: By Example\u201d but dismisses it as impractical<\/li>\n<li>2003 to 2004: driven by the popularity of Fit\/FitNesse ATDD becomes accepted practice in spite of Beck\u2019s objections<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<h2>Further Reading<\/h2>\n<div>\n<div>\n<p><a href=\"http:\/\/testobsessed.com\/wp-content\/uploads\/2011\/04\/atddexample.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Driving Development with Tests: ATDD and TDD<\/a><\/p>\n<p><a href=\"https:\/\/www.infoq.com\/articles\/atdd-from-the-trenches\" target=\"_blank\" rel=\"noopener noreferrer\">ATDD From the Trenches<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Acceptance Test Driven Development (ATDD) involves team members with different perspectives (customer, development, testing) collaborating to write acceptance tests in advance of implementing the corresponding functionality.<\/p>\n","protected":false},"author":12,"featured_media":8067461,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","categories":[904],"tags":[786,787],"class_list":["post-5003368","aa_glossary","type-aa_glossary","status-publish","has-post-thumbnail","hentry","category-business","tag-acceptance-test","tag-atdd"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_glossary\/5003368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_glossary"}],"about":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/types\/aa_glossary"}],"author":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/comments?post=5003368"}],"version-history":[{"count":0,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_glossary\/5003368\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/media\/8067461"}],"wp:attachment":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/media?parent=5003368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/categories?post=5003368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/tags?post=5003368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}