Design and Motivation¶
Why another test harness?¶
We wrote SciATH because we couldn’t find a test harness that did what we wanted. We wanted to replace and generalize an existing simple test suite for pTatin3D , an MPI-based code for regional geodynamic simulation. SciATH is tailored to test scientific applications, which tend to be
- hard to unit test, being monolithic applications controlled by large parameter files and generating large output
- susceptible to numerical “noise”
- parallel, using MPI, OpenMP, OpenCL, CUDA, etc.
- maintained by very few people
- run in combination with setup and/or post-processing scripts, in various languages
Further, we wanted something
- simple and general
- easy to understand and work with
- quick to introduce to an existing scientific application
- non-invasive, not requiring modification of application source or writing of new executables
- language-agnostic
- easily usable on many different systems, including clusters with batch systems
- portable, easy to run on any system without heavy dependencies
- usable with CI
- that “shows you what’s happening”, giving you copy-pasteable commands being run
- that leaves easily-understandable artifacts, to interpret, debug, and re-run test cases independently from SciATH
We found that most existing solutions were optimized for a rather different purpose: unit testing of software libraries, written in a particular language, in serial environments.
Who is SciATH for?¶
SciATH is designed for people like scientists, who
- can quickly learn, if presented with logical explanations and examples;
- prefer simple, understandable, debuggable systems;
- are constantly modifying and extending their code; and
- are often having to move to new computing systems.
Thus, we strive to show what‘s happening, which is fundamentally speeding up how one would test without SciATH.