论文部分内容阅读
软件调试过程中如何高效、精确地定位程序中的错误代码是软件开发人员普遍关注的一个问题。基于变异分析的错误定位(Mutation-Based Fault Localization,MBFL)应运而生,它利用人工植入故障与实际程序错误的相似性,分析程序中代码语句可能出错的概率,并以此来帮助开发及测试人员定位出错语句在程序中的具体位置。MBFL通过生成大量的变异体以获取较好的错误定位精度,在变异体上执行大量测试用例集,其执行成本较高,导致MBFL技术在实际软件错误定位中捉襟见肘。为减少基于变异分析的错误定位方法在实际错误定位过程中的执行代价,使MBFL能够在实际软件错误定位中得以广泛运用,本文提出一种面向语句的变异体约减策略(Statement-Oriented Mutant rEduction strategy,SOME)。分析测试用例的执行信息,对被失败测试用例覆盖的语句实施全集变异算子,可使生成变异体种类完备,在此基础之上对生成的各类变异体按比例进行变异体抽样,以保证每条被变异语句上变异体种类的完备性,同时对各类变异体数目进行约减,使得提出的面向语句的变异体约减策略能够在错误定位精确度保持一致的前提下,减少变异执行开销。此外本文还给出了一种应用SOME的MBFL基本框架。动态变异执行策略DMES是一种有效的变异约减策略,DMES通过动态调整变异体和测试用例的执行顺序,来减少变异体执行过程中的开销,为进一步减少MBFL错误定位整体过程的变异执行开销,结合面向语句的变异体生成和选择优化过程,从语句级别的变异体生成、选择和动态变异执行出发,配合测试利用执行预优化方法,本文给出了 DMES与SOME相结合的MBFL方法基本框架。为评估面向语句的变异体约减策略在错误定位过程中的有效性,本文选取了 8个程序包的140个错误版本,分析传统MBFL、应用变异体抽样策略以及应用SOME的MBFL,在不同错误定位公式下的变异执行开销情况,实验结果表明应用SOME的MBFL与原始的MBFL在不同的怀疑度公式下,错误定位精确度一致,且执行开销的减少效果比传统变异体抽样方法更加明显,且应用SOME的MBFL相较于应用变异体抽样方法的MBFL,在保持较高错误定位精度的同时,能够减少74.13%~80.24%的变异执行开销,提高了错误定位效率。同时,实验进一步分析说明了 DMES与SOME相结合的MBFL方法,在保持错误定位精确度的同时,能够有效减少78.80%~87.41%的变异执行开销,且与应用SOME的MBFL在错误定位精准度上效果相同,确实提升了错误定位过程中的变异执行开销约减效果,为MBFL技术在实际应用过程中提供了相应保障。