论文部分内容阅读
质量是软件产品成功的关键因素,有效的软件质量保证技术可以减少软件错误、降低软件开发成本、缩短软件开发周期,具有很重要的现实意义。
在所有软件质量保证技术中,软件测试和程序执行监测是不可或缺的两方面:软件测试发生在软件对外发布前,其目的在于尽可能多地在软件开发团队内部解决所有潜在软件错误;程序执行监测发生在软件对外发布后,其目的在于尽可能快地修复软件实际使用过程报告的错误。二者互相协助,缺一不可。近年来,研究人员在软件测试和程序执行监测上取得了不少重要成果。然而,现有的基于程序不变量的软件测试方法存在“反复提取相同程序不变量而造成时间开销过大”的问题,程序执行监测方法也存在“非崩溃错误难以被发现”的问题。针对这两个问题,本文提出了程序动态似然断言技术,并将其应用于软件测试和程序执行监测领域,具体工作如下:
(1)断言的自动转换及断言插装程序的构造。提出一种基于正则表达式的方法,将Daikon工具提取的程序动态似然不变量自动转换为对应的程序动态似然断言,并将其插装到程序源码中。为了方便表述,本文将“程序动态似然不变量”简称为“程序不变量”或“不变量”,将“程序动态似然断言”简称为“程序断言”或“断言”。与程序不变量相比,断言可以直接应用于程序中判断测试用例是否有效,无需重新运行整个测试用例集合,避免相同不变量的重复提取,减少时间开销,从而提高测试效率。实验结果表明,这种基于正则表达式的转换方法可以有效且快速地将程序不变量转换为对应断言。
(2)断言技术在软件测试中的应用。将程序断言技术应用于回归测试中,实现程序改动所影响元素的自动识别与回归测试用例集合的约简,从而降低回归测试的成本。实验结果表明,这种基于断言技术的方法可以有效地找到程序改动所影响的元素,并以比较直观的方式展现给程序员;与其他回归测试用例集合约简方法相比,本文提出的RTS和ARTS算法可以在较短时间内实现较大的测试用例约简率。
(3)断言技术在程序执行监测中的应用。设计一个完整的基于断言技术的程序执行监测框架,根据程序执行过程中断言是否被违反来检测程序异常,并根据断言违反信息对反馈的程序异常进行自动分类;在程序切片技术的帮助下,对分类后的程序异常进行分析,判断程序是否真的出错并找到程序错误来源。实验结果表明,基于断言的方法可以有效检测程序执行过程中的非崩溃错误,在具有较低错误误报率的同时,达到错误漏报率为零;该方法还可以对程序异常进行合理的分类,从而减轻程序异常分析的工作量;本文提出的程序异常静态分析方法可以实现较高的代码和不变量约简率,程序异常动态分析方法可以将程序错误来源定位到具体的汇编指令,从而可以方便快速地找到错误来源。