APP下载

回归测试用例优先级评估模型研究

2019-01-30周海旭

电子技术与软件工程 2019年1期
关键词:总集测试用例用例

文/周海旭

回归测试指的是对软件当前版本中“相对上一个版本未发生变化的特性”进行验证。在软件的版本更迭过程中,回归测试是必不可少的质量保障手段。回归测试用例一般继承自产品用例库。对于实际的软件项目来说,回归测试用例的数量往往很大。由于测试资源的限制,通常不可能执行回归测试用例集中的全部用例,而是要予以适当的取舍。通常的做法是,首先确定每个回归测试用例的优先级,然后再根据可用资源的规模,挑选一部分优先级较高的用例进行回归测试。

针对回归测试用例优先级相关的课题,学术界开展过大量的研究工作:Wong等人[1]提出了根据用例覆盖能力进行优先级排序的方法;Rothermel等人[2-3]从语句和分支覆盖准则出发,提出了用于优先级排序的贪婪算法Total策略和Additional策略;Walcott等人[4]考虑了测试用例的执行时间成本,提出了时间感知的优先级排序技术;J.G.Lee,C G.Chung等人[5]利用整数规划算法求解回归测试用例按优先级约简的问题;Harrold等人[6]引入了用例重要性的概念,提出了一种按优先级约简测试用例的启发式算法。

然而,这些方法大多是从减少需求覆盖冗余的角度进行用例优先级的评估。在实际的软件工程项目中,减少用例冗余一般是在上一个版本的增量用例向用例库进行合并时需要考虑的,是上一个版本测试总结和归档阶段的工作。换言之,当前版本的回归测试用例总集,从一开始就已经是上个版本测试过程中进行过“去冗余”处理的用例集了。当前版本的回归测试设计,则需要在此基础上进一步确定用例优先级。

本文从工程实践出发,分析了回归测试执行覆盖度与用例优先级之间的关系,从一个新的角度建立了回归测试用例优先级的定量评估模型。

1 回归测试执行覆盖度的概念

实际项目中,回归测试的需求覆盖率一般以“计划执行用例数占回归测试用例总数的比例”来评估。这个比例是回归测试的一个重要设计指标,我们称其为回归测试执行覆盖度。

回归测试设计的基础是已有的回归测试用例总集,记为S,其中包含用例总数为N。S由一系列子集构成,记为Si中包含的用例数为Ni。每个用例子集Si对应一个需求特性子集,记为

定义1 Si的回归测试执行覆盖度,指的是从Si中选取的、用于当前版本回归测试的用例数N'i占Si用例总数的比例。用Ci表示Si的执行覆盖度,则:

用C表示回归测试用例总集S的执行覆盖度,则:

2 回归测试执行覆盖度的启发式评估

回归测试的目的是验证当前版本的变更是否会对已有特性产生不良影响。可投入到一次回归测试中的资源是有限的,必须进行合理调配。显然,回归测试执行的用例越多,需要投入的资源也越高。这就需要给每一个Si赋予适当的执行覆盖度,以提高回归测试的效率。产品各项特性的重要程度并不相同,受到当前版本变更影响的可能性也不同。应该优先对更有价值的、与变更关联程度更高的特性进行相对充分的回归测试。另一方面,用例执行成本也是一个必须考虑的因素,应优先对执行成本较低的用例子集进行相对充分的回归测试。

综上,评估一个用例子集Si的执行覆盖度Ci时,可归纳出如下的启发式原则:

(1)Si对应的需求子集Ui越重要,则Ci应该越高;

(2)当前版本的变更与Ui的关联程度越高,则Ci应该越高;

(3)执行Si所需的成本(包含运行用例和维护用例的成本)越高,则Ci应该越低。

