| Literature DB >> 27635225 |
Gopal P Sarma1,2, Travis W Jacobs3,2, Mark D Watts4,2, S Vahid Ghayoomie5,2, Stephen D Larson2, Richard C Gerkin6,2.
Abstract
The growth of the software industry has gone hand in hand with the development of tools and cultural practices for ensuring the reliability of complex pieces of software. These tools and practices are now acknowledged to be essential to the management of modern software. As computational models and methods have become increasingly common in the biological sciences, it is important to examine how these practices can accelerate biological software development and improve research quality. In this article, we give a focused case study of our experience with the practices of unit testing and test-driven development in OpenWorm, an open-science project aimed at modeling Caenorhabditis elegans. We identify and discuss the challenges of incorporating test-driven development into a heterogeneous, data-driven project, as well as the role of model validation tests, a category of tests unique to software which expresses scientific models.Entities:
Keywords: C. elegans; biology; model; quality control; software; testing; validation
Year: 2016 PMID: 27635225 PMCID: PMC5007758 DOI: 10.12688/f1000research.9315.1
Source DB: PubMed Journal: F1000Res ISSN: 2046-1402
Figure 1. Diagram of some of the key OpenWorm modules and their corresponding testing frameworks.
Figure 2. Graphical output from Listing 6, showing a failed test which alerts developers to an inconsistency between model and data.
Figure 3. Sample output from the OpenWorm continuous integration dashboard.
Each row corresponds to a single set of contributions, known as a commit, submitted by a given developer. A commit is assigned a build number, which is given in the second column, and the result of the build process is indicated by the color of the corresponding row. If any of the unit tests fail, the build will be marked as failed (errored, in red), and the code contributions will be rejected. The developer is then responsible for identifying and fixing the corresponding bugs, and resubmitting their contributions to the code repository.