Thursday, October 29, 2009

R u dONE yET?

Wouldn't it be great if we could simply write down what the user wants out of a software system and then run these requirements against the develop/ing/ed system (we'd know we were done when all the tests passed)?

If you think so too, read on.

I have recently done just this in hopes of moving forward the Pension Calculator project, we're stuck at the point of: "Are these results (in the pretty GUI) accurate (enough)?".

Imagine a system that uses a bunch of inputs to produce a couple of ranges of results; how/who should verify the results? In a fully-funded operation we'd have Business Analysts, Quality Assurance testers, Developers, Product Owners, etc. But we're not, so get over it already; someone has to desk-check the computations to verify that the results are correct. I tried writing Unit Tests, which was fine, but they're a little obscure to business customers - all that code! (Not to mention all the time & effort required to get a customer to pore over all those details with you) So, in an effort to prove the veracity of the code (to the customer) I turned to FitNesse.

Fitnese is (according to it's One Minute Description):

  • a tool for enhancing collaboration in software development

  • a lightweight, open-source framework that makes it easy for software teams to:

    • collaboratively define Acceptance Tests -- web pages containing simple tables of inputs and expected outputs

    • run those tests and see the results

  • a wiki; you can easily create and edit pages

  • a webserver, it requires neither configuration nor setup

(There is also a 2 Minute Example if you're interested)

The tests are convertable (by FitNesse) to/from spreadsheets to ease the transition between requirements (i.e Business Analyst) and tests (i.e. QA Tester) and are written in a natural language style e.g. given a user identified by

Bob with password D'oh! he can retire between 2010 and

2021


You can run the FitNesse tests from a command-line (given a tool like wget, curl, etc.) too, so it would not be difficult to integrate the test results into a build or Continuous Integration process.


Go fast!


No comments: