Sunday, November 20, 2005

Fitnesse

I took a look at Fitnesse "a software development collaboration tool", I had had some experience with it earlier, but had forgotten how it functioned :)

It helps me to understand what Fitnesse is by breaking it up into two parts:
  • It is an extension to xUnit which allows you to configure the unit tests (without changing code).
  • It is an UI which facilitates the configuration of the tests.
In fact the UI part is presently implemented using a Wiki, but could "easily" be replaced by another technology.

One thing bothered me while reading about Fitnesse, i.e., that the Fitnesse tests are called "acceptance tests". I think it is misleading to say that the customer writes the test, what he is actually doing is configuring the test that have been written by the developer. For me "acceptance test" is where the customer actually defines how and what to test, he should not rely on the developer to write the correct tests. The customer gets the final product and plays with it.

This, however, does not diminish the usefulness of Fitness tests, they do add value to the unit tests, especially if they get the customer more involved in the project. Maybe I am going overboard with this discussion, not having even installed or tested Fitnesse :)

5 comments:

h.tomasson said...

You say you're bothered by the fact that the customer should write the test. By "writing" it doesn't have to mean that he writes the setup for the test. We can leave that to developer. What the customer needs to write in collaboration with the developer are the tests input and verification specification, which is excactly your understanding of acceptance tests. These kinds of tests can be written early in the development phase long before the final product is ready or even UI "to play with". The acceptance tests are incrementally developed through out the project.

You are not going overboard with this discussion because it's a general quality to be skeptic to some amount, and it's probably good idea for you to get the FIT for Developing Software book to answer more of your questions ;)

Ari said...

I might have misunderstood somewhat the purpose of Fitnesse, but would you say that I have understood its scope? Or is there more to it then adding run-time configuration to the unit tests?

h.tomasson said...

I would say that there is much more to it then just adding run-time configuration to your unit-tests. FIT test cases generally test a vertical (or horizontal) slize through your system(s), hence "Framework for Integrated Testing", while the unit tests are testing individual components/classes in isolation. FIT is for example quite useful when creating acceptance tests for "user-stories".

Ari said...

I guess I have to install it and work with to understand it better :)
Thanks!

h.tomasson said...

Sjón er ávallt sögu ríkari ;)