Testing: Differences between TDD, ATDD and BDD

Testing is important. Which suits you, though?

Photo by Siora Photography on Unsplash

Test-Driven Development (TDD)

Test driven development revolves around using Unit Tests to test code, decoupling dependencies from the code (using techniques such as dependency injection).

  • Bugs should be readily apparent, and feedback for fixing them should be near-immediate
  • Code should be testable when written
  • As developers get used to TDD, productivity should increase
  • Code should be easy to understand, as it is driven by the tests

Behavior-Driven Development (BDD)

BDD is a derivation of TDD, but the tests are mainly based on systems behaviour.

  • Enhances communication between developers, testers and product owners
  • Acceptance criteria can be established prior to development

Acceptance Test Driven Development (ATDD)

ATDD tests are written from the user’s perspective. It is similar in nature to BDD, however ATDD focusses on the code meeting the requirements of the software. Like BDD, tests are written in standard English but the focus on writing acceptance — that is ATDD turns BDD into an executable specification (this is the test), and that specification can even be automated.

  • Acceptance tests serve as a reminder of the end-point that the software needs to achieve
  • Automation of ATDD can reduce feedback time


Testing is important, as good testing methodologies should ensure that software actually (you know) works.

Extend your knowledge

  • Cucumber supports BDD and is available from their website (HERE)

The Twitter contact:

Any questions? You can get in touch with me HERE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store