当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于部分多重覆盖的回归测试用例筛选方法技术

技术编号:4008747 阅读:404 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于部分多重覆盖的回归测试用例筛选方法,首先根据软件系统特征和测试用例库的历史数据,构建测试需求覆盖矩阵;再针对修改组件,将测试需求集划分为关注集和无关集;采用HATS算法选择回归测试集;对于测试用例库的维护,采用基于风险或操作剖面定义测试需求的多重覆盖策略;根据给定的多重覆盖策略,采用MHATS算法筛选测试用例集。本发明专利技术通过多重覆盖策略来保留冗余的测试用例,从而在精简测试用例库时维持测试用例库的缺陷检测能力;另外在选择回归测试集时面向部分覆盖,同时避免覆盖不相干的测试需求,在进一步减少测试用例数量的同时,降低测试执行和分析的成本。

【技术实现步骤摘要】

本专利技术涉及回归测试下软件系统的测试用例筛选方法,特别涉及软件系统开发和 升级中存在大量测试用例的情况下,针对需要回归测试的系统组件,通过达到充分有效的 测试需求覆盖来筛选测试用例,降低回归测试成本。
技术介绍
软件系统不管是在开发过程中还是在发布以后,总是面临不断的修正和升级。在 每一次修改后,为确保软件系统未变更的功能和组件没有受到当前修改的负面影响,需要 对软件系统进行充分的回归测试。由于复用的软件组件没有得到充分的回归测试,曾导致 阿里亚娜5型火箭发射失败,造成巨大的损失。这说明回归测试的必要性。在当前流行的 增量式开发和快速迭代式开发中,新版本的连续发布需要频繁的回归测试;在敏捷(极限) 编程环境下,更要求软件系统每天都通过若干次回归测试。这使得回归测试成本在软件开 发成本中占据很大比重。如何有效选择回归测试策略从而能够以低成本高质量完成软件系 统的回归测试是本专利技术需要考虑的问题。直接决定回归测试成本的测试策略是测试用例库的维护和回归测试集的选择操 作。在软件系统的开发和升级过程中,不同的开发团队和人员不断增添新的测试用例到测 试用例库,这使得库中存在大量冗余的测试用例。如何有效删除冗余的测试用例,并根据软 件系统当前的变更选择合适的回归测试集是降低回归测试成本并保证回归测试质量的关 键所在。一个测试用例是否冗余决定于它覆盖的测试需求。一个被测软件可以视为测试需 求的集合。测试需求定义为被测软件的测试覆盖单元,例如从结构角度,测试需求可以定义 为语句块、程序分支、或者变量的定义-引用对;从功能角度,测试需求可以定义为输入的 等价类划分、输出的等价类划分、或者功能项等。当前较多的考虑是从结构角度定义测试需 求,例如语句块或程序分支。测试用例约简技术被用于删除冗余的测试用例和选择合适的回归测试集。其原理 是每个测试用例都覆盖一个测试需求集合,可以选择最少数量的测试用例集,只要它们覆 盖的测试需求集合的并集等于被测软件,那么这个选定集合就可以用于组成回归测试集或 者构成精简后的测试用例库。传统约简技术的问题是如果用于删除测试用例库中冗余的 测试用例,则因为保留的测试用例数量太少,回归测试的缺陷检测能力不能得到保证;如果 用于回归测试集选择,则因为约简后的测试用例集覆盖了所有的测试需求,而当前回归测 试往往仅需关注被修改的组件,于是又选择了过多的测试用例,增加了回归测试成本。当前软件系统的修改非常频繁,需要采用面向部分覆盖的回归测试;即只针对修 改的软件组件选择回归测试集并达到对相关测试需求的充分覆盖,而避开其他不相干的测 试需求。这种处理有以下优点其一缺陷修复向来不是一次性完成,避开未修复的缺陷组件 可以减少“预防性”代码并规避未修复缺陷的干扰;其二软件系统总是包含复用和购买的组 件,这些组件的代码或者不可见,或者其修改不可控,绕开这些组件可以完成更有效的回归 测试;其三有一些组件可能尚在开发或修改中,能够避开这些未完成组件可以实施更早的回归测试。
技术实现思路
本专利技术的主要目的是针对软件系统回归测试时的测试用例库维护问题和回归测 试集选择问题,提出,一方面降低测试用 例库的冗余度同时保证用例库的缺陷检测能力;另一方面针对修改组件选择回归测试用 例,减少回归测试集的规模,在保证回归测试质量前提下降低回归测试成本。为实现本专利技术所述目的,本专利技术采用如下的步骤1)首先根据软件系统特征和测试用例库的历史数据,构建测试需求覆盖矩阵;具 体过程为将被测软件系统视为测试需求集合R,测试用例库视为测试用例集合T,根据测 试用例库中测试用例的历史执行数据,构筑测试覆盖矩阵△ (R,T);根据△ (R,T),给定测 试用例、,可了解该测试用例的覆盖需求集& ;给定测试需求可了解该测试需求的执行 用例集凡。2)针对修改组件,将测试需求集R划分为关注集CR和无关集R-CR,其中关注集CR 是与当前软件修改相关的测试需求集合,包含本次回归测试必须充分覆盖的测试需求;而 无关集R-CR是与当前修改无关的测试需求集合;关注集需要被充分测试,以保证回归测试 的质量;而无关集可以尽量避开,以降低回归测试的成本。3)采用HATS算法选择回归测试集,针对关注集CR,选择最少数量的测试用例充分 覆盖关注集中的所有测试需求;针对无关集R-CR,选择对无关集中测试需求覆盖少的测试 用例;通常一个较大(复杂)的测试用例会同时覆盖较多的关注需求和无关需求,HATS算 法设定一个权值,平衡考虑对关注需求的覆盖和对无关需求的避免。4)对于测试用例库的维护,采用基于风险或操作剖面定义的测试需求多重覆盖策 略;按照操作剖面,不同的测试需求对使用者的重要程度或使用频率互不相同。对较重要的 和使用频率较高的测试需求,需要更多的覆盖次数。另外不同测试需求所代表的风险-即 可疑程度或关键程度等也各不相同,其中需求关键程度可采用卡诺(Kano)模型描述。风险 较大的测试需求也需要更多的覆盖次数。5)根据给定的多重覆盖策略,采用MHATS算法筛选测试用例集,MHATS算法重复调 用HATS算法,直到所有测试需求被覆盖指定次数。实例验证表明基于多重覆盖策略维护测 试用例库,既可以减少用例库的冗余度,又可以有效保证用例库的缺陷检测能力。上述步骤2)中集合操作“_”的含义定义如下Α-Β = {Χ\Χ&Α/^Χ^Β} (Α 和 B 是两个集合)。上述步骤3)的HATS算法遵循启发式贪婪搜索模式,采用不断迭代的方法,一次选 择一个或多个局部最优(如覆盖最多数量关注需求或者覆盖最少数量无关需求)的测试用 例,直到关注集CR中所有测试需求都被覆盖;HATS算法包括三个测试用例筛选策略策略1.必选策略,如果当前关注集cur_CR中存在测试需求1>1^仅被当前用例集 cur_T中唯一的一个测试用例、覆盖,则用例、必然被选入当前选择集cur_Select ;策略2.替代策略,如果当前用例集cur_T中存在两个测试用例、和tk,tj覆盖的 当前关注集cur_CR中需求子集包含tk覆盖的cur_CR中需求子集,且、覆盖的无关需求子 集被tk覆盖的无关需求子集包含,则用例tk可以从集合cur_T中删除;策略3.优选策略,选择当前用例集cur_T中最合适的测试用例、,tj覆盖“尽可 能多”的当前关注集cur_CR中测试需求,同时覆盖“尽可能少”的无关集中测试需求。策略3所述的优选策略定义两个指标贡献指标和损益指标;测试用例^的贡献 指标ζ j的定义公式为IRi^cur CRl[=M-J \cur_CR\表示、覆盖的关注需求占集合cur_CR的比例;用例、的损益指标υ j的定义公 式为Ii , η -Ci )U. =1-L^7-——3|i -Ci |表示、未覆盖的无关需求占无关需求集的比例;为综合考虑用例、对关注集的覆 盖和对无关集的避免,引入权重因子α (0彡α彡1),定义、的效用指标ω」为其贡献指 标和损益指标的加权和,公式如下Coj = α · ζ j+(l-a ) · υ JO因子α越大,表示越关注贡献指标,即对关注需求的覆盖越重视;α越小,表示越 关注损益指标,即对无关需求的避免越重视。优选策略选择集合cur_T中具有最大效用指 标值的测试用例。实例本文档来自技高网
...

