A precursor to TDD

In his 1995 book, The Craft of Software Testing, Brian Marick described his approach to testing during development as follows (emphasis mine):

I build the test requirements checklist alongside the design, and I constantly check the design against those requirements. When the design is finished, I build at least some of the test specifications. I expect that combining the test requirements and choosing specific inputs will jog my imagination into noticing problems with the subsystem's design. After they are fixed, and the test requirements and specification are updated, I think in some detail about how the design would handle each test. That sometimes finds bugs; at the least, it's good preparation for writing the code. Then I implement the subsystem and the tests, trying always to write tests as soon as possible.

full version