Test Driven Development for Agile software projects
I am a strong proponent of Agile software development methodology. I have used vairations of it in several software projects and have been amazed and how well it works.
Test Driven Development is an Agile concept where a developer will design an object, and then develop unit tests for each interface the object presents. The developer then starts developing the code to implement the object and continually runs the unit tests. The development of the object is done when all unit tests pass.
The unit tests are easily added to a suite of tests and can be easily run any time a developer chooses. There are test frameworks available for C++, C#, Java, and many other languages.
The main benefits of Test Driven Developments are:
A definition of Done: The coding of an object is not done until all tests pass.
A definition of the object interfaces. The unit tests define how the object works and what is should do. This can be used by a developer to learn about the object and how to use it. If the tests were designed properly, they may even be used as sample code a developer can use when they want to use the object.
A definition of what still works. Many times fixing a bug in one area can make a bug in another. If all objects have unit tests, the unit tests will break in this situation and one can see immediately the consequences of the bug fix.
Test Driven Development does not reduce the need for SQA and final testing, but it does go along way to reduce the number bugs before the software leaves the developer's workstation.
For more information of Test Driven Development or Agile Methodology see http://www.agilealliance.org/