FitNesse – Are you ready to SLIM?

Introduction

The purpose of this post is to give you a quick overview of what FitNesse is, how it works and the innovation behind it.  As we know software development is a collaborative process. There are many different people involved: Product owner, Business analyst, Developer, QA analyst and Support personnel, etc.   There is also multiple technologies involved in any given application.  To architect, manage, design, develop, test and use a software requires different skill set and depth of knowledge in the domain and technology.   The catch here is not everyone is knowledgeable in everything especially the language used to program (for business people) and business direction and needs for developers.  FitNesse is a open source software testing framework developed by Ward Cunningham and now further developed by Robert C. Martin (author of Clean Code).  Ward  has captured this problem and has come up with an innovative solution.   FitNesse utilizes WIKI pages to code the test cases with a simple English language style scripts which can be used for testing in a software development project by all the stakeholders.   Wiki pages are not new and is used for documentation purposes in almost all organizations so it becomes easier for various actors to adopt.

How it works?

The purpose of FitNesse is to automate functional testing (User Acceptance Testing) at a business level.   It is developed using Java and  a web server which hosts wiki pages.   The wiki page is written in a way (simple English) that can be understood by all the different participants of the team.  FitNesse then works by executing this by mapping it to what they call Fixtures.   Fixtures are nothing but programs which has several methods to perform functions like connecting and executing the given query in DB and return the query result, put a message on a queue or topic, etc.   Fixtures can be written in various languages including Java, C# and Ruby.  The developer or QA person can write the Fixtures and the business users could just utilize the English like syntax to execute scripts.  Whenever a wiki test is executed, the Fixtures works by calling the System Under Test (SUT) with appropriate parameters for example putting a message on a queue and will receive the results of the SUT and back to the Wiki front-end, which in turn will visually indicate if a test has passed or not.

There are two types of test systems: SLIM and FIT.  FIT is the older test system and is no longer being developed.  The FIT style fixtures will have to extend FitNesse related classes for their Fixtures thus introducing dependency on Fixture framework in your code.  SLIM fixtures are just POJOs (no FitNesse dependency) and hence can easily reusable for other purposes if necessary.  SLIM is a lightweight version of the FIT protocol with design goal of easily being able to port to other languages.

To explore further click here

In Short

User Acceptance Testing is a very critical part of the software development lifecycle today.  In this economy a bug in a software may cost thousands to millions of dollars for companies of all sizes and obviously its not desirable.   A framework like FitNesse can help business users, developers, testers and end users collaborate easily using well understood interface such as Wiki.  In fact the end users involved in testing can author their own test cases against the SUT with little training and can work together with other members of the team to finalize and successfully execute test cases that might not have been captured by QA.

Resources

FitNesse Website

FitNesse User Guide

FitNesse Download

FitNesse DZone RefCard

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s