Program testing by specification mutation
Computer Languages
Theory of Fault-Based Predicate Testing for Computer Programs
IEEE Transactions on Software Engineering
Mutation testing for the new century
Mutation testing for the new century
Mutation of model checker specifications for test generation and evaluation
Mutation testing for the new century
Mutation Testing Applied to Estelle Specifications
Software Quality Control
Specification-Based Test Generation for Security-Critical Systems Using Mutations
ICFEM '02 Proceedings of the 4th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering
Automating the Generation and Sequencing of Test Cases from Model-Based Specifications
FME '93 Proceedings of the First International Symposium of Formal Methods Europe on Industrial-Strength Formal Methods
Challenging Formal Specifications by Mutation: a CSP security example
APSEC '03 Proceedings of the Tenth Asia-Pacific Software Engineering Conference Software Engineering Conference
Test Case Generation by OCL Mutation and Constraint Solving
QSIC '05 Proceedings of the Fifth International Conference on Quality Software
Testing Programs with the Aid of a Compiler
IEEE Transactions on Software Engineering
From faults via test purposes to test cases: on the fault-based testing of concurrent systems
FASE'06 Proceedings of the 9th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
This paper presents a theory of testing that integrates into Hoare and He's Unifying Theory of Programming (UTP). We give test cases a denotational semantics by viewing them as specification predicates. This reformulation of test cases allows for relating test cases via refinement to specifications and programs. Having such a refinement order that integrates test cases, we develop a testing theory for fault-based testing. Fault-based testing uses test data designed to demonstrate the absence of a set of pre-specified faults. A well-known fault-based technique is mutation testing. In mutation testing, first, faults are injected into a program by altering (mutating) its source code. Then, test cases that can detect these errors are designed. The assumption is that other faults will be caught, too. In this paper, we apply the mutation technique to both, specifications and programs. Using our theory of testing, two new test case generation laws for detecting injected (anticipated) faults are presented: one is based on the semantic level of design specifications, the other on the algebraic properties of a programming language.