defect will increase. And, depending on the scope of the defect, additional modules could be affected. xUnit frameworks, such as JUnit, NUnit and MBUnit, are the unit testing frameworks which form the core part of TDD.
Automated regression testing can be implemented by making the CI tool run the unit tests continuously. These "self testing builds" could output the results as a Web page. The onsite team can provide feedback and take corrective measures by going through the web page. Again, the team can benefit from improved quality and communication and from early feedback-adapt cycles.
Fitnesse is an acceptance testing framework gaining popularity due to its ease of use, and its ability to enable collaborative development between the customer and development team. Figure 4 illustrates a sample scenario of Fitnesse usage for both onsite and offshore agile development:
- Customers provide the requirement either using Wiki or spreadsheets.
- Developers write "fixtures," pieces of Java code, to run against the business logic of the application.
- The results from executing fixtures are compared with the actual values (as given by customer). Matching results are shown in green

Figure 4: Example Fitnesse scenario.
The acceptance tests need to be executed frequently by integrating with Cruise Control. The output can be viewed as a Web page, in turn enabling the onsite customer to get the latest status of quality of project.
After considering the tools in this article and relating them to the agile principle "individuals and interactions over processes and tools," it is clear that tools form the bridge between individuals to interact effectively . Especially in an offshore development scenario, good communication tools with frequent access to transparent data make a marked difference in delivering software on time.
[1] See the Agile Manifesto for this and other agile principles.
[2] Kent Beck, Extreme Programming Explained page 61






