Sometimes it can be hard to get across the idea of AcceptanceTesting. There's a tool I sometimes use, a MentalModel of sorts, to put customers or programmers in a helpful frame of mind. Imagine a thorny problem domain : for instance BryanDollery was telling us about meteorology software that does 3-D animated presentations of the weather in various parts of the world.
Wow - no way you can possibly write acceptance tests for that! Enter Maxwell's Coder.
Maxwell's Coder is a superfast programmer - tell him a user story, he will have it implemented within 30 seconds. The problem is, he will always have it perfect... except for the single most obvious bug you can think of.
For instance, if you ask Maxwell's Coder to do the "fly over the bay" story he's going to play back the geography 3D, but he'll completely forget to plug in the (otherwise correct) code that displays the clouds and other "interesting" stuff.
So obviously you need to write a test to catch that. But then Maxwell's Coder never just improves his code - he just starts over from scratch, since he's a really fast guy. He won't be forgetting about the clouds again, since you have a test for that. But now you have to think of the next most obvious bug.
The lil' guy can be irritating (as programmers who don't test their stuff are to customers) but he sure will get your acceptance testing rolling.
Maxwell's Coder can be useful for eliciting requirements from other people as much as he can be useful for AcceptanceTesting.
When I can't understand what a customer wants, I often find it helpful to regress into TeachMeToSmoke mode.
I use another tool, the Crystal Ball, for the kind of problems when one thinks, how can I test for that if I don't know what the weather will be like tomorrow / what the stock price of X will be / where the user might type or click / etc. With the Crystall Ball I always *know* what these are going to be... and then I make sure my tests know too, by stuffing the appropriate data streams in the mock objects.
I'm the team leader for the project that BryanDollery has been telling everyone about. Unfortunately this page is of no use to me what so ever. It started off promisingly enough...
How can you possibly write acceptance tests for that?
but, frustratingly, never answered the question. Sure you've shown a good way to figure out what to test, but that isn't the problem and never was. HOW do we do these tests is the issue. I'm still searching for the answer:( - hjm
See also: LaplacesDemon?