ABSTRACT

The focus of software for computational science and engineering (CSE) is often on the immediate need for new scientific results, which may be in the form of new algorithms, improved implementations, or domain-science knowledge and understanding. A common tendency is to assume that the code will have a short life-cycle. In reality, even software in a research environment often has a long life-cycle because successive rounds of users take over the code and build upon existing capabilities. For software that continues to be maintained and extended, it has been shown that the creation and development of strong automated tests, particularly at an early stage, is far superior, i.e., faster and cheaper, than using few or no automated tests, manual testing, reliance on user bug reports, etc [177]. Automated testing leads to overall better quality software. So, in the long term or even shorter term, a project cannot afford to not create and maintain strong automated tests!