podcast-rr-196-testing-clojure-in-ruby
in generative testing you have to determine what the invariant is. What must be true at the end of the test.
When talking about why it might make sense to use generated tests (or fuzz testing) in addition to TDD, Jim said this:
"In TDD we don't try to get a totally complete test case; we try to use the test case to drive the solution and get feedback from that"
Given that people aren't going to put any effort into testing, what's the best way to do it? Property-based testing. Generative testing. Random testing. Concolic Testing (which was done long before the term was coined). Static analysis. Fuzzing. Statistical bug finding. There are lots of options. Some of them are actually the same thing because the terminology we use is inconsistent and buggy. I'm going to arbitrarily pick one to talk about, but they're all worth looking into.