Just completed a very interesting practical exercise with Gojko Adzic at the agile testing uk (http://agiletesting.org.uk/) event hosted by skillsmatter in London. Worked well as a group exercise and a very well attended meeting (~60 people).
Looked at a fit test and discussed why it was bad:
* Lack of focus
* Lack of clear definition of business rule(s) under test
* Included technical/software terms terms, db ids and references to fixture classes.
* Non locale specific terms (check vs cheque)
* Some irrelevant data
Key things I got out of it:
* Should describe behaviour for business rules - specification not a script
* OK to include non business rules (e.g. ordering of results) to make testing easier as long as it doesn't conflict with existing business rules. May also prompt discussion around rules
* Non-deterministic ordering is a particular problem which causes test failures and sometimes removal of tests by developers
* We missed an obvious business rule - do we send cheques for £0 (eg someone on the payroll who has not worked during the period in question)
* Feel much more comfortable with Given-When-Then (esp with tables) vs Fitness
* Most teams expressed acceptance tests using to Given-When-Then rather with tables - teams which did seemed to get into difficulty
Need to take another look at the slide stack to see if I have missed anything.