User Acceptance Test Driven Development in a Scrum Team using Fitnesse & How people use Fitnesse
Rija Ménagé's experience with Fitnesse for doing TDD in a scrum team:
My team uses Scrum and we develop web sites.
Fitnesse is used as a tool to support the Acceptance test driven development process we created around our Scrum methods.
The duration of our iteration is 2 weeks, it starts by a sprint planning and finishes with a sprint demo and a sprint retrospective.
Our Sprint backlog is generated out of a product backlog. A backlog entry is a user story written following the following format:
AS A [user of the function] I WANT [functionality] SO THAT [benefit to the user]
Before a new sprint starts, the product owner (who's embedded full time within the team) decides what story goes into the next sprint.
The product owner meets the technical lead and the team's tester in a session where the acceptance tests for the selected user stories are created. The role of the tester during this session is to help the product owner to think of the various scenarios under which the functionality will be used. This is to expose the detailed characteristics of the functionality for the developers to implement. Each of these detailed characteristic are written as acceptance criteria in the following format
GIVEN [an initial context] WHEN [some event happens] THEN [an expected state linked to the functionality]
The role of the technical lead is to help the product owner to stay within a technically feasible space.
This session happens usually in the beginning of the second week of the current sprint.
The outcome of this session is documented in the Fitnesse wiki and communicated to the rest of the team for feedback.
Just before the sprint planning a session is organized involving the whole team to work out the FIT tables.
Then the first tasks of the sprint is for the developers to write the fixture code and the tester to gather the test data.
Then the developers write the functionalities and at the end of the iteration, the acceptance tests will pass eventually. Sometimes there will be an acceptance test or two that won't pass. These will be deferred to a new sprint with new user stories.
Fitnesse allows the creation of index pages that links to the individual tests to from a test suite. So once a test has been seen passing once, it is linked into an index page for running tests. This index page then becomes a suite of regression tests and is being executed under Cruise Control.