• 快捷搜索
  • 全站搜索

面向回归测试的测试用例集优化技术研究

2016-09-29 15:37:56作者:中国农业银行数据中心 李政 刘荆涛 王冲编辑:金融咨询网
为提供强有力的机制来统一地管理与维护回归测试用例集,从而控制回归测试的成本,农业银行提出了一种新的面向回归测试的测试用例集优化方案,该方案能够在满足测试需求的前提下合理剔除原始回归测试用例集中的冗余测试用例,进而降低待测软件系统的回归测试用例集的规模与回归测试成本。

按照农业银行的实际项目测试经验,软件系统在软件开发流程的后期具有快速迭代的性质,软件版本发布的周期越来越短,进而导致回归测试的频率也越来越高,回归测试也成为了软件演化过程中频繁进行且成本开销巨大的一项工作。在软件频繁变更的时候,如何能够提供强有力的机制来统一地管理与维护回归测试用例集,从而实现回归测试用例范围的合理选择并有效降低回归测试的成本,是整个软件回归测试过程中的重点和难点。
  
  针对以上情况,农业银行提出了一种新的面向回归测试的测试用例集优化方案,该方案能够在满足测试需求的前提下合理剔除原始回归测试用例集中的冗余测试用例,进而降低待测软件系统的回归测试用例集的规模与回归测试成本。另外,本方案也给出了回归测试用例排序的客观标准,提高了缺陷揭示的效率。
  
一、传统的回归测试策略概述

  进行回归测试的时候,采用合适的回归测试策略可以显著地降低回归测试过程的盲目性,提高回归测试的效率。按照测试范围划分,业界常用的回归测试策略可分为零回归测试、完全回归测试和部分回归测试三种。

  1. 零回归测试

  零回归测试是指在回归测试阶段,对于新的待测功能,仅运行为此新待测功能增加的新测试用例,从而验证新增的功能在此回归测试版本上是否得到了正确的实现;对于在上一个版本提出的缺陷,则仅运行这些缺陷对应的测试用例,从而验证这些缺陷在此回归测试版本上是否已经得到了正确的修复。

  2. 完全回归测试

  完全回归测试策略不对原始回归测试用例集进行任何筛选,而是重新运行所有有效的历史测试用例与新增测试用例,因此,从理论上来讲,完全回归测试遗漏缺陷的可能性最小,安全系数最高,但也需要付出最高的时间成本与人力成本。

  3. 部分回归测试

  这种方法需要拥有一定的经验和采用一定的标准来进行回归测试用例的选择,排除冗余测试用例。一般来讲,按照测试用例选择方法的不同,部分回归测试又细分为基于操作剖面、基于风险和基于代码相依性三种回归测试方法。

  (1)基于操作剖面的回归测试

  如果测试人员是从软件操作剖面的角度来开展测试用例设计的,那么所设计的测试用例的分布状况就可以真实体现出被测系统的使用状况。因此,在进行回归测试用例的选择时,基于操作剖面的回归测试方法会首先选择那些最频繁使用的功能对应的测试用例。

  (2)基于风险的回归测试

  基于风险的回归测试方法采用特定的风险标准来进行回归测试用例的选择,一般来讲,它倾向于优先选择历史缺陷较多的模块对应的测试用例来进行测试,而将那些功能相对稳定的模块对应的测试用例放在最后执行,因为运行这些测试用例发现缺陷的概率较低。

  (3)基于代码相依性的匦归溅试

  一般来讲,回归缺陷一定会关联一段删除的、修改的或者新增的代码。因此,如果测试人员能够确认回归测试版本的代码变更范围,就可以通过对被测系统的代码相依性分析,从回归测试用例集中筛选出受代码变更影响的测试用例来进行回归测试,从而缩减待测回归测试用例集的规模。

  相比较而言,零回归测试测试效率高,但无法验证软件变更是否引入了新的缺陷。完全回归测试能够揭示尽可能多的缺陷,但在回归测试集规模较大的情况下,测试时间长、测试成本高。基于风险和基于操作剖面的部分回归测试平衡了测试质量和测试效率两个方面,但在软件系统规模和回归测试用例库比较大的时候,单个人很难凭经验来判别某个测试用例是否需要进行回归测试,对测试人员专业水平要求高,且缺乏定量的客观标准。基于代码相依性的部分回归测试需要维护测试用例库与代码之间的关系表,在农业银行目前的实际工作情况下还很难实现。
  
二、面向回归测试的测试用例集优化技术

  为了解决回归测试过程成本开销大且用例执行顺序缺乏客观标准的难题,农业银行提出了一个新的面向回归测试的测试用例集优化策略(总体框架如图1所示)。在此框架中,测试人员首先根据回归测试阶段变更后的软件规格说明书对原始回归测试用例集进行初步维护,得到基准测试用例集;然后采用回归测试用例约减技术,依据测试需求与测试用例的关联信息与测试执行情况信息,寻找能满足测试覆盖率的最小回归测试用例子集;最后利用回归测试用例排序技术,结合测试用例所在模块以及历史执行、需求、缺陷等属性信息及其各属性的权重,得出最小回归测试用例子集中测试用例的执行优先级。

