Environmental Effects on the Detection of Errors in Software Systems
It is very important for software developers to thoroughly test their software. Since programs are tested in a specific environment, however, some errors are difficult, if not impossible, to detect by traditional testing methods such as path analysis. A program may contain errors that are masked by the environment in which it was developed and tested. One such element in a program’s environment is the value to which memory is initialized. Mistakes in initialization would not appear until the software is ported to an environment in which memory has a different initialization value, when the software would mysteriously stop working correctly.
To prevent “mystery errors” and increase software portability, a programmer should be aware of the types of errors that are undetectable for a particular machine and system. These errors must be looked for specifically, realizing that test data will never expose them. Systems programmers also should be aware of the masking affect of different memory initialization values and use values that hide the fewest types of errors. This paper examines errors that programmers tend to make with FORTRAN to determine what values in memory could mask each. A “best” initialization value is proposed for FORTRAN, and findings are extrapolated to other programming languages such as Ada.
KeywordsGeorgia Institute Boolean Variable Wrong Variable Logical Variable Intended Variable
Unable to display preview. Download preview PDF.
- Appelbe, W. F., DeMillo, R. A., Guindi, D. S., King, K. N., and McCracken, W. M., 1988, Using Mutation Analysis for Testing Ada Programs, Proceedings of Ada-Europe ‘88, Munich, W. Germany, June 1988.Google Scholar
- Bowser, John H., 1988, Reference Manual for Ada Mutant Operators, GIT-SERC-88/02, Georgia Institute of Technology, Atlanta, GA.Google Scholar
- Bullard, Catherine L., and Spafford, Eugene H., 1987, Testing Experience with Mottera, GIT-SERC-87/04, Georgia Institute of Technology, Atlanta, GA.Google Scholar
- Bullard, Catherine L., Guindi, D., Ligon, W., McCracken, W. M., and Rugaber, S., 1988, Verification and Validation of Reusable Ada Components, Proceedings of the EFISS, Plenum Press, New York, NY.Google Scholar
- DeMillo, R. A., Lipton, R. J., and Sayward, F. G., 1978, Hints on Test Data Selection: Help for the Practicing Programmer, Computer, Vol. 11, pp. 34–41, 4 April 1978.Google Scholar
- DeMillo, R. A., Lipton, R. J., and Sayward, F. G., 1979, Program Mutation: A New Approach to Program Testing, Software Testing, Volume 2: Invited Papers, Infotech International, pp. 107–126.Google Scholar
- DeMillo, R. A., Martin, R. J., McCracken, W. M., and Passifume, J. F., 1987, Software Test and Evaluation, Benjamin/Cummings, Menlo Park, CA.Google Scholar
- DeMillo, R. A., Guindi, D. S., McCracken, W. M., Offutt, A. J., and King, K. N., 1988, An Extended Overview of the Mothra Software Testing Environment, Proceedings of the Second Workshop on Software Testing Verification, and Analysis, Computer Society Press, Banff, Canada, 19–21 July 1988.Google Scholar
- Fischer, Charles N., and LeBlanc, Richard J., Jr., 1988, Crafting a Compiler, Benjamin/Cummings, Menlo Park, CA, pp. 651–669.Google Scholar
- Spafford, Eugene H., 1987, Initializing Uninitialized Memory, GIT-SERC-87/02, Georgia Institute of Technology, Atlanta, Georgia.Google Scholar
- Wallis, Peter J., 1982, Portable Programming, John Wiley and Sons, New York, NY.Google Scholar
- Youngs, E. A., 1971, Error Proneness in Programming, PhD Thesis, University of North Carolina.Google Scholar