What is Fitnesse?
It is:
1. Testing Framework: Provides classes, interfaces, infrastructure to implement Testing fixtures.
2. Wiki Server: Can be used as Wiki Server, where Users (typically QA Users) add and edit there test cases.
FIT - Framework for Integrated Testing.
How does it work?
Fitnesse, which is wiki server, sends the table information( html table in case of FIT, Strings in case of SLIM) to FIT or SLIM server. These are always started as different Processes (thus we cannot debug the underlying fixture by starting Fitnesse Server in debug mode).
These underlying servers (FIT or SLIM) calls the Fixture Framework, which calls the System under Test (SUT). SUT is overriden term. Sometimes it is used to define the System to be Tested. Sometimes it is defined for the new Process that Fitnesse(Wiki Server) starts.
FIT vs SLIM
1. FIT is old.
2. Fitnesse wiki server does not do much things, it sends the complete HTML table to FIT Server.
3. FIT server (which is started in a separate process) returns back the HTML which Fitnesse Wiki server renders as it is.
4. Since SUT (the FIT Server + Fixtures) are doing the most part, it is heavy. To make any change in the Test Tables, FIT needs to be changed.
SLIM:
1. Is new
2. Delegates the HTML part (Rendering, converting HTML to SLIM protocol (string version of decision tables)) to Fitnesse Server
3. Since SLIM is lightwight, many languages can (and are) implemention this - SLIM has many ports.
4. Since HTML is taken by Fitnesse, it is easier to add features to dicision tables without changing SLIM.
How does it matter to Developer?
1. For SLIM, developer need not extend any thing - +1SLIM
2. FIT Library is great. Also, there are many Fixtures already written for FIT. +1FIT.