What is TDD, BDD & ATDD ?

Difference between TDD, BDD & ATDD


TDD- Test Driven Development, Behaviour Driven Development & Acceptance TestDriven Development

Well, you could see the above Acronyms buzzing over all Automation folks. I was not sure on what it means and How it differs each other. How each methodology will benefit? and where exactly it will help in the Development Life cycle.

Finally, after some analysis I had found out the differences and posting it here. Readers are always welcomed to correct me if I am wrong.

First lets list out what exactly each methodology does means

TDD – Test Driven Development

Its also called test-driven design, is a method of software development in which unit testing is repeatedly done on source code. Write your tests watch it fails and then refactor it. The concept is we write these tests to check if the code we wrote works fine. After each test, refactoring is done and then the same or a similar test is performed again. The process is iterated as many times as necessary until each unit is functionally working as expected. TDD was introduced first by XP. I believe I have explained enough in simple terms.

BDD – Behaviour Driven Development

Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design

DDD-Domain Driven Testing
BDD is similar in many ways to TDD except that the word “test” is replaced with the word “Behaviour”. It’s purpose is to help the the folks devising the system (i.e., the developer) identify appropriate tests to write–that is, tests that reflect the behavior desired by the stakeholders. BDD is usually done in very English-like language helps the Domain experts to understand the implementation rather than exposing the code level tests. Its defined in a GWT format, GIVEN WHEN & THEN.

Dan North first introduced the BDD Style of methodology

Well, there is a lot of DD’s 🙂 I love DD’s 😉 don’t you ?

ATDD – Acceptance Test Driven Development.

ATDD is a collaborative practice where users, testers, and developers define automated acceptance criteria early in the development process. ATDD helps to ensure that all project members understand precisely what needs to be done and implemented. This workflow usually involves establishing the criteria first, most often from a user perspective, and creating concrete examples. Thereafter, acceptance tests are developed and run to see the results of failure with the right code based on these examples. Minimal code is then developed to run the program, more acceptance tests are run again, and the results are validated. Refactoring is then carried out based on the results of the acceptance tests before the final program is developed for use.

More on ATDD here

With that, the basic definition of the terms explained above we will see the differences

Few, Differences between TDD BDD and ATDD

  • BDD focuses on the behavioural aspect of the system rather unlike the TDD focuses on the implementation aspect of the system.
  • ATDD focuses on capturing requirements in acceptance tests and uses them to drive the development. It seems like ATDD focuses on external quality of the software (does the system do what it is required to do?).
  • ATDD leans towards the developer-focused side of things like [Unit]TDD does, the BDD is where the step of making it more customer-focused comes in. This allows much easier collaboration with non-techie stakeholders, than TDD.

List of BDD Tools :

  • Cucumber
  • RSpec
  • Behat
  • SpecFlow
  • JBehave
  • Lettuce
  • easyb
  • List of ATDD Tools :

  • Thucydides
  • Spectacular
  • FitNesse
  • Concordion
  • With that I believe I have covered about TDD, BDD and ATDD. Please feel free to share and correct me if I am wrong any where or make any suggestions to improve this post

    16 thoughts on “What is TDD, BDD & ATDD ?”

      • Gianluca,
        Well, you guessed quite right. But its done using Microsoft word. Lil afraid to use the images from google because of copyright violations. Hence made used of available resources 🙂

        Good catch 🙂

    1. Hi! I’ve been following your site for some time now and finally got the bravery to go ahead and give you a shout out from Atascocita Tx! Just wanted to mention keep up the great work!

    2. Hi.
      Love the easy way you explain these terms.
      I was also confronted to people wanted to understand the difference between TDD and BDD.

      They usually understand well when I put it that way:
      – TDD allows a good and robust design, still, your tests can be very far away of the users requirements
      – BDD is a way to ensure consistency betwenn users requirements and the developper tests

      Hope it helps,


    3. TDD is just the process of testing code before writing it!
      DDD is the process of being informed about the Domain before each cycle of touching code!
      BDD is an implementation of TDD which brings in some aspects of DDD!

      Does that summarises ?

    4. TDD is done by tester or developer ,because is going to write the code for developement of the functionality ? then why we are saying it is a test driven approach it should be developer driven approach ?

      Please help me in understanding clearly .


    Leave a Comment