| Literature DB >> 35259087 |
Boas C L van der Putten1,2, C I Mendes3, Brooke M Talbot4, Jolinda de Korne-Elenbaas1,5, Rafael Mamede3, Pedro Vila-Cerqueira3, Luis Pedro Coelho6,7, Christopher A Gulvik8, Lee S Katz9,10.
Abstract
Computational algorithms have become an essential component of research, with great efforts by the scientific community to raise standards on development and distribution of code. Despite these efforts, sustainability and reproducibility are major issues since continued validation through software testing is still not a widely adopted practice. Here, we report seven recommendations that help researchers implement software testing in microbial bioinformatics. We have developed these recommendations based on our experience from a collaborative hackathon organised prior to the American Society for Microbiology Next Generation Sequencing (ASM NGS) 2020 conference. We also present a repository hosting examples and guidelines for testing, available from https://github.com/microbinfie-hackathon2020/CSIS.Entities:
Keywords: computational biology; continuous integration; software testing
Mesh:
Year: 2022 PMID: 35259087 PMCID: PMC9176277 DOI: 10.1099/mgen.0.000790
Source DB: PubMed Journal: Microb Genom ISSN: 2057-5858
Fig. 1.Testing strategies. (a) White-box vs. black-box testing. In white-box testing, the tester knows the underlying code and structure of the software, where the tester does not know this in black-box testing. Note that this distinction is not strictly dichotomous and is considered less useful nowadays (b) Unit vs. integration vs. system testing. When software comprises several modules, it is possible to test each single module (unit testing), groups of related modules (integration testing) or all modules (system testing). Note that the terms white-box testing and unit testing are sometimes used interchangeably but relate to different concepts.
Overview of testing approaches. Software testing can be separated into three types: installation, functionality and destructive. Each component is described, followed by an example on a real-life application on Software X, a hypothetical nucleotide sequence annotation tool
|
Name |
Description |
Example |
|---|---|---|
|
| ||
|
|
Can the software be installed on different platforms? |
|
|
|
With which dependencies can the software be used? |
|
|
|
Do different implementations work similarly enough? |
|
|
|
Are newer versions compatible with previous input/output? |
|
|
|
Is the source code syntactically correct? |
|
|
| ||
|
|
Can the software do what it is supposed to do regularly? |
|
|
|
Can the software successfully traverse each path in the analysis? |
|
|
|
Can the software be invoked without errors? |
|
|
| ||
|
|
How do the current tests handle harmful alterations to the software? |
|
|
|
At what input size does the software fail? |
|
|
|
Does the software fail if faults are introduced and how is this handled? |
|
Gbp, Giga-base-pair; kbp, kilo-base-pair; Mbp, Mega-base-pair.