Using State Infection Conditions to Detect Equivalent Mutants and Speed up Mutation Analysis
This work addresses practical barriers to adopting mutation analysis in software testing, offering incremental optimizations for researchers and practitioners.
The paper tackles the scalability and effectiveness issues of mutation analysis in software testing by introducing state infection conditions to avoid redundant test executions and identify equivalent mutants, resulting in performance improvements and more efficient test suite enhancement.
Mutation analysis evaluates test suites and testing techniques by measuring how well they detect seeded defects (mutants). Even though well established in research, mutation analysis is rarely used in practice due to scalability problems --- there are multiple mutations per code statement leading to a large number of mutants, and hence executions of the test suite. In addition, the use of mutation to improve test suites is futile for mutants that are equivalent, which means that there exists no test case that distinguishes them from the original program. This paper introduces two optimizations based on state infection conditions, i.e., conditions that determine for a test execution whether the same execution on a mutant would lead to a different state. First, redundant test execution can be avoided by monitoring state infection conditions, leading to an overall performance improvement. Second, state infection conditions can aid in identifying equivalent mutants, thus guiding efforts to improve test suites.