论文部分内容阅读
随着现代大规模软件版本不断更迭,测试集的规模也变得庞大,软件测试的成本也随之上升。测试集约简技术则被考虑用来解决此类问题,它可以找到原测试集中规模更小的一个子集,且能满足原始的测试需求,如语句覆盖程度,分支覆盖程度等,从而大大降低了软件测试的成本。
然而传统的测试集约简技术考虑的往往是单一的测试需求,所以当大部分测试用例被约简掉后,附带的有用的测试信息就丢失了。缺陷定位技术就是一个基于统计的使用所有测试用例的测试信息(包括测试用例通过与否和测试用例的执行轨迹)帮助程序员定位缺陷所在位置的新兴技术。因此,缺陷定位技术会受测试集约简的影响而变得不准确。尤其是对软件可信性的要求越来越高,需要及时移除软件中的缺陷,并能够实现一定程度的自动化。因此,如何有效的约简测试集规模并同时提高或至少保持缺陷定位效果成为软件调试领域的一个热点问题。
本文提出了一个新方法用来解决这种问题,即有选择性的将少量的冗余测试用例返回到约简后得到的代表集中,改变程序代码块之间的覆盖程度,使得与原测试集相比能够提高或保持缺陷定位效果。本文的主要工作如下:
1、综述了测试集约简技术。首先介绍了测试集约简问题的相关概念,然后总结了在该领域一些著名的算法:HGS算法,Heuristic GE算法和Heuristic GRE算法,模拟退火算法,遗传算法和线性规划方法,最后讨论了算法之间的比较。
2、综合分析了测试集约简和缺陷定位之间的关系。从3个已有工作出发,分别讨论了冗余测试集、动态基本块和基于语句的约简对缺陷定位的影响,然后分别分析和评价了各个解决方案,提出了新的想法。
3、在测试集约简中第一次基于缺陷定位技术提出了相对冗余的概念。提出了相对冗余技术在测试集约简中的通用框架,分为四个阶段:测试信息的准备,测试集约简,冗余测试用例的选择,怀疑率的计算和定位报告的评价;提出了一个在冗余测试集中选择测试用例的方法,该方法使得得到的相对冗余集对于保持或提高缺陷定位效果会有帮助。
4、通过-个开源软件作为实验对象,评价了该方法的效果。使用开源的XML解析软件NanoXML作为实验对象,使用HGS算法进行测试集约简,然后按照上述方法添加冗余测试用例到代表集中得到相对冗余集后,分别对原始测试集、代表集和相对冗余集使用Tarantula方法进行缺陷定位。实验结果表明相对冗余技术在此实验对象下基本能够保持或提高缺陷定位效果。