Software development practitioners use the term unit to refer to the smallest testable component of a software product and the phrase unit testing to refer to the process of validating that a unit operates as expected. Over the past twenty years, these practitioners have become increasingly interested in automated unit testing and the phrase unit testing framework has come to refer to the mechanism used to facilitate automated unit testing.
Software developers, including JSL developers, have a vested interest in ensuring that the software they develop operates as expected. Apart from this obvious motivation, there are two additional reasons:
1. Software evolution: Software evolves over time. Typically, this is because features are added or changed but sometimes software evolves due to refactoring. A properly maintained suite of unit test cases, routinely used to validate the product, can ensure that the software product retains its expected behavior as it evolves. Units that regress (break or stop working) as the product evolves are quickly identified.
2. Executable documentation: Unit test cases document the expected behavior of software products. One of the benefits of automated unit testing is that the test cases act as executable documentation. As a result, as long as the test cases are routinely used to validate the product as it evolves, these test cases are likely to reflect the correct expected behavior of the software product, unlike static written documentation.
In recent years, the chief advocates of unit testing in general, and automated unit testing in particular, have been the eXtreme Programming (XP) community. Partly due to the enthusiasm of this community, unit testing frameworks are now available for every major programming language.
To learn more about how JMP uses unit testing in its software development, read the full article (PDF).