Mr David Benn1
1CSIRO, Adelaide, Australia
Despite its importance, it is not always obvious to a Research Software Engineer (RSE) what kinds of testing make sense for particular types of applications in a research context. Both verification (building it correctly) and validation (building the right thing) must be addressed.
With a focus on verification, its scope includes system, integration and unit testing, methods such as test driven development (TDD), code coverage, static analysis, semi-formal methods, code review, language features, libraries and tools.
Concerns peculiar to scientific computing such as numerical tolerance, reproducibility, and the equivalence of a parallelised and serial codebase are also key.
Recommending best practices in terms of patterns, libraries, tools and case studies for commonly used scientific programming languages and application types are informed by practice and research.
Resources for programming languages (e.g. C++, Python, R) have been collected. Experience-based case studies are being documented for development activities such as porting, parallelising, and the creation of scientific web applications in conjunction with particular methods such as reference testing, TDD, and property-based testing.
A one day Python testing workshop was developed and delivered for the Ag & Food data school and subsequently a software carpentry style Python testing episode.
All software requires verification and validation of some kind. Determining the appropriate approach to verification is crucial to the fitness, reliability and ongoing maintenance of scientific software. Organising a set of resources, training materials, and shared experience can only be of benefit to a community of software development practitioners and their beneficiaries.
David is a member of CSIRO IM&T’s Scientific Computing Research Software Engineering team, working with scientists to enhance and accelerate research through software development and high performance computing.
He is interested in the intersection of Science and software development, the publication of research data and software, approaches to verification, reproducibility, and programming paradigms.
In his spare time, David is an amateur astronomer with an interest in variable star observing.