In the case of Notes I put all the functions/objects/methods in a library. Then I write an agent that uses every function/object/method in the library using parameters that test the boundary conditions of each method.
The returned values are tested for correctness. If side effects such as creating or changing a document, I write the code to check the correctness of these also.
One school of development writes the unit tests first, then writes the actual code.
Every time I change the library I run the unit test to see if it still works. If I add new methods then I add new unit tests.
In production if (when) a bug shows up that I trace back to the library and the bug isn't found by the unit test, I modify the unit test to reveal the bug. Next I fix the library and rerun the unit test to make sure the bug is fixed.
Writing the main code is a lot easier when you have well tested libraries to call.
In the case of Notes I put all the functions/objects/methods in a library. Then I write an agent that uses every function/object/method in the library using parameters that test the boundary conditions of each method.
The returned values are tested for correctness. If side effects such as creating or changing a document, I write the code to check the correctness of these also.
One school of development writes the unit tests first, then writes the actual code.
Every time I change the library I run the unit test to see if it still works. If I add new methods then I add new unit tests.
In production if (when) a bug shows up that I trace back to the library and the bug isn't found by the unit test, I modify the unit test to reveal the bug. Next I fix the library and rerun the unit test to make sure the bug is fixed.
Writing the main code is a lot easier when you have well tested libraries to call.