论文部分内容阅读
软件测试作为保证软件质量和可靠性的一种重要技术,在整个软件开发成本中占有重大比例,提高软件测试的效率对于降低软件维护成本具有重要的意义。而在软件测试的过程中,测试数据的生成是比较困难并且代价较高的技术难题之一。如何有效地生成测试数据,以减轻测试人员的繁琐劳动,已经成为软件测试领域面临的一个重要问题。
利用变异测试去提高测试用例的有效性正在引起越来越多研究人员的关注。基于变异测试的测试用例生成技术以变异体杀死率作为测试用例生成的目标。然而传统的基于变异测试的测试用例生成技术很难有效的对实际程序生成测试用例进行变异体的杀死。
本文提出一种利用动态符号执行(Dynamic Symbolic Execution,一种最新的基于代码覆盖的测试用例生成技术)进行变异体杀死的测试用例生成技术-PexMutator。PexMutator首先基于一组转换规则,将被测程序插桩为一个包含所有变异体杀死约束的程序母体。然后,PexMutator基于动态符号执行对程序母体进行测试用例的生成。程序母体中插入的变异体杀死约束会引导动态符号执行技术生成测试用例自动地杀死变异体。
我们已经将PexMutator实现为Pex(微软里得蒙研究院开发的一个基于动态符号执行的测试用例生成引擎)的扩展,现在PexMutator1.1版本已经在我们的项目主页上开源发布。经过在5个.NET平台实验对象上的初步实验验证,PexMutator能自动生成测试用例有效杀死实验对象的80%以上的变异体。并且PexMutator生成的测试用例能比Pex生成的测试用例杀死更多的变异体而同时能达到和Pex生成的测试用例相同的代码覆盖效果。