2.1.3. Testing as a Driver for Software Development
TDD, ATDD and BDD are similar development approaches, where tests are defined as a means of
directing development. Each of these approaches implements the principle of early testing (see section
1.3) and follows a shift-left approach (see section 2.1.5), since the tests are defined before the code is
written. They support an iterative development model. These approaches are characterized as follows:
Test-Driven Development (TDD):
• Directs the coding through test cases (instead of extensive software design) (Beck 2003)
• Tests are written first, then the code is written to satisfy the tests, and then the tests and code are
refactored
Acceptance Test-Driven Development (ATDD) (see section 4.5.3):
• Derives tests from acceptance criteria as part of the system design process (Gärtner 2011)
• Tests are written before the part of the application is developed to satisfy the tests
Behavior-Driven Development (BDD):
• Expresses the desired behavior of an application with test cases written in a simple form of
natural language, which is easy to understand by stakeholders – usually using the
Given/When/Then format. (Chelimsky 2010)
• Test cases are then automatically translated into executable tests
For all the above approaches, tests may persist as automated tests to ensure the code quality in future
adaptions / refactoring.