Using Code Mutation to Study Code Faults in Scientific Software

Code faults can seriously degrade scientific software accuracy. Therefore, it is imperative that scientific software developers scrutinize their codes in an attempt to find these faults. This thesis explores, particularly, the efficacy of code testing as a method of scientific software code fault detection. Software engineers, as experts in code quality, have developed many code testing techniques, but many of these techniques cannot readily be applied to scientific codes for at least two reasons. First, scientific software testers do not usually have access to an ideal oracle. Second, scientific software outputs, by nature, can only be judged for accuracy and not correctness. Testing techniques developed under the assumption that these two problems can be ignored—as most have been—are of questionable value to computational scientists. To demonstrate the reality of these problems and to provide an example of how software engineers and scientists can begin to address them, this thesis discusses the development and application of a novel technique: Mutation Sensitivity Testing (MST). MST is based on traditional mutation testing, but—in place of a focus on mutant “killing”—MST focuses on assessing the mutation sensitivity of a test set. In this thesis, MST experiments are conducted using eight small numerical routines, four classes of mutation operators, and 1155 tests. The results are discussed i and some conclusions are drawn. Two observations are of particular interest to computational scientists. First, it is found that oracles that exhibit uncertainties greater than (approximately) 80% of the expected output are of questionable value when they are used in the testing of scientific software. Second, it is found that a small number of carefully selected tests may be sufficient to falsify a code.

[1]  D. E. Stevenson A critical look at quality in large-scale simulations , 1999, Comput. Sci. Eng..

[2]  Michael Zingale,et al.  Validating astrophysical simulation codes , 2004, Comput. Sci. Eng..

[3]  A. Jefferson Offutt,et al.  Automatically detecting equivalent mutants and infeasible paths , 1997 .

[4]  Les Hatton The Chimera of Software Quality , 2007, Computer.

[5]  Elaine J. Weyuker,et al.  On Testing Non-Testable Programs , 1982, Comput. J..

[6]  W. W. Royce,et al.  Managing the development of large software systems: concepts and techniques , 1987, ICSE '87.

[7]  T. Trucano,et al.  Verification, Validation, and Predictive Capability in Computational Engineering and Physics , 2004 .

[8]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[9]  J.H. Andrews,et al.  Is mutation an appropriate tool for testing experiments? [software testing] , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[10]  Arian Maleki,et al.  Reproducible Research in Computational Harmonic Analysis , 2009, Computing in Science & Engineering.

[11]  Paul Jorgensen,et al.  Software Testing: A Craftman's Approach , 2001 .

[12]  Jack Dongarra,et al.  Computational Science: Ensuring America's Competitiveness , 2005 .

[13]  Thomas Gilb,et al.  Software Inspection , 1994 .

[14]  Gerald Recktenwald,et al.  Numerical Methods with MATLAB : Implementations and Applications , 2000 .

[15]  D. Post,et al.  Computational Science Demands a New Paradigm , 2005 .

[16]  A. Jefferson Offutt,et al.  Investigations of the software testing coupling effect , 1992, TSEM.

[17]  Diane Kelly,et al.  Task-directed software inspection , 2004, J. Syst. Softw..

[18]  Patrick J. Roache,et al.  Verification and Validation in Computational Science and Engineering , 1998 .