论文部分内容阅读
调试是软件开发中比较复杂和困难的任务。基于频谱的缺陷定位方法通过插桩程序获得覆盖信息来推荐语句检查集,能帮助程序员更快地在规模庞大的软件中找出错误语句,从而降低了程序调试的开销。近年来,学者对该方法展开广泛和深入的研究,虽然取得很多成果,但是还面临着一些需要解决的问题。首先,基于频谱的缺陷定位需要设计大量的测试用例以收集充足的覆盖信息,但在软件实际开发中很难满足;其次,对语句可疑度度量的准确与否直接决定了程序员使用基于频谱的缺陷定位方法时最终的排错效率,然而目前的度量方法还存在一些不足。 本文对基于频谱的缺陷定位进行了深入调研与分析,按实施流程将其分为插桩、测试用例选择和可疑度度量三个方面,并对每个方面展开研究。主要的研究工作包括:提出了一种选取少量测试用例的技术,论证了更高效的可疑度度量方法,以及插桩工具的设计与实现。具体成果包括: (1)本文对现有的基于不可区分块的测试用例选择技术进行扩展,提出基于同可疑度块的测试用例选择技术。该技术能从大量的原始测试用例集中选出少量的测试用例来作为收集覆盖信息的输入,在很大程度上减轻程序员判断测试用例执行结果负担,同时保持了良好的错误定位效果。 (2)本文对已有的可疑度度量方法进行分析,发现其使用覆盖信息不充分的不足,并分析了语句执行补集对缺陷定位的积极影响,在此基础上提出了结合语句执行补集的可疑度度量方法。实验结果表明,和已有方法相比,新方法减少了程序员找到错误时需要检查的语句数目,提高了错误定位效率。 (3)本文通过对SUIF编译框架的深入研究,开发出程序自动插桩工具,实现了语句级别插桩功能,并将覆盖信息有组织地存储在数据库中以方便程序员读取。