I thoroughly enjoyed Karen Greave’s talk on Agile Testing. She had just about 100% coverage (pun intended, groan). Yet, testing is really a pain in the rear. Testing is execution, and Karen was dead-on right, that automation is the path to follow. Computers are very good at testing. A computer does what it is programmed to do, and it can test the way it was programmed to test. It’s simple: if testing is your constraint, move that constraint away from testing by automating.
Now, you have to deal with the constraint that shifted to the next point: test authoring. While testing (i.e. execution) is just a passive, laborious effort, test authoring is a very creative, active exercise. It is actually an exercise in confirming a shared, common understanding. Kristin Nygard said “To program is to understand” and test authoring is a programming exercise. That’s why outside-in, behavior driven development style scenarios are actually tests, coded in a human language. The act of authoring a scenario proves your understanding and the expected working of the software.
This is why I separate test execution (passive) from test authoring (active). And Karen said that early feedback is good (right again), which is why I author my tests very early. I’m extreme about this. I test first.