Test Driven Development

Test-driven development (TDD) is all about writing "clean code that works." 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:

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:

We aren't programming in Java, so we cannot use JUnit. In fact, there are many TDD frameworks available for other languages, including C++, but none applicable in this class. Further, most TDD work assumes you are developing in an OO style and will be testing classes, which isn't the case for us--we're exploring other programming paradigms. As a result, we'll use our own quick-and-dirty TDD tools:

Each of these three pages will allow you to download the corresponding tool, explain how to use it, and describe the format to use for your test cases.