This weekend I started writing testing code under NUnit for the .Math project. Now I know this approach is completely backward, the original product was written in '97 and development didn't proceed using TDD/Agile methods. However, I think the long-term quality of a product with the flexibility of a compiler can benefit from a testing set. This, of course, allows for a full test of the capabilities after making any mods/feature additions/bug fixes.
I'm starting with a backward approach - I realize this and it's unfortunate but a reality of the product state. I'm first testing the compilation results to make certain each function and operator is being evaluated properly. Then I'll drill down into the individual areas of the application - the parser, the support classes, etc.. I'll post the test code on the download site when it's available.
I think this is the only way I can certify a release as complete. This way anyone can grab the test suite and see the compiler is capable of performing the promised tasks. I got the idea from the NUnit site. I really like their Coding Standards stating:
“Test-Driven Development. This is non-negotiable. There will be no code that is accepted without associated tests. Also, we expect that Refactoring is part of your everyday activities so if there is a need to refactor do it.”
Bottom line, I believe that software quality is a reflection of the developer. I think a TDD set is reasonable a way I can be confident in telling others the product is ready to be called a non-beta release.