Mutation analysis can provide valuable insights into both System Under Test (SUT) and its test suite. However, it is not scalable due to the cost of building and testing a large number of mutants. Predictive Mutation Testing (PMT) has been proposed to reduce the cost of mutation testing, but it can only provide statistical inference about whether a mutant will be killed or not by the entire test suite. We propose Seshat, a Predictive Mutation Analysis (PMA) technique that can accurately predict the entire kill matrix, not just the mutation score of the given test suite. Seshat exploits the natural language channel in code, and learns the relationship between the syntactic and semantic concepts of each test case and the mutants it can kill, from a given kill matrix. The learnt model can later be used to predict the kill matrices for subsequent versions of the program, even after both the source and test code have changed significantly. Empirical evaluation using the programs in the Defects4J shows that Seshat can predict kill matrices with the average F-score of 0.83 for versions that are up to years apart. This is an improvement of F-score by 0.14 and 0.45 point over the state-of-the-art predictive mutation testing technique, and a simple coverage based heuristic, respectively. Seshat also performs as well as PMT for the prediction of mutation scores only. Once Seshat trains its model using a concrete mutation analysis, the subsequent predictions made by Seshat are on average 39 times faster than actual test-based analysis.
翻译:突变分析( PMT) 旨在降低突变测试的成本, 但它只能提供变异者是否会被整个测试套件杀死的统计推论。 我们提议Seshat, 一种预测性突变分析( PMA) 技术, 可以准确预测整个杀人矩阵, 而不仅仅是给定测试套件的突变得分。 Seshat 开发自然语言频道的代码, 并学习每个测试案例的合成和语义概念之间的关系, 以及它能够杀死的变异者之间的关系, 由给定的杀死矩阵来降低突变测试的成本, 但只能提供统计推论, 即使是在源代码和测试代码都发生重大变化之后。 使用基于 Defects4J 程序的预测模型评估显示, Seshat 可以用平均 F- 0. 8 和 语系语言频道进行死亡矩阵预测, 而Se- hat 则用Se- 3 和 Seurhat 的预测结果分别用Se- mioal 时间进行Se- mort 和 Se- more 时间的Servial 分析。