Test-driven development (TDD) is one of the new breed of "agile" software development techniques. At the core of TDD is the simple philosophy that the test cases for a new feature should be designed before the feature is implemented. Advocates of TDD claim that it results in shorter development times and better quality code. They cite early defect detection and the ease of regression testing as the main drivers for this improvement.
As TDD grows in popularity, many practitioners are beginning to realise that the core concepts of TDD can be applied to the other phases of the development life cycle. This session explores how the TDD philosophy can be applied to the requirements analysis phase.
The session commences with a brief overview of TDD that is followed by a detailed discussion of the concepts behind test-driven requirements (TDR). The discussion focuses on the abstract nature of software requirements and how this leads to difficulties with validation. It is argued that, in contrast, test cases provide concrete examples of requirements that are by nature self-validating.
The session concludes with a demonstration of the FIT acceptance test framework designed to support TDR in much the same way that the xUnit test frameworks support TDD.