Table of Contents
Fetching ...

Mutation Analysis with Execution Taints

Rahul Gopinath, Philipp Goerz

TL;DR

This paper proposes execution taints--A novel technique that repurposes dynamic data-flow taints for mutation analysis and is the only technique that can remove the redundancy in post-mutation phase, achieving better efficiency in mutation analysis.

Abstract

Mutation analysis is one of the most effective, but costly means of assessing the ability of software test suites to prevent bugs. Traditional mutation analysis involves producing and evaluating syntactic variants of the original to check whether the test suite under evaluation is capable of distinguishing between the variant and the original in terms of behavior. Evaluating each mutant separately means a large amount of redundant computation, both between the original program and mutants, and also between different mutants. Previous work explored numerous means of removing redundancy. However, some amount of redundancy has remained especially in the post-mutation phase. In this paper, we propose execution taints--A novel technique that repurposes dynamic data-flow taints for mutation analysis. Our technique is the only technique that can remove the redundancy in post-mutation phase, achieving better efficiency in mutation analysis. We further leverage memoization to eliminate redundant execution between program variants.

Mutation Analysis with Execution Taints

TL;DR

This paper proposes execution taints--A novel technique that repurposes dynamic data-flow taints for mutation analysis and is the only technique that can remove the redundancy in post-mutation phase, achieving better efficiency in mutation analysis.

Abstract

Mutation analysis is one of the most effective, but costly means of assessing the ability of software test suites to prevent bugs. Traditional mutation analysis involves producing and evaluating syntactic variants of the original to check whether the test suite under evaluation is capable of distinguishing between the variant and the original in terms of behavior. Evaluating each mutant separately means a large amount of redundant computation, both between the original program and mutants, and also between different mutants. Previous work explored numerous means of removing redundancy. However, some amount of redundancy has remained especially in the post-mutation phase. In this paper, we propose execution taints--A novel technique that repurposes dynamic data-flow taints for mutation analysis. Our technique is the only technique that can remove the redundancy in post-mutation phase, achieving better efficiency in mutation analysis. We further leverage memoization to eliminate redundant execution between program variants.
Paper Structure (26 sections, 2 equations, 4 figures, 4 tables)

This paper contains 26 sections, 2 equations, 4 figures, 4 tables.

Figures (4)

  • Figure 1: The partitioned_process() program
  • Figure 2: The execution flows in the considered mutation analysis algorithms. The numbers correspond to line numbers in \ref{['lst:program']}. Horizontal lines represent split execution, and the loops represent operations within execution taints. $M_{0}$ is the original execution.
  • Figure 3: Memoization Example
  • Figure 4: The meta-mutant of the partitioned_process() program