Listen to this post
Because TDD is “test” driven development, people tend to think of TDD as “writing tests first.” In fact, TDD is not a testing activity per se. It is the creation of an executable specification prior to the creation of each system element. Unit tests are a very useful by-product of this process.
Because of this point of view, TDD dictates that different tests be written, or written differently than the QA point of view would lead us to do. There are points of overlap, but there are distinct differences, and this means that those new to TDD often miss certain important tests.
Typically, these missing “executable specification” tests will include:
- Public constants
- Only one side of a boundary is specified but not the other
- Critical internal workflows
- Exceptions thrown by the system
In the next few posts, I will provide details on what these things are and why it is important they be included in the TDD suite of tests.