Using model checking to generate tests from specifications
Top Cited Papers
- 27 November 2002
- proceedings article
- Published by Institute of Electrical and Electronics Engineers (IEEE)
Abstract
We apply a model checker to the problem of test generation using a new application of mutation analysis. We define syntactic operators, each of which produces a slight variation on a given model. The operators define a form of mutation analysis at the level of the model checker specification. A model checker generates counterexamples which distinguish the variations from the original specification. The counterexamples can easily be turned into complete test cases, that is, with inputs and expected results. We define two classes of operators: those that produce test cases from which a correct implementation must differ, and those that produce test cases with which it must agree.There are substantial advantages to combining a model checker with mutation analysis. First, test case generation is automatic; each counterexample is a complete test case. Second, in sharp contrast to program-based mutation analysis, equivalent mutant identification is also automatic. We apply our method to an example specification and evaluate the resulting test sets with coverage metrics on a Java implementation.Keywords
This publication has 15 references indexed in Scilit:
- Experience applying the CoRE method to the Lockheed C-130J software requirementsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Model checking large software specificationsIEEE Transactions on Software Engineering, 1998
- The model checker SPINIEEE Transactions on Software Engineering, 1997
- Automated consistency checking of requirements specificationsACM Transactions on Software Engineering and Methodology, 1996
- State-based model checking of event-driven system requirementsIEEE Transactions on Software Engineering, 1993
- Constraint-based automatic test data generationIEEE Transactions on Software Engineering, 1991
- Abstract requirements specification: A new approach and its applicationIEEE Transactions on Software Engineering, 1983
- Data Abstraction, Implementation, Specification, and TestingACM Transactions on Programming Languages and Systems, 1981
- Specifying Software Requirements for Complex Systems: New Techniques and Their ApplicationIEEE Transactions on Software Engineering, 1980
- Hints on Test Data Selection: Help for the Practicing ProgrammerComputer, 1978