The software development process starts with the definition of the problem and its desired answer. The code is a finite state box that claims that it meets the expectation of receiving the problem and return the answer while the purpose of testing is to verify this claim.
>> To address that point more directly, "testing" is much more than TDD. I >> believe after-the-fact tests are more akin to tests for falsifiability than >> TDD is.
I agree. Still, these after-the-fact tests belong in the infinite universe of tests that they were not identified originaly and can now become part of the testing suite. What distincts a good from a bad tester, is his ability to minimize the need for these "after-the-fact tests".