Home

Testing

Testing is a fundamental facet of Extreme Programming. It gives the programmers and customer the courage to move forward as quickly as possible, and provides the feedback necessary for a team to maximize the quality of the software.

The team focuses on validation of the software at all times. Programmers develop software by using Test-Driven Development, writing tests first then the code that fulfills the requirements expressed in the tests. Customers, with the help of Testers and the Programmers, provide Story Tests that verify that the features they need are provided.

Programmer Testing

Programmer Testing is used to provide tactical verification of the software, i.e. at the class and method level. Developers write tests for individual methods, working at a very low level with the code. This is also sometimes referred to as Unit Testing, however that term has certain connotations that came with it from more traditional software development processes. So, we prefer the term Programmer Testing in order to better communicate who and what is tested.

To support Programmer Testing, there are many commercial and open source testing frameworks available. The most popular are generically called 'xUnit' (from names such as JUnit for Java and NUnit for .NET), which allow the Programmers to write their tests in code that can be executed with a single click of a button.

A comprehensive list of the available testing frameworks is available at XProgramming.com.

Story Testing

Story Testing is the more strategic level of tests used for a system. These tests verify that the User Stories have been implemented as required by the Customer. Ideally, these tests are automated in order to provide an easy way to verify the state of the entire system. Note, however, that "through the GUI" record and playback testing tools are not recommended for this purpose since their tests tend to be quite brittle in the face of a changing user interface.

Integration Testing

The Extreme Programming literature doesn't specifically speak of integration level tests. However, quite often tests are required that are larger than unit tests, but aren't Customer-level story tests. These are typically used to ensure that different parts of an application are working correctly together, e.g. navigation, workflow.

For these sorts of tests, the tool used simply depends on what is required for the test. They may be written in xUnit, FIT or FitNesse may be used, or even a custom test harness. The main goal is to provide simple tests that will execute quickly and cover "anything that could possibly break".

 

For more information about Extreme Programming, Testing and Test Driven Development, visit our Resources page.

Copyright ©2001-, Mayford Technologies Inc. All rights reserved.