基于权重和组合覆盖的回归测试方法研究
作者单位:江苏大学
学位级别:硕士
导师姓名:黄如兵
授予年度:2020年
学科分类:08[工学] 0835[工学-软件工程] 081202[工学-计算机软件与理论] 0812[工学-计算机科学与技术(可授工学、理学学位)]
主 题:软件测试 回归测试 测试用例优先级排序 代码覆盖 组合覆盖
摘 要:随着软件行业的快速发展,软件系统的规模和复杂性不断增长,同时版本迭代速率也随着敏捷开发的流行而越来越快,如何确保了版本更替时更改的代码不会引入新的错误,吸引了越来越多研究人员的目光。回归测试作为一种有效的测试手段,通过重新执行回归测试用例集,可以有效验证已有功能的正确性,但是迭代的用例集规模给测试成本带来了极大的挑战。重新优化测试用例集的执行序列,提高错误检测速率,使得开发人员能够尽早地进行故障修复,可以有效的减少测试开销。因此提出一种高效且具有实践意义的用例优先排序技术显得迫在眉睫。本文从基于代码覆盖的角度对测试用例优先级排序技术进行了深入的调研和分析,提出了一系列高效利用历史代码覆盖信息来表征测试用例的排序技术,并进行了大量的实证研究,与本领域中使用广泛且高效的排序算法进行了对比分析,同时为了缓解人工介入的隐患,设计并实现了一套自动化的原型测试用例排序系统。论文的主要成果在以下几个方面:1、针对现今使用最为广泛的两种贪心算法排序时,忽视了排序过程中代码单元覆盖次数的变化可能给其错误检测能力带来波动,以及在排序过程中存在对排序信息舍弃的问题,提出一种基于权重的排序算法。其根据每个代码单元被覆盖的次数,计算其可能检测到错误的概率,并以权重的方式,获得待排序用例的加权覆盖值;同时进一步考虑了单个测试用例对代码单元多次覆盖情况,提出了相应的扩展算法。本文提出的基于权重的排序方法,其错误检测率明显高于现有的全局贪心算法和额外贪心算法,同时时间开销与额外贪心算法相似。2、针对现有的基于代码覆盖信息排序算法在排序时,无法高效地利用测试用例覆盖信息中的离散信息,本文将代码覆盖和组合覆盖两个概念结合起来,提出一种新颖且高效的覆盖准则,称之为代码组合覆盖。首先将测试用例的传统代码覆盖转换为代码组合覆盖,然后将其应用到经典的贪心算法中,用于指导排序过程。同时经过大规模的实证研究表明本文提出的算法(1)当组合强度=1时,其错误检测能力明显优于现有的排序算法,包括全局贪心算法、额外贪心算法、自适应随机算法和基于搜索的算法等;(2)当组合强度=1时,其时间开销与额外贪心算法相近,且远远低于自适应随机算法与基于搜索的算法;(3)当组合强度提高时,其有效性也随之进一步增加。3、针对在测试过程中,由于被测程序规模与数量,会产生大量重复劳动和测试数据,容易对人工测试产生错误干扰。因此本文设计并实现了一个基于代码覆盖的测试用例优先级排序原型系统,该原型系统以高度自动化的形式,有效减少测试人员的手动干预,其包含了被测程序的覆盖率收集与分析、变异测试与分析、高度模块化的排序算法设置、数据分析与可视化,同时以插件形式保证其高度的扩展性。并通过实验,验证了该原型系统的可行性与有效性。