用Vi表示Ui的价值水平,即Ui在功能或非功能上的重要程度;用Ai表示待测版本的变更与Ui的关联程度,即变更对Ui的影响程度;用Ei表示运行Si(手工或自动化方式)所需人天;用Mi表示维护Si(维护手工用例或自动化脚本)所需人天。根据上述启发式原则,可以得到回归测试用例子集执行覆盖度与“价值-风险-成本”的关系如下:

其中μ是待定的调节因子,单位为人天。

对于回归测试用例总集,一般用总资源占总成本的比例来预估总的执行覆盖度。用R表示可投入到此次回归测试中的人天资源总数,则回归测试用例总集执行覆盖度与“资源-成本”的关系如下:

结合(2)(3)(4)式可得:

将(5)式带入(3)式可得:

3 回归测试用例优先级的定量评估模型

一个回归测试用例子集的执行覆盖率越高,说明该用例子集的回归测试越充分。因此在资源受限的前提下,如果给一个用例子集设定了相对较高的执行覆盖率,也就意味着对于当前版本回归测试来说,该用例子集的优先程度更高。

回归测试用例子集Si是从回归测试用例总集S分解得到的。不失一般性,可递归进行这一分解,使得:

将(7)式带入(6)式可得:

此时,Si代表回归测试用例总集中的任一用例,Vi代表该用例对应需求特性Ui的价值水平,Ai代表Ui受版本变更影响的程度,Ei代表运行该用例的成本,Mi代表维护该用例的成本。Ci则代表该用例在回归测试中的优先程度。(8)式即回归测试用例优先级的定量评估模型。

可以看到,该模型表达了可用资源、特性价值水平、运行成本、维护成本、变更关联风险对回归测试的影响。在项目中具体应用时,只需要在用例管理系统中为每一个回归测试用例增加价值水平Vi、变更关联程度Ai、运行成本Ei、维护成本Mi的定义,为回归测试用例总集增加可投入资源总数R的定义,即可依据此模型计算出每一个回归测试用例的优先级评估值。

4 结束语

本文提出的模型初步揭示了回归测试用例优先级与资源、价值、风险、成本的关系。而对价值和风险这两项影响因素的定量评估,实际项目里还大多依靠工程师的主观经验。后续工作中,将考虑对价值因素和风险因素建立度量模型,进一步简化用例优先级的评估。

参考文献

[1]Wong W,Horgan J,London S,Agrawal H.A study of effective regression testing in practice[C]// The Eighth International Symposiumon Software Reliability Engineering,1997:264-274.

[2]Rothermel G,Untch R H,Chu C Y,et al.Prioritizing test cases for regression testing[J].IEEE Transantions on Software Engineering,2001,27(10):929-948.

[3]Rothermel G,Untch R H,Chu C,et al.Test case prioritization:An empirical study[C].IEEE International Conference on Software Maintenance,1999:179-188.

[4]Walcott K R,Soffa M L,Kapfhammer G M,et al.Time-Aware test suite prioritization[C].Proceedings of the 2006 International Symposium on Software Testing and Analysis.ACM Press,2006.1-12.

[5]Lee J G,Chung C G.An optimal representative set selection method:Information and Software Technology,2000,42(1):17-25.

[6]Harrold M J,Gupta R,Soffa M L.A methodology for controllingthe size of a test suite,ACM Transactions on Software Engineeringand Methodology,1993,2(3):270-285.

[7]陈翔,陈继红,鞠小林,顾庆.回归测试中的测试用例优先排序技术述评[J].软件学报,计算机学报,2013,24(08):1695-1712.

猜你喜欢

总集测试用例用例
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
基于SmartUnit的安全通信系统单元测试用例自动生成
联锁软件详细设计的测试需求分析和用例编写
一部清诗研究的力作*——评夏勇《清诗总集通论》
目录学视域下的地域总集范畴辨析
從出土文獻用例看王氏父子校讀古書的得失
基于混合遗传算法的回归测试用例集最小化研究
基于依赖结构的测试用例优先级技术
《四库全书总目》著录唐宋元人总集考辨