论文部分内容阅读
软件的系统规模和复杂性都随着软件技术的不断发展而增加,这也导致了软件中错误或缺陷的增多。软件测试作为软件质量保证的关键部分,在软件开发中占据着重要的地位。回归测试是一种重要的软件测试方法,用以确保软件的修改不会影响已经存在的功能和行为。回归测试通常要求重新执行全部的测试用例,代价十分昂贵。因此,降低回归测试的开销,提高回归测试的效率是十分必要和有意义的。由此,测试用例优先级技术被提出,用以优化回归测试。测试用例优先级技术将根据一些准则重新排列测试用例被执行的顺序,优先级高的测试用例将被优先执行,以满足某些目标,如提高测试用例集的错误检测速率。基于相似性的测试用例优先级技术是目前被广泛研究的一种测试用例优先级技术。其基本思想是,度量测试用例执行剖面的相似性,并据此重新排列测试用例,使得排列过程尽可能最大化测试用例的多样性。这类技术有三个要点:是哪些测试用例的特征将被用来进行评估,二是采用哪种相异性方程进行评估,三是最大化测试用例多样性的策略。之前的研究多选取代码覆盖信息作为测试用例的特征加以度量,忽视了程序元素的相对执行次数对错误检测能力的贡献。本篇论文考虑了这个因素,从三方面对现有的基于相似性的测试用例优先级技术进行了改进,提出了基于程序元素相对执行次数的测试用例优先级技术。新技术根据执行剖面中程序元素的执行次数,将元素排序,排序后的元素作为测试用例的特征加以度量。为体现有序性,采用编辑距离作为相异性方程。同时,新技术使用最远距离优先算法作为最大化测试用例多样性的策略。本文共进行了三组实验研究,用来比较新技术与其它基于相似性的测试用例优先级技术以及传统的基于覆盖的测试用例优先级技术的优劣。通过实验分析,可以得出如下结论:基于程序元素相对执行次数的测试用例优先级技术与其它基于相似性的测试用例优先级技术相比,可以更显著地提高测试用例集的错误检测速率,并且更快地检测出循环中的错误。同时,新技术与传统的基于覆盖的测试用例优先级技术互为补充,是一种很有效的测试用例优先级技术。最后,本文实现了支持测试用例优先级技术的eclipse插件—TCP插件。TCP插件在前人实现的基础上,结合了本文提出的新技术,并且能够针对业界大规模程序及测试用例集工作,用来支持测试人员优化回归测试的过程。