FitNesse is a wiki-based automated test framework created for software testing purposes. It supports an agile style of black-box testing, unit, integration, acceptance, and regression testing. FitNesse enables customers, testers, and programmers to learn what their software should do, and to automatically compare that to what it actually does. It compares customers' expectations to actual results. It encourages users to collaboratively define executable specifications for their software.
FitNesse is focused entirely on easily creating tests, allowing testers and developers to focus on creating high-quality tests rather than getting lost in the mechanics of executing a test. Given the way FitNesse works, creating tests easily involves three factors:
1. Creating tables easily.
2. Easily translating tables into calls to the system under test.
3. Allowing ease and flexibility in documenting tests.
Why Should We Write Tests?
They provide clear feedback into requirements early in the development process.
They encourage communication between developers and stakeholders.
They reduce risks since everything is tested all the time.
They serve as living specification for the system.
They improve code quality by enabling developers to make the correct changes rather than the lowest-impact change.
They serve as end-to-end test that can be executed in an automated fashion at will.
They form comprehensive regression testing suite that validates functionality amidst changing requirement.
They exercise more paths through the business logic than manual testing.
Who Should Write These Tests?
Writing FitNesse tests is ideally a collaborative effort between developers and non-developers (users, testers, and business analysts).
Non-developers are responsible for defining specifications, each of which involves test data and expected results. In this way they are engaged early and often in development process. This is much more accurate way of capturing functional requirements than prose.
Developers are responsible for translating customer-defined specifications into FitNesse code fixtures. In this way they are deeply engaged in the requirements gathering process and encouraged to build the right code in addition to building the code right.
A Testing Architecture
FitNesse is wiki web server – requires no extra configuration or setup. You can easily create and edit the test cases on wiki pages.
FitNesse works with Java, C#, Smarttalk and Python.
FitNesse is compatible with JUnit which provides advantage of performing test as part of build process.
Tests can be written before the code so that this approach can support TDD-Agile approach.
The biggest advantage FitNesse has over other integration testing frameworks is that the entry point into the code stack is not the (web) frontend – fixtures are written in java/C# and call out to whatever part of the codebase you are testing. This allows us to test separate layers as well as testing the entire code stack working together.
Scope of FitNesse
FitNesse is an application testing suite that allows you to test the business layer of your application.
Testing of Software where complex computation needs to be tested on wide range of data set.
Test can be run ahead of the code freeze for release.
Limitations of FitNesse
No capture & replay possible.
Not used for Web interface testing. (It can be integrated with UI testing tools like selenium).
Not used for Performance testing.