I love automated testing. In a rare diversion into op-ed1 I thought a put few thoughts (read - opinions) together.
Before I start on how best to compose your tests, I briefly ask - What are the reasons for testing? Broadly, I think they are:
I think this boils down to providing software that does what your customer wants (features), doesn't do what they don't want (bugs), and do it without making too much noise (cost).