一种测试用例集缩减技术制造技术

技术编号:2912101 阅读:216 留言:0更新日期:2012-04-11 18:40
针对软件回归测试中测试用例集膨胀问题,本发明专利技术公开了一种测试用例集 缩减技术,该技术受启发于粒子群算法,采用0-1编码方式表示测试用例集, 不同粒子代表不同的测试用例集选择方案,每个粒子的适应值采用两个适应值 进行评价,其中一个为测试用例集对测试需求集的覆盖度,另一个是测试用例 集满足测试需求集的冗余度,粒子位置更新利用各个测试用例对测试需求的覆 盖率为概率随机产生下一代个体位置,最后得到覆盖度最大,而冗余度最小的 粒子即为最优的测试用例集缩减方案。与已有的测试用例集缩减技术相比,本 发明专利技术提供一种与初始值无关、操作简单、计算速度快、性能优良的测试用例集 缩减技术。

【技术实现步骤摘要】

本专利技术属于软件测试
,具体涉及到根据测试用例库中测试用例及其测试结果,提供一种测试用例集縮减技术,主要解决在渐进和快速迭代开发模式中,频繁进行回归测试,导致测试用例库迅速扩大,回归测试成本也随之急剧增加,通过测试用例集的缩减,减少测试用例数量,提高回归测试效率,减低测试成本。
技术介绍
软件测试是提高软件质量的重要手段。回归测试作为软件生命周期的一个组成部分,在软件开发的各个阶段都会多次进行。软件产生新版本、软件硬件平台变更或硬件配置改变后,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现,同时还需要补充新的测试用例来测试新的或被修改了的功能。在渐进和快速迭代开发模式中,新版本的连续发布使回归测试进行得更加频繁,导致测试用例库迅速扩大,回归测试成本也随之急剧增加。在测试用例库中,往往存在冗余的测试用例,冗余测试用例的存在降低了回归测试的效率。因此很有必要进行测试用例集缩减,使用尽可能少的测试用例,充分覆盖给定的测试需求目标,提高测试效率。回归测试的上述特点决定了实施回归测试是一项工作量大、烦瑣的工作。因此实现自动化的回归测试可以提高测试效率和保证测试的可靠性。自动化的回归测试首先要对测试用例库进行自动的缩减。传统的测试用例库的縮减是靠测试人员人工来判断的,缩减的效果和测试人员的经验和个人偏好有很大的关系,因此根据测试用例本身对于需求的覆盖情况来自动进行测试用例集的缩减将有助于实现真正的回归测试自动化。M. J. Harrold等人1993年首次提出了测试用例集缩减的概念,随后T. Y. Chen等人又给出了测试用例集缩减问题中一系列术语的定义。测试用例集^^2,…,U与测试需求集"化^2,…,U的二元满足关系i ) = {("r) I (r,O e r x i },即S(r, / )表示测试用例f e r与测试需求s e S的满足关系,建立二元关系矩阵8=(、)_,其中^=1表明测试用例,,覆盖了需求9=0表明测试用例,,没有覆盖需求^,获得各个测试用例t对于测试需求集R的覆盖度cov—冲]=^> ,其中/6{1,2,...,"},即该测试用例满足的需求的数量,测试用例集T';:其中r'={、,、,...,、},该测试用例集含有p个测试用例,满足的总需求为COVTotal = t|>^则此测试用例集f的覆盖度cov为该测试用例Z=l 1集满足的需求数。则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun = covTotal-cov。由上述描述可知,测试用例集縮减问题就是根据测试用例集T与测试需求集R的覆盖情况,求出在覆盖最大测试需求的情况下,找到最小的测试用例集,且其冗余的覆盖较少。对于测试用例集缩减问题,如果能够求出最少的测试用例集,它能实现原有测试用例集测试需求覆盖率,则可以对原测试用例集达到最大的缩减,实现测试用例集的最小化。但是测试用例集的最小化问题是一个NP-C完全问题。一般釆用启发式算法来获得该问题的近似解,达到对测试用例集的有效缩减。现有的启发式算法主要包括贪心算法、HGS算法、GE&GRE算法等。近年来, 一些群体智能优化算法得到了迅速发展。 一些学者用遗传算法解决测试用例集缩减问题进行了研究和探索,但是遗传算法搜索速度比较慢,对初始种群的选择有较大的依赖性,并且该算法是建立在各个测试用例的测试代价的基础之上,对各个用例进行代价的评估将是很费时费力的事情,不利于工程中的实现,同时在用于测试用例集缩减时采用一个的适应值评价方式,不能很客观的评价测试用例集。粒子群算法是其中一个很成功的群体智能算法。粒子群算法(ParticleSwarm Optimization, PS0)是Kennedy博士和Eberhart博士于1995年提出的。其源于对鸟群捕食的行为研究。由于PS0算法实现简单,效果好,目前已在许多工程领域中取得了广泛的应用,很多情况下比遗传算法更有效,近年来受到各界的广泛关注,并提出了很多改进算法。但是将PSO算法应用于测试用例集缩减问题还没有。
技术实现思路
本专利技术的技术解决问题克服现有技术不足,首次将粒子群算法应用于测试用例集縮减问题中,并结合测试用例集缩减问题提供一种操作简单,搜索速度快,不依赖于初值的测试用例集縮减技术。本专利技术的技术解决方案 一种测试用例集缩减技术,其特点在于主要包括以下步骤U)在项目开发中,测试人员在实施测试的过程中会将所使用测试用例及其测试结果保存在测试用例库中,从测试用例库中得到测试用例对测试需求集的覆盖情况,当然这里的测试需求可以是语句覆盖,条件覆盖,判定覆盖等等各种覆盖需求,也可以是功能测试中的各个模块的覆盖等各种需求,进而获得测试用例集7 =仏,G " ■,, ~}与观!]试需求集及={~ , r2,... , rm }的二元满足关系s(r, i ) = o i (r, r) e r x 7 },即s(r,及)表示测试用例? e :r与测试需求^ s的满足关系,建立二元关系矩阵5 = (、)_,其中、"表明测试用例f,覆盖了需求。,、,=0表明测试用例(没有覆盖需求G 。(2) 根据测试用例集T与测试需求集R的二元满足关系矩阵5—、),,获得各个测试用例《对于测试需求集R的覆盖度cov—Wi] = |>w ,其中^{1,2,...,"},即户i该测试用例满足的需求的数量,进一步求得该测试用例对测试需求集的覆盖率cov—她]=cov一冲]/附,其中/ e {1,2,..""}。(3) 对上述测试用例集T与测试需求集R的二元满足关系矩阵s—H^则粒子群中第i粒子A的编码为/ ,=<^,1,/ ,,2,...,;^>,且;^£{0,1}, n为该编码的长度,是要缩减的测试用例集中的测试用例数量,p,、j取l表示第i粒子A代表的测试用例集中包含了第j个测试用例,取O则表明没有包含第j个测试用例,则粒子P,代表的测试用例集。(4) 设定粒子群算法的参数,所述的参数包括粒子群中粒子的数量N,粒子各维位置的取值范围{0,1},粒子第1维的随机取1的概率0^_树,'],设定迭代终止条件迭代次数达到最大迭代次数MAXN,或者当前粒子群的PG5欲的cov达到期望的覆盖度C<9F_£AT且covRedim小于给定的冗余度COF_MZ),随机初始化每个粒子的各维位置,令迭代次数t^,粒子群优化开始。(5) 对每个粒子A,其编码A^/v,/^,...,/^、则其代表的测试用例集为r、r,其中r、化,^,p,2x^…,A"xU,该测试用例集含有测试用例数量为,则该r' …,、J该粒子代表的测试用例集满足的总需求为covTotal = §|>k|,,,粒子p,的覆盖度cov为该测试用例集满足的需求数,则'=i户i '改粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun。计算每个粒子所代表的测试用例集的二维8适应值/( , covRedun]r 。(6)对每个粒子,将当前适应值和该粒子局部最优位置的适应值a^^进行比较;如果粒子当前适应值的覆盖度cov大于等于对应覆盖度cov,并且粒子当前适应值的冗余度小于/7,5^对应冗余度,说明当前的粒子位置较好,则将其作为本文档来自技高网
...

【技术保护点】
一种测试用例集缩减技术,其特征在于主要包括以下步骤: (1)在项目开发中,测试人员在实施测试的过程中会将所使用测试用例及其测试结果保存在测试用例库中,从测试用例库中得到测试用例对测试需求集的覆盖情况,进而获得测试用例集T={t↓[1],t↓[2],…,t↓[n]}与测试需求集R={r↓[1],r↓[2],…,r↓[m]}的二元满足关系S(T,R)={(t,r)|(t,r)∈T×R},即S(T,R)表示测试用例t∈T与测试需求s∈S的满足关系,建立二元关系矩阵B=(b↓[i,j])↓[n×m],其中b↓[i,j]=1表明测试用例t↓[i]覆盖了需求r↓[j],b↓[i,j]=0表明测试用例t↓[i]没有覆盖需求r↓[j]。 (2)根据测试用例集T与测试需求集R的二元满足关系矩阵B=(b↓[i,j])↓[n×m],得到各个测试用例t↓[i]对于测试需求集R的覆盖度cov_tr[i]=*b↓[i,j],其中i∈{1,2,…,n},即该测试用例满足的需求的数量,进一步得到该测试用例对测试需求集的覆盖率cov_tp[i]=cov_tr[i]/m,其中i∈{1,2,…,n}。 (3)对上述测试用例集T与测试需求集R的二元满足关系矩阵B=(b↓[i,j])↓[n×m],则粒子群中第i粒子p↓[i]的编码为:p↓[i]=〈p↓[i,1],p↓[i,2],…,p↓[i,n]〉,且p↓[i,j]∈{0,1},n为该编码的长度,是要缩减的测试用例集中的测试用例数量,p↓[i,j]取1表示第i粒子p↓[i]代表的测试用例集中包含了第j个测试用例,取0则表明没有包含第j个测试用例,则粒子p↓[i]代表的测试用例集。 (4)设定基于粒子群算法的参数,所述的参数包括粒子群中粒子的数量N,粒子各维位置的取值范围{0,1},粒子第i维的随机取1的概率cov_tp[i],随机初始化每个粒子的各维位置,令迭代次数t=1,开始测试用例集缩减。 (5)对每个粒子p↓[i],其编码p↓[i]=〈p↓[i,1],p↓[i,2],…,p↓[i,n]〉,则其代表的测试用例集为T′*T,其中T′={p↓[i,1]×t↓[1],p↓[i,2]×t↓[2],…,p↓[i,n]×t↓[n]},该测试用例集含有测试用例数量为|p↓[i]|=*p↓[i,j],则该T′={t↓[k↓[1]],t↓[k↓[2]],…,t↓[k↓[|p↓[i]|]]}该粒子代表的测试用例集满足的总需求为: covTotal[p↓[i]]=**b↓[k↓[i],j],粒子p↓[i]的覆盖度cov[p↓[i]]为该测试用例集满足的需求数,则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun[p↓[i]]=covTotal[p↓[i]]-cov[p↓[i]]。计算每个粒子所代表的测试用例集的二个适应值f(p↓[i])=[cov[p↓[i]],covRedun[p↓[i]]]↑[T]; (6)对每个粒子,将当前适应值和该粒子局部最优位置的适应值p↓[i]Best进行比较;若较好,则将其作为该粒子当前的局部最优位置,即p↓[i]Best=f(p↓[i])=[cov[p↓[i]],covRedun[p↓[i]]]↑[T]。 (7)对每个粒子,将其局部最优适应值和全局经历过的最优位置的适应值PGBest进行比较,若第i个粒子p↓[i]的局部最优值p↓[i]Best比PGBest好,则将其作为当前的全局最优位置,即PGBest=p↓[i]Best; (8)根据下面的公式更新每个粒子的各维的位置,p↓[i]↑[(t)]=〈p↓[i,1],p↓[i,2],…,p↓[i,n]〉获得新的位置p↓[i,j]↑[(t+1)]=Rand(cov_tp[j]),Rand(cov_tp[j])表示以cov_tp[j]为概率随机取1,以1-cov_tp[j]为概率随机取0,即以第j个测试用例对测试需求的覆盖率cov_tp[j]为概率随机取1,以第j个测试用例对测试需求的遗漏率1-cov_tp[j]为概率随机取0。 (9)如果当前的迭代次数t等于最大迭代次数MAXN,或者当前粒子群的PGBest的cov[p]达到期望的覆盖度COV_EXP且covRedun[p]小于给定的冗余度COV_RED,则全局最优值PGBest所对应的粒子所代表的测试用例集即为测试用例集缩减的最优测试用例集,结束循环;否则,t=t+1,返回第(5)步。...

【技术特征摘要】

【专利技术属性】
技术研发人员:王曙燕孙家泽曹小鹏
申请(专利权)人:西安邮电学院
类型:发明
国别省市:87

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

1