Parameters TDD BDD ATDD
Purpose A development technique that is more concerned about individual units of an expected feature. A development technique that revolves round expected behavior. A development technique that focuses on satisfying user needs.
Participants Developers Developers, customers, QAs Developers, customers, QAs
Preferred Language Programming languages such as Java, Python, etc. Gherkin / Simple English Gherkin / Simple English
Tests In this technique, developers write tests for developers In this technique, it is important that tests are understood and accessible to all the stakeholders. Hence, they are written in simple English which is then transformed into automated language of tests. This technique too calls for common language understood by all the stakeholders. Hence, use of simple English language is preferred.
Bugs Can be easily tracked down and also their occurrence gets reduced. Compared to TDD, it is difficult to track them down. In ATDD too, developers may have hard time in getting them tracked down.
Suitability Projects that do not require involvement of end users such as server, API, etc. Projects in which user is the one who acts, such as: eCommerce sites, various types of apps. This technique is best suited for projects where customer experiences are at the center. These are also the projects where there is much competition such as, eCommerce, apps.
Preferred Tools JDave, Cucumber; JBehave, Spec Flow; BeanSpec; Gherkin Concordian; FitNesse; Junit; TestNG; NUnit frameworks; Selenium tool; or any open source tools. Gherkin; Dave; Cucumber; RSpec; Behat; Lettuce; JBehave; Specflow; BeanSpec; Concordian; MSpec; Cucumber with Selenium / Serenity. TestNG; FitNesse; EasyB; Spectacular; Concordian; Thucydides; Robot Framework; FIT.