论文部分内容阅读
随着互联网蓬勃的发展,我们日常生活都已经离不开网络,各式各样的软件为我们的生活提供着便利。伴随着软件市场中同类型软件的增多,提高用户粘度变得非常重要。当市场上同时出现功能相近的软件产品时,软件的每个细节都可能成为用户增长的关键,比如运行流畅性、兼容性等。因此,为了提高软件的市场竞争力,软件的质量成为非常重要的一环。软件测试作为保障软件质量的重要手段之一,在每个软件中都是必不可少的一个环节。随着软件规模的扩大,版本迭代次数增加,回归测试成为实际软件测试中最重要的一部分,而且经过研究发现回归测试在软件开发测试周期中占据很大一部分比例,所以近年来软件测试的一个重要研究方向就是降低回归测试成本。目前主流的回归测试研究方向就是对测试用例进行优先级排序,使排序后的测试用例能够更早检测出软件缺陷。本文的主要研究方向也是测试用例优先级排序,主要通过学习基于源代码的测试用例优先级排序基础算法、组合赋权法计算权重的过程,提出了一种新的基于源代码的测试用例优先级排序算法,并将算法在实际工程中进行应用和验证。新的排序策略主要包含计算组合权重和测试用例排序两个部分。基于对上述提出技术的深入研究,本文主要做了以下几部分工作:(1)基于组合赋权法的权重计算经过研究Total、Additional和2-Optimal三种基于源代码的测试用例优先级排序基础算法,发现基础算法存在着稳定性较差等问题,所以提出了将基础算法融合的思路。该策略的影响因素分为两层:一级影响因素是每个基础算法的检测缺陷能力值APFD和排序需要的时间,二级影响因素是根据测试用例的类型,分为检测到缺陷的测试用例、代码变动的测试用例和一般的测试用例三种。其中计算一级权重需要首先主观构造各个因素和各个算法之间的比较矩阵,计算主观权重,接着通过多次运行基础算法,客观构造比较矩阵,进行数据标准化处理,计算客观权重,最后通过主客观权重融合,得到最终的数据权重。二级权重通过构造主观比较矩阵计算权重。(2)测试用例优先级排序一级权重对应的是每个基础算法的权重,二级权重是不同类型测试用例之间的权重。将前面计算出的二级权重,乘以经过基础算法排序后的测试用例的位置,每个测试用例可以得到三个不同的排序位置权重,再使用一级权重乘以位置权重,可以得到每个测试用例在每个算法相应比例下的三个位置权重,将三个位置权重相加,再进行升序排列,从而得到最终的组合赋权法测试用例优先级排序。(3)实验验证为了验证本文提出的测试用例排序算法的有效性,本文选取SIR数据集进行对比实验,验证得出本文提出的算法和基础算法相比,本文提出的算法随机性低于基础算法,检测缺陷的能力高于随机算法。(4)工程应用实例将本文提出的测试用例排序算法应用在实际工程中,选取实际开发过程中的两个工程,根据需求收集测试所需数据,利用本文提出的测试用例排序策略进行排序。按顺序执行测试用例,分析应用结果,证明基于组合赋权法的测试用例优先级排序策略具有实用价值。