• Jobs
  • About
  • Introduction to FitNesse December 4, 2008

    What is FitNesse

    FitNesse is an open source tool that allows end users of the test solution to create, manage and execute automated test cases as specifications without necessitating them to know any programming language. You might want to read the differences between defining tests as specifications as opposed to the programming language approach before reading on.
    FitNesse essentially has the following major features:

    1. Wiki engine

      The fitnesse server also serves as a wiki engine. This allows you to access the fitnesse server from a browser. This is where you could not only create wiki pages, but you could also set the wiki page´s property to make it execute as a Suite or a Testcase.

    2. Reflection engine

      This allows users to write human readable instructions, which gets translated into API calls using reflection.

    FitNesse comes in several languages like ruby, .net, but it was initially written in Java.

    Why use FitNesse?

    Ease of use

    The key to make a framework useful, especially within QA, is to abstract the complexity of the programming language and the APIs that run underneath and still allow as much control to the user as possible. The end users of the fitnesse based test harness just need to know how to represent the actions they want to perform (essentially the steps of the test case) in raw wiki format. FitNesse then converts these steps into API calls against the Fixtures that are either bundled with FitNesse, or those that are extended by the developers of the test harness.

    Language support

    FitNesse supports several programming languages like java, .net, ruby.

    Extensibility

    Besides being open source which allows you to potentially contribute to the features that FitNesse come out of the box, it also allows you to create your own custom plugins, test runners, etc.

    Variety of testing capabilities

    FitNesse provides fixtures that can be extended to represent actions that the end user of the test harness would want to do. If the intention is to test the web browser, the fixtures would have to work with tools that could either drive or simulate web browsers; if the intention is to test a web service end point, then the fixture would have to be able to simulate the different client SOAP requests and validate SOAP responses, and so on. This means allows a fitnesse based test harness to test almost anything that you can using represent in a programming language.

    Remote access

    Since fitnesse server can be accessed using a web browser, all actions needed for creating, modifying, organizing and executing testcases and suites, can be done from any machine in the network with a browser installed on it. With some other competing tools, the testcases are stored as flat files or database for which you either needed access to the machine hosting the test server or db client to modify the database. In comparison the requirements with FitNesse are far lesser. This eventually helps in adoption and use of the test harness.

    Integration with other tools

    For integrating with other tools, you need a variety of options to trigger execution of a test suite or test case, and you need an easy way to access test execution results. FitNesse test cases and suites can be executed by clicking a link in the browser, accessing the test case or suite using a certain query string, or through the command line. The results of the execution can be easily transformed (say using XSLT) to a format that you want the results in, or you could extend fitnesse to use your own test runner.

    Summary

    FitNesse is a tool that can be used to build frameworks upon. It contains a wiki engine and a reflection engine. Together, they allow users to add steps in a test case without necessitating the need to know the code that runs underneath.

    More Information and Resources

    Posted by Rahul Poonekar in : FitNesse

    Leave a Reply

    Your email address will not be published. Required fields are marked *