Introduction to testing
Writing automated tests is a fundamental technology/methodology when developing software. It will help you write quality software where most aspects (possibly all aspects) are somehow verified in an automatic and continuous way. Although successful tests do not guarantee that the software is bug free, automated tests are a necessary condition for professional programming (see the books Beck 2002, Martin 2002, 2008, 2011 for some insightful reading about this subject).
Tests are a form of documentation that does not risk getting stale with respect to the implementation itself. Javadoc comments will likely not be kept in synchronization with the code they document; manuals will tend to become obsolete if not updated consistently, while tests will fail if they are not up to date.
The Test Driven Development (TDD) methodology fosters the writing of tests even before writing production code. When developing a DSL, one can relax this methodology by not necessarily writing...