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.
翻译:变异分析是评估测试套件缺陷检测能力最有效但代价最高的方法之一。传统变异分析需要生成并评估原始程序的语法变体,以检验目标测试套件能否区分变体与原始程序在行为上的差异。单独评估每个变异体会导致大量冗余计算,既存在于原始程序与变异体之间,也存在于不同变异体之间。已有研究探索了多种消除冗余的方法,但在变异后阶段仍存在部分冗余。本文提出执行染色技术——一种将动态数据流染色技术重新应用于变异分析的新型方法。该技术是唯一能够消除变异后阶段冗余的方法,可显著提升变异分析效率。我们进一步利用记忆化技术消除程序变体间的冗余执行。