【技术保护点】
一种基于部分多重覆盖的回归测试用例筛选方法,其特征在于包括以下步骤:1)首先根据软件系统特征和测试用例库的历史数据,构建测试需求覆盖矩阵;具体过程为:将被测软件系统视为测试需求集合R,测试用例库视为测试用例集合T,根据测试用例库中测试用例的历史执行数据,构筑测试覆盖矩阵Δ(R,T);2)针对修改组件,将测试需求集R划分为关注集CR和无关集R-CR,其中关注集CR是与当前软件修改相关的测试需求集合,包含本次回归测试必须充分覆盖的测试需求;而无关集R-CR是与当前修改无关的测试需求集合;3)采用HATS算法选择回归测试集,针对关注集CR,选择最少数量的测试用例充分覆盖关注集中的所有测试需求;针对无关集R-CR,选择对无关集中测试需求覆盖少的测试用例;4)对于测试用例库的维护,采用基于风险或操作剖面定义测试需求的多重覆盖策略;5)根据给定的多重覆盖策略,采用MHATS算法筛选测试用例集,MHATS算法重复调用HATS算法,直到所有测试需求被覆盖指定次数。

【技术特征摘要】

【专利技术属性】
技术研发人员:顾庆唐宝陈道蓄
申请(专利权)人:南京大学
类型:发明
国别省市:84[中国|南京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1