图片2.jpg

  1、回归测试用例集维护

  (1)删除过时的测试用例:由于在回归测试阶段测试需求的删减和大幅变动等原因,某些原始测试用例在被测系统的回归测试版本中将不再适用,应该将这些过时的测试用例从原始回归测试用例集中进行删除。

  (2)更改测试用例:在回归测试阶段,某些测试需求有可能会发生细微变化,例如,测试需求中某个变量的取值界限发生了改变,那么其对应的测试用例也应该做相应更改;另外,原始测试用例集中一些测试用例由于设计质量不高、用例执行步骤或者预期运行结果表达不明确,可能会影响后续测试执行的效率,需要对其进行进一步的修改,使测试用例可控可执行。

  (3)增添新的测试用例:根据回归测试阶段新的测试规格说明增加测试需求与测试用例,另外,如果某个旧的测试需求在旧的测试用例集中不被覆盖,也应该增加新测试用例进行需求覆盖,并将新开发的测试用例合并到基准测试用例集中。

  (4) 联结测试用例与测试需求:检查新加和变动的测试用例与测试需求的对应关系,如果测试用例t能够覆盖测试需求r,则将此测试用例和测试需求进行联结。

  2. 回归测试用例集约减

  银行测试部门面临的一个很急迫的问题是,选择基准测试用例集中的哪些用例进行回归测试。回归测试用例约减给出的理想选择是:所选择的测试用例集能够在完全覆盖测试需求的前提下尽可能地减小测试代价。

  设S=S(T,R)为一个n×m的矩阵,表示测试用例集T与测试需求集R的二元覆盖关系,其中S(i,j)=0代表测试用例图片3.jpg不能覆盖测试需求图片4.jpg,S(i,j)=1代表代表测试用例图片3.jpg能够覆盖测试需求图片4.jpg。设X为一个n维列向量,其中第j个元素图片5.jpg代表第i个测试用例图片3.jpg被选入回归测试用例集中,图片6.jpg代表第i个测试用例图片3.jpg不被选入回归测试用例集中。设C为一个n维行向量,其中第i个元素图片7.jpg的数值图片3.jpg代表第i个测试用例的执行代价,这里用测试用例的执行时间来代表测试用例集的总执行代价Z。因此测试用例约减问题可以表达为如下0-1整数规划形式:

图片8.jpg

  其中I是一个单位向量。0-1整数规划问题本质上是一个NP难问题,传统的优化算法很难对其进行求解,将测试用例约减问题中的“最优回归测试用例集”看作遗传算法中的最优个体,把遗传算法中最优个体搜索的方法直接应用到回归测试用例约减过程中,从而采用智能遗传算法实现最优回归测试用例约减集的获取。

  基于遗传算法的回归测试用例约减步骤如下(流程如图2所示):

图片9.jpg

  (1)提取回归测试用例基准集的用例执行时间信息、测试需求信息、用例需求覆盖关系信息。

  (2)删除1-1冗余测试用例,降低测试用例约减问题的求解规模,从而降低遗传算法的搜索空间,提升搜索效率。

  (3)按测试用例是否执行对约减方案进行0-l基因编码,并通过将个体的基因全部置为l,产生初始化的个体与种群。

  (4)应用轮盘赌策略选择算子产生中间代,对中间代种群应用交叉算子,以后作为变异概率应用变异算子,产生新一代种群。

  (5)对当前种群中的每个个体计算其以时间代价为目标的适应度。

  (6)如果新一代种群满足终止条件,选择种群中适应度数值最高的个体作为约减的最终方案,产生最优的回归测试用例约减集合。否则,继续执行步骤(4)。

  3. 回归测试用例排序过程

  结合实际测试工作,农业银行综合考虑回归测试用例对应的需求优先级、缺陷严重程度、缺陷个数、缺陷状态、用例执行状态、所在模块的缺陷严重程度、是否新增或者修改等7个因素对用例执行顺序的影响,提出了一种新的回归测试用例分组排序技术,即首先将测试用例按执行优先级递减的顺序分为首选组、优先组、一般组、待测组四组,然后在每组中按不同的影响因素对测试用例的执行顺序的影响给出评分排序。首选组、优先组、一般组、待测组的分类规则如表1所示。

图片10.jpg

三、面向回归测试的测试用例集优化技术应用实践

  本回归测试用例集优化方法在农业银行报表资源视窗项目回归测试过程的试用中,取得了如下效果:一是能有效地降低项目的回归测试工作量,经过测试用例集约减,回归测试用例约减率为15%;二是保障了测试缺陷的有效揭示,同执行原始回归测试用例集相比,执行约减后的回归测试用例集发现的缺陷数目并没有减少,即在提高了回归测试效率的前提下,回归测试的质量也得到了强有力的保障;三是通过优化排序过程,提高了回归测试缺陷的揭示速率,排序前50%的测试用例的缺陷揭示率达到了83.7%,明显高于基于经验的回归测试方法。

  针对回归测试高时间与高资金成本开销的实际情况,本研究提出的面向回归测试的测试用例集优化技术,通过将测试用例集约减问题归化为0-l整数归化模型,并利用智能遗传算法进行求解,能够在保障测试需求覆盖率的前提下,有效缩减待测回归测试用例集的规模,提高回归测试工作的效率。另外,面向回归测试的测试用例集优化技术也实现了对回归测试用例执行顺序的优化,有效提升了系统缺陷的暴露速度。
  
(文章来源:《中国金融电脑》杂志)

扫码即可手机
阅读转发此文

本文评论

相关文章