Test-Driven Development (TDD)

Test-driven development (TDD)  is a test centric software design and growing tool.

It relies on the repetition of a very short development cycle:
  1. Write a failing automated test case that defines a desired improvement.
  2. Produce code to pass that test.
  3. Finally, refactor the code to acceptable standards.
Benefits you get from using TDD:
  • Develop software closer to the users' needs
  • Encourage the team to develop software based on a good object-oriented programming design: good cohesion and low coupling between objects
  • Favour the team's trust to maintain software with a set of regression tests
  • Have an up-to-date documentation on software behaviour (tests).
Extensions of TDD include:
  • Behavior-Driven Development: Test cases are written in a natural language that non-programmers can read.
  • Executable specifications: Test cases are written in a natural language that non-programmers can read and write.
  • Acceptance Test-Driven Development (ATDD): The criteria specified by the client are automated into acceptance tests, which then drive the traditional Unit Test-Driven Development (UTDD) process.
Books Concepts that are addressed in Growing Object-Oriented Software, Guided by Tests include:
  • Software development as a learning process
  • Maintaining the test-driven cycle
  • Mock objects
  • Object-oriented design
  • Testing frameworks (JUnit, jMock)
  • Alistair Cockburn's Hexagonal architecture 
  • Building on third-party code
  • Error handling
  • Tests readability
  • UI tests
  • Persistence tests
  • Asynchronous tests
Blogs and Twitter Videos Articles Tools, frameworks and libraries Our training offering

Behavior-Driven Development (a.k.a. executable specifications)


Behavior-Driven Development (or BDD) is an Agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project. It was originally named in 2003 by Dan North as a response to Test-Driven Development, including acceptance test or customer test-driven development practices as found in Extreme Programming.

Articles Videos Tools

Team of Pyxis