Test Driven Development

 

Test-Driven Development

Test-driven development (TDD) is all about writing “clean code that works.” It is also known as test-first coding. Here are some quotes (from Kent Beck) that intuitively describe TDD:

The style here is to write a few lines of code, then a test that should run, or even better, to write a test that won't run, then write the code that will make it run.
...
[After figuring out how to write one small piece of code ...] Now, instead of just coding on, we want to get immediate feedback and practice "code a little, test a little, code a little, test a little." [... So we immediately write a test for it.]

TDD grew out of Extreme Programming, ad evolved from the simple XP idea of “build a little, test a little” during coding. Basically, your code always has a complete set of tests that exercises its capabilities, and you write new tests as you add to your code. Practiced systematically, TDD:

  • Gives you confidence that your code works correctly
  • Helps you quickly find bugs as you write them
  • Focuses you on the design task
  • Helps you completely understand the requirements for your code

Learning About TDD

To learn more about TDD, the first place to start is the following (easy to read) classic:

While the Java stuff may not apply, the basic practices and emphasis of TDD are well-presented. Next, the following two articles are required reading for getting a good overall view of TDD:

Finally, if you’d like to dig into TDD more deeply, you might find the following sources useful: