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.
No comments:
Post a Comment