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
  • Comments
    9 Responses to “What is TDD, BDD & ATDD ?”
    1. Gianluca says:

      I’ve noticed that you’ve used Powerpoint in order to draw figures 😉

      • 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 🙂

    2. bala says:

      Super boss, explanation with pictorial representation….really useful…wishes to you

    3. Uggs Adirondack Boots says:

      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!

    4. 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,


    5. Tester says:


    6. christy says:

      Can you please share me your email id and no as I have few clarifications on this

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out /  Change )

    Google photo

    You are commenting using your Google account. Log Out /  Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out /  Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out /  Change )

    Connecting to %s

    %d bloggers like this: