Functional program testing and analysis
Functional program testing and analysis
Perturbation Techniques for Detecting Domain Errors
IEEE Transactions on Software Engineering
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Perturbation testing for computation errors
ICSE '84 Proceedings of the 7th international conference on Software engineering
Sufficient test sets for path analysis testing strategies
ICSE '81 Proceedings of the 5th international conference on Software engineering
IEEE Transactions on Software Engineering
Weak Mutation Testing and Completeness of Test Sets
IEEE Transactions on Software Engineering
Testing for Perturbations of Program Statements
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
The problem of determining whether two programs compute the same function is undecidable. We restrict the class of functions that a program can compute to be a finite dimensional vector space, enabling the problem to become tractable. We prove a theorem showing that the number of test points needed to distinguish any such programs is equal to the dimension of the vector space of functions which they compute, thus generalizing previous results of Howden. Our result unifies certain, existing software testing theory and explains the successes and failures of one existing method for selecting test data called "perturbation testing." We apply the theorem to obtain three results on the number of test points required to test in vector spaces of Boolean functions and polynomials. First, the Vandermonde matrix used together with our theorem yields the classical result that a polynomial of degree at most n is determined by n + 1 points. Second, in vector spaces of Boolean functions we obtain useful results when the degree of the Boolean function is less than the number of inputs to the function. Third, we apply our theorem to describe a technique for testing non-polynomial, real-valued functions.