I heard about a tool named FitNesse, which is supposed to promote better collaboration between development, testing, and product groups.
What are your experiences with it? Does it really improve program quality? Are there any drawbacks to using it?
FitNesse is an interesting tool. I think it can work well in some cases, and maybe not so well in others. The table-driven tests are very good for testing business rules and the like. If the product group is used to using Excel to communicate requirements, FitNesse is a really good fit.
Where I work, we're not really in a "business-y" environment, but we use FitNesse in a few places to produce "executable documentation" of some of our external command protocols. Having the docs and the tests combined in one document ensures that both get maintained well.
One thing I really like about FitNesse is the multiple language bindings. Because of this, the tests can be used as-is in the context of a re-write using a new language. Not a common scenario, obviously, but an interesting one. The fixture code acts as a "shearing layer" that allows your code and your tests to stay decoupled.
Probably the biggest weakness I see with FitNesse is the lack of tools for maintaining the test suite (refactoring, mass editing, etc). People are working on those, though.
If you decide to try FitNesse, I highly recommend reading anything you can get your hands on by Rick Mugridge (http://www.rimuresearch.com) and Gojko Adzic (http://gojko.net/ and http://fitnesse.info/, including their books. It's really easy to write unmaintainable, uncommunicative "script" tests with FitNesse, and these guys will get you on the right path.
We use it to test our webservices and it's doing a good job at that.
It helped us with:
There are other tools that do all this but Fitnesse is working for us.