FitNesse and Requirements in XP
11-Jan-2004 Filed in: Software
Development
In XP, requirements gathering is an ongoing
conversation validated with acceptance testing. It
makes sense, therefore, that any document that
results from gathering requirements be easy to edit
and give explicit instructions for validation.
FitNesse takes this idea to
the extreme by using a Wiki front-end to make
the requirements document the living, growing
entity it needs to be, and it builds in FIT acceptance testing, so that
tables representing acceptance tests can be
added and run directly from the document.
To use FitNesse, developers add Fixtures to their projects using the FIT framework. These Fixtures can be are added to FitNesse using path and fixture directives. Each page can embed an acceptance test using syntax like the following:
|!-CalculatorColumnFixture-!|
|button|display()|
| |0|
|1|1|
|+|1|
|2|2|
|=|3|
This example tests a calculator by pressing its buttons. CalculatorColumnFixture is a class extending ColumnFixture in FIT. It has a member variable called button and a method called display(). For each row, button is set to the value in the left column and the return value of display() is checked against the value in the right column. In addition to this table, any text describing the functionality of the calculator can appear on the page. Advanced Fixtures are available for more complex interfaces.
The beauty of FitNesse is that it is implemented as a web-server that serves up the Wiki with the requirements documentation and acceptance tests. It adds FIT directives to the normal Wiki editing syntax and includes version tracking for each page.
Combining the aspects of collaborative document growing and automated acceptance tests, FitNesse is a great addition to the requirements process.
To use FitNesse, developers add Fixtures to their projects using the FIT framework. These Fixtures can be are added to FitNesse using path and fixture directives. Each page can embed an acceptance test using syntax like the following:
|!-CalculatorColumnFixture-!|
|button|display()|
| |0|
|1|1|
|+|1|
|2|2|
|=|3|
This example tests a calculator by pressing its buttons. CalculatorColumnFixture is a class extending ColumnFixture in FIT. It has a member variable called button and a method called display(). For each row, button is set to the value in the left column and the return value of display() is checked against the value in the right column. In addition to this table, any text describing the functionality of the calculator can appear on the page. Advanced Fixtures are available for more complex interfaces.
The beauty of FitNesse is that it is implemented as a web-server that serves up the Wiki with the requirements documentation and acceptance tests. It adds FIT directives to the normal Wiki editing syntax and includes version tracking for each page.
Combining the aspects of collaborative document growing and automated acceptance tests, FitNesse is a great addition to the requirements process.