CN101464831B - 一种测试用例集缩减方法 - Google Patents

一种测试用例集缩减方法 Download PDF

Info

Publication number
CN101464831B
CN101464831B CN2009100208456A CN200910020845A CN101464831B CN 101464831 B CN101464831 B CN 101464831B CN 2009100208456 A CN2009100208456 A CN 2009100208456A CN 200910020845 A CN200910020845 A CN 200910020845A CN 101464831 B CN101464831 B CN 101464831B
Authority
CN
China
Prior art keywords
test
particle
test case
use cases
cov
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009100208456A
Other languages
English (en)
Other versions
CN101464831A (zh
Inventor
王曙燕
孙家泽
曹小鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Post & Telecommunication College
Original Assignee
Xi'an Post & Telecommunication College
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xi'an Post & Telecommunication College filed Critical Xi'an Post & Telecommunication College
Priority to CN2009100208456A priority Critical patent/CN101464831B/zh
Publication of CN101464831A publication Critical patent/CN101464831A/zh
Application granted granted Critical
Publication of CN101464831B publication Critical patent/CN101464831B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

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

Description

一种测试用例集缩减方法
技术领域
本发明属于软件测试技术领域,具体涉及到根据测试用例库中测试用例及其测试结果,提供一种测试用例集缩减方法,主要解决在渐进和快速迭代开发模式中,频繁进行回归测试,导致测试用例库迅速扩大,回归测试成本也随之急剧增加,通过测试用例集的缩减,减少测试用例数量,提高回归测试效率,减低测试成本。
背景技术
软件测试是提高软件质量的重要手段。回归测试作为软件生命周期的一个组成部分,在软件开发的各个阶段都会多次进行。软件产生新版本、软件硬件平台变更或硬件配置改变后,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现,同时还需要补充新的测试用例来测试新的或被修改了的功能。在渐进和快速迭代开发模式中,新版本的连续发布使回归测试进行得更加频繁,导致测试用例库迅速扩大,回归测试成本也随之急剧增加。在测试用例库中,往往存在冗余的测试用例,冗余测试用例的存在降低了回归测试的效率。因此很有必要进行测试用例集缩减,使用尽可能少的测试用例,充分覆盖给定的测试需求目标,提高测试效率。
回归测试的上述特点决定了实施回归测试是一项工作量大、烦琐的工作。因此实现自动化的回归测试可以提高测试效率和保证测试的可靠性。自动化的回归测试首先要对测试用例库进行自动的缩减。
传统的测试用例库的缩减是靠测试人员人工来判断的,缩减的效果和测试人员的经验和个人偏好有很大的关系,因此根据测试用例本身对于需求的覆盖情况来自动进行测试用例集的缩减将有助于实现真正的回归测试自动化。
M.J.Harrold等人1993年首次提出了测试用例集缩减的概念,随后T.Y.Chen等人又给出了测试用例集缩减问题中一系列术语的定义。测试用例集T={t1,t2,...,tn}与测试需求集R={r1,r2,...,rm}的二元满足关系S(T,R)={(t,r)|(t,r)∈T×R},即S(T,R)表示测试用例t∈T与测试需求s∈S的满足关系,建立二元关系矩阵B=(bi,j)n×m,其中bi,j=1表明测试用例ti覆盖了需求rj,bi,j=0表明测试用例ti没有覆盖需求rj,获得各个测试用例ti对于测试需求集R的覆盖度
Figure GSB00000167645400021
其中i∈{1,2,...,n},即该测试用例满足的需求的数量,测试用例集
Figure GSB00000167645400022
其中
Figure GSB00000167645400023
该测试用例集含有p个测试用例,满足的总需求为:
Figure GSB00000167645400024
则此测试用例集T′的覆盖度cov[T′]为该测试用例集满足的需求数。则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun[T′]=covTotal[T′]-cov[T′]。
由上述描述可知,测试用例集缩减问题就是根据测试用例集T与测试需求集R的覆盖情况,求出在覆盖最大测试需求的情况下,找到最小的测试用例集,且其冗余的覆盖较少。
对于测试用例集缩减问题,如果能够求出最少的测试用例集,它能实现原有测试用例集测试需求覆盖率,则可以对原测试用例集达到最大的缩减,实现测试用例集的最小化。但是测试用例集的最小化问题是一个NP-C完全问题。一般采用启发式算法来获得该问题的近似解,达到对测试用例集的有效缩减。现有的启发式算法主要包括:贪心算法、HGS算法、GE&GRE算法等。
近年来,一些群体智能优化算法得到了迅速发展。一些学者用遗传算法解决测试用例集缩减问题进行了研究和探索,但是遗传算法搜索速度比较慢,对初始种群的选择有较大的依赖性,并且该算法是建立在各个测试用例的测试代价的基础之上,对各个用例进行代价的评估将是很费时费力的事情,不利于工程中的实现,同时在用于测试用例集缩减时采用一个的适应值评价方式,不能很客观的评价测试用例集。
粒子群算法是其中一个很成功的群体智能算法。粒子群算法(ParticleSwarm Optimization,PSO)是Kennedy博士和Eberhart博士于1995年提出的。其源于对鸟群捕食的行为研究。由于PSO算法实现简单,效果好,目前已在许多工程领域中取得了广泛的应用,很多情况下比遗传算法更有效,近年来受到各界的广泛关注,并提出了很多改进算法。但是将PSO算法应用于测试用例集缩减问题还没有。
发明内容
本发明的方法解决问题:克服现有方法不足,首次将粒子群算法应用于测试用例集缩减问题中,并结合测试用例集缩减问题提供一种操作简单,搜索速度快,不依赖于初值的测试用例集缩减方法。
本发明的方法解决方案:一种测试用例集缩减方法,其特点在于主要包括以下步骤:
(1)在项目开发中,测试人员在实施测试的过程中会将所使用测试用例及其测试结果保存在测试用例库中,从测试用例库中得到测试用例对测试需求集的覆盖情况,当然这里的测试需求可以是语句覆盖,条件覆盖,判定覆盖,也可以是功能测试中的各个模块的覆盖,进而获得测试用例集T={t1,t2,...,tn}与测试需求集R={r1,r2,...,rm}的二元满足关系S(T,R)={(t,r)|(t,r)∈T×R},n表示测试用例集中包含的测试用例数量,m表示被测系统测试需求的数量,S(T,R)表示测试用例t∈T与测试需求s∈S的满足关系,建立二元关系矩阵B=(bi,j)n×m,,i表示测试用例集中的第i个测试用例ti的编号,j表示被测系统的第j个测试需求rj的编号bi,j=1表明测试用例ti覆盖了需求rj,bi,j=0表明测试用例ti没有覆盖需求rj
(2)根据测试用例集T与测试需求集R的二元满足关系矩阵B=(bi,j)n×m,获得各个测试用例ti对于测试需求集R的覆盖度
Figure GSB00000167645400041
其中i∈{1,2,...,n},即该测试用例满足的需求的数量,进一步求得该测试用例对测试需求集的覆盖率cov_tp[i]=cov_tr[i]/m,其中i∈{1,2,...,n};
(3)对上述测试用例集T与测试需求集R的二元满足关系矩阵B=(bi,j)n×m,则粒子群中第i粒子pi的编码为:pi=<pi,1,pi,2,...,pi,n>,且pi,j∈{0,1},n为该编码的长度,是要缩减的测试用例集中的测试用例数量,pi,j取1表示第i粒子pi代表的测试用例集中包含了第j个测试用例,取0则表明没有包含第j个测试用例,则粒子pi代表的测试用例集;
(4)设定粒子群算法的参数,所述的参数包括粒子群中粒子的数量N,粒子各维位置的取值范围{0,1},粒子第i维的随机取1的概率cov_tp[i],设定迭代终止条件:迭代次数达到最大迭代次数MAXN,或者当前粒子群的PGBest的cov[p]达到期望的覆盖度COV_EXP且covRedun[p]小于给定的冗余度COV_RED,随机初始化每个粒子的各维位置,令迭代次数t=1,粒子群优化开始;
(5)对每个粒子pi,其编码pi=<pi,1,pi,2,...,pi,n>,则其代表的测试用例集为
Figure GSB00000167645400042
其中T′={pi,1×t1,pi,2×t2,...,pi,n×tn},该测试用例集含有测试用例数量为
Figure GSB00000167645400043
Figure GSB00000167645400044
ki表示粒子pi所代表的测试用例集中包含的测试用例的编号,T′中总共有|pi|个测试用例,该粒子代表的测试用例集满足的总需求为:
Figure GSB00000167645400045
粒子pi的覆盖度cov[pi]为该测试用例集满足的需求数,则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun[pi]=covTotal[pi]-cov[pi],计算每个粒子所代表的测试用例集的二维适应值f(pi)=[cov[pi],covRedun[pi]]T
(6)对每个粒子,将当前适应值和该粒子局部最优位置的适应值piBest进行比较;如果粒子当前适应值的覆盖度cov[pi]大于等于piBest对应覆盖度cov[pi],并且粒子当前适应值的冗余度小于piBest对应冗余度,说明当前的粒子位置较好,则将其作为该粒子局部最优位置,即piBest=f(pi)=[cov[pi],covRedun[pi]]T,否则不需要更新该粒子的局部最优位置;
(7)对每个粒子,将其局部最优位置适应值和全局最优位置的适应值PGBest进行比较,如果局部最优位置piBest的适应值的覆盖度大于等于PGBest对应覆盖度,并且粒子局部最优位置适应值piBest的冗余度小于PGBest对应冗余度,说明piBest对应粒子位置较好,则将其作为粒子群的全局最优位置,即PGBest=piBest;
(8)根据下面的公式更新每个粒子的各维的位置,pi (t)=<pi,1,pi,2,...,pi,n>获得新的位置pi,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)步;
本发明的原理:
粒子群算法(PSO)是美国社会心理学家Kennndy和电气工程师Eberhart于1995年共同提出一种进化计算方法,源于对鸟群捕食的行为研究。其基本思想是受他们早期对鸟类群体行为(鸟群觅食行为)进行建模与仿真研究结果的启发。研究者发现鸟群在飞行过程中经常会突然改变方向、散开、聚集,其行为不可预测,但其整体总保持一致性,个体与个体间也保持着最适宜的距离。通过对类似生物群体的行为的研究,发现生物群体中存在着一种社会信息共享机制,它为群体的进化提供了一种优势,这也是PSO算法形成的基础。由于PSO算法容易理解、易于实现,所以PSO算法发展很快。在学者们的研究下粒子群算法广泛用于各种工程优化问题的求解中。在粒子群算法求解优化问题中,首先将问题的可行解通过一定的编码方式编码成粒子,用一个粒子来代表该问题的一个可行解,用粒子群来代表一组可行的解,随机初始化一个粒子群,通过粒子群中各粒子的飞行,即PSO的迭代,寻找最优,在每一次叠代中,粒子通过跟踪两个″极值″来更新自己。第一个就是粒子本身所找到的最优解。这个解叫做个体极值PBest.另一个极值是整个种群目前找到的最优解,这个极值是全局极值PGBest。粒子位置的好坏,由被优化的问题决定的适应值函数来评价。每一个粒子还有一个速度来决定下一步粒子到达的位置,各个粒子追随当前的最优粒子在搜索空间进行搜索,利用各个粒子的飞行的信息不断的更新“极值”位置,最终达到或接近问题的最优位置。
PSO同遗传算法类似,是一种基于叠代的优化工具。系统初始化为一组随机解,通过叠代搜寻最优值。同时它保留了基于种群的全局搜索策略,采用简单的速度位移模型,避免了遗传算法的复杂的交叉以及变异操作,同时它特有的记忆使其可以动态跟踪当前的搜索情况以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息。同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整,收敛速度快。目前已在很多工程领域中取得了广泛的应用,很多情况下比遗传算法更有效,近年来受到学术界的广泛关注,并提出了很多改进算法。但是将PSO算法应用于测试用例集缩减问题的研究却很少。
在软件项目开发中,软件测试工程师在测试的过程中保留测试的结果,形成测试报告,其中各个测试用例及其测试结果构成测试用例报告,进而构建测试用例库,通过测试用例库,可以得到各个测试用例对于需求的满足情况,我们可以通过这些满足情况,来对测试用例集进行缩减,以其获得较少的测试用例集,减少回归测试中测试的代价,提高回归测试的效率。
对于测试用例集缩减问题,设测试用例集T中含有n个测试用例,测试需求集R中含有m个测试需求,通过测试用例库可以得到测试用例集T与测试需求集R的二元满足关系矩阵B=(bi,j)n×m,用粒子代表测试用例集的缩减方案,则粒子群中第i粒子pi的编码为:pi=<pi,1,pi,2,...,pi,n>,且pi,j∈{0,1}
上式子中n为该编码的长度,是要缩减的测试用例集中的测试用例数量,pi,j取1表示第i粒子pi代表的测试用例集中包含了第j个测试用例,取0则表明没有包含第j个测试用例,则粒子pi代表的测试用例集。在叠代过程中,各粒子的评价这里采用二个适应函数值的评价方法,位置的更新这里采用一种基于测试用例覆盖率的概率分布随机更新方法。
在标准的粒子群算法中,粒子位置的更新是以速度的更新为依据的,而速度的更新需要各维的惯性权重,在测试用例集缩减问题中,粒子位置的每一维值的选择只有两种,选中为1,否则为0,选中表示该维对应的测试用例包含在此粒子代表的测试用例集中,否则表示在此测试用例被裁减了。同时由于各个测试用例对于测试需求的覆盖有差异,覆盖率大的测试用例应该有较高的被选中的概率,这样可以加快测试用例集的缩减速度,所以本发明采用一种基于测试用例覆盖率的概率分布随机更新粒子位置的方法,提高算法的收敛速度,同时简化了位置更新的操作。
在标准的粒子群算法中,根据问题确定一个适应值函数来评价各个粒子的位置优劣,在测试用例集缩减问题中,如果采用一个适应值函数评价粒子的优劣,需要将测试覆盖率和每个需求的权重、测试运行代价等测试信息作为评价的指标通过加权的方式构造为一个评价函数,这种传统的利用权值的方法往往不能准确的评价粒子,并且在一个测试项目中各个指标的权值是很难确定,工程中是难以确定的,并且会增加工程中的复杂度。所以本发明结合测试用例集缩减问题采用二个适应值评价方法,将各个粒子的对需求的覆盖度作为第一个,将该粒子对需求的覆盖的冗余度作为第二个,通过第一个来刻画粒子对于测试需求的满足程度,通过第二个来衡量在满足覆盖的情况下覆盖的冗余度。在覆盖度相等情况下,冗余度越小越好。
将粒子群算法应用于测试用例集缩减问题,并且对粒子的评价采用二个适应值的评价方法,位置的更新采用一种基于测试用例覆盖率的概率分布随机更新方法,本发明给出了一种测试用例集缩减方法。
本发明与已有的测试用例集缩减方法相比:本发明提供测试用例集缩减方法编码形式简单,二个适应值评价更精确,位置更新操作简单,收敛速度快,稳定性好,并且与初始值无关。
附图说明
附图1是本发明的流程图。
附图2为某软件系统的测试用例集和测试需求的满足关系。
附图3利用本发明进行测试用例集缩减迭代次数和全局最优的适应值图。
附图450次实验中找到最优测试用例集的迭代次数图。
具体实施方式
以某软件系统的测试用例集的缩减为例,结合图1具体说明本发明的一种测试用例集缩减方法的实施方式。图2为某软件系统的测试用例集和测试需求的满足关系
(1)由图2某软件系统的测试用例集T={t1,t2,...,t12}与测试需求集R={r1,r2,...,r19}的二元满足关系S(T,R)={(t,r)|(t,r)∈T×R},r1,r2,...,r19是被测系统的19个需求,t1,t2,...,t12是12个测试用例。图中满足关系用‘0’或‘1’数字表示,比如第i行第j列中的数字如果等于‘1’,则表示测试用例ti测试覆盖了需求rj;否则,如果等于‘0’,则表示测试用例ti测试没有测试需求rj。这样,图中第i行中值为‘1’的需求的集合为Req(ti),其元素个数就表示了测试用例ti运行时测试到的需求的个数,即它的覆盖度;同理,表中第j列中值为‘1’的测试用例的集合为Test(rj)其元素个数就表示在一次测试中覆盖了需求rj的一个测试用例子集的测试用例个数。
由图2建立二元关系矩阵B=(bi,j)12×19
B 12 &times; 19 = 1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0 1,1,1,1,1,1,0 , 1,0,1,1,0,1,1,0,0,0,0,0 1,1,1,1,0,1,0,0,0,0,1,1,1,1,1,0,1,1,0 1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1 1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0 1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1 1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0 1,1,1,1,0,1,0,0,0,0,1,1,1,1,0,1,0,0,1 1,1,1,1,1,1,0,1,0,1,0,1,0,0,1,0,1,1,0 1,1,1,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0 1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0 1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,1,1,0
式中所示:其中bi,j=1表明测试用例ti覆盖了需求rj,bi,j=0表明测试用例ti没有覆盖需求rj
(2)根据测试用例集T与测试需求集R的二元满足关系矩阵
B=(bi,j)12×19,获得各个测试用例ti对于测试需求集R的覆盖度
Figure GSB00000167645400101
其中i∈{1,2,...,12},该测试用例满足的需求的数量,对于B12×19测试用例的覆盖度为cov_tr=[8,11,12,11,7,8,8,11,12,12,7,13],进一步求得该测试用例对测试需求集的覆盖率cov_tp[i]=cov_tr[i]/19,其中i∈{1,2,...,12}。对于B12×19,cov_tp=[8/19,11/19,12/19,11/19,7/19,8/19,8/19,11/19,12/19,12/19,7/19,13/19]=[0.42,0.58,0.63,0.58,0.37,0.42,0.42,0.58,0.63,0.63,0.37,0.68]
(3)对上述测试用例集T与测试需求集R的二元满足关系矩阵B=(bi,j)12×19,粒子群的规模为:N=10,则粒子群中粒子pi的编码为:
pi=<pi,1,pi,2,...,pi,12>,且pi,j∈{0,1},i∈{1,2,...,12},该编码的长度为12,是要缩减的测试用例集中的测试用例数量,pi,j取1表示第i粒子pi代表的测试用例集中包含了第j个测试用例,取0则表明没有包含第j个测试用例,则粒子pi代表的测试用例集。
(4)利用本发明所述的方法对该测试用例集进行缩减时,指定的粒子群算法各相关参数值见表1,其中粒子的数量10,粒子的维数为12,粒子各维位置的取值范围{0,1},粒子各维随机取1的概率[0.42,0.58,0.63,0.58,0.37,0.42,0.42,0.58,0.63,0.63,0.37,0.68],粒子各维的覆盖度为[8,11,12,11,7,8,8,11,12,12,7,13],设定迭代终止条件:迭代次数达到最大迭代次数MAXN=500,或者当前粒子群的PGBest的cov[p]达到期望的覆盖度COV_EXP=19且covRedun[p]小于给定的冗余度COV_RED=11,随机初始化每个粒子的各维初始位置,令迭代次数t=1,粒子群优化开始。
表1对测试用例缩减时二维随机粒子群算法粒子群算法相关参数设置
  参数   值   参数
  粒子数量   10   粒子各维覆盖度 [8,11,12,11,7,8,8,11,12,12,7,13]
  粒子维数   12   粒子各维取1概率 [0.42,0.58,0.63,0.58,0.37,0.42,0.42,0.58,0.63,0.63,0.37,0.68]
  位置范围   {0,1}   最大迭代次数MAXN 500
  COV_EXP   19   初始粒子位置 随机产生
  COV_RED   11   t 1
(5)对每个粒子:假设粒子pi,其当前位置编码pi=<1,1,0,1,0,0,0,0,0,0,0,0>,则其代表的测试用例集为
Figure GSB00000167645400111
其中T′={t1,t2,t4},该测试用例集含有测试用例数量为|pi|=3,则该粒子代表的测试用例集满足的总需求为:粒子pi的覆盖度cov[pi]=19为该测试用例集满足的需求数,则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun[pi]=covTotal[pi]-cov[pi]=30-19=11。计算每个粒子所代表的测试用例集的适应值f(pi)=[cov[pi],covRedun[pi]]T=[19,11]T
(6)对每个粒子,假设粒子pi将当前位置适应值和该粒子局部最优位置的适应值piBest进行比较;如果粒子当前适应值的覆盖度cov[pi]大于等于piBest对应覆盖度cov[pi],并且粒子当前适应值的冗余度小于piBest对应冗余度,说明当前的粒子位置较好,则将其作为该粒子局部最优位置,即piBest=f(pi)=[cov[pi],covRedun[pi]]T,否则不需要更新该粒子的局部最优位置;
假设该粒子经历过的最好位置为piBest=<1,1,0,1,0,0,0,0,0,0,1,0>,则其代表的测试用例集为{t1,t2,t4,t11},则该位置的测试用例集满足的总需求为:
Figure GSB00000167645400113
piBest的覆盖度cov[piBest]=19为该测试用例集满足的需求数,则其的测试用例集对于需求覆盖的冗余度为covRedun[piBest]=covTotal[piBest]-cov[piBest]=37-19=18。其二维适应值f(piBest)=[cov[piBest],covRedun[piBest]]T=[19,18]T;则和当前位置pi比较,覆盖度cov[pi]=cov[piBest],而冗余度covRedun[pi]<covRedun[piBest],所以当前位置较好,所以更新该粒子的局部最优位置piBest=pi
(7)对每个粒子,将局部最优位置适应值和全局最优位置的适应值PGBest进行比较,如果粒子局部最优位置适应值piBest的覆盖度大于等于PGBest对应覆盖度,并且粒子历史最优适应值piBest的冗余度小于PGBest对应冗余度,说明piBest对应粒子位置较好,则将其作为粒子群全局最优位置,则将其作为当前的全局最优位置,即PGBest=piBest;
(8)根据下面的公式更新每个粒子的各维的位置,pi (t)=<pi,1,pi,2,...,pi,12>获得新的位置pi,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)步。
通过以上过程可以实现软件系统的测试用例集缩减,用基于粒子群算法的测试用例缩减方法的将上述过程执行50次,50次的结果如表2所示。
表2 50次缩减结果表
  粒子   测试用例集   次数
  p1   1,2,4   16
  p2   2,4,7   11
  p3   4,5,10   8
  p4   4,10,11   15
从中可以看出,50次缩减每次都得到了只含有3个测试用例的测试用例集,将原来的12个测试用例缩减到3个,缩减为原来的25%,缩减效果好,稳定性好。
图3给出了一次迭代过程中,粒子群全局最优适应值的变化情况,从中可以看出,全局最优适应值的覆盖度由17逐步增加19,达到对19个需求的完全覆盖,而粒子群的全局最优适应值的冗余度由35逐步下降到11,最终收敛到最优的位置,结束迭代,说明该方法效果好。
图4给出了50次实验中,每次找到最优测试用例缩减方案进行的迭代次数,最少的2次迭代,最多的是180次迭代,平均值为71.88次,迭代次数较少,计算速度快。
测试用例集的缩减问题是NP-C问题,一般采用启发式算法来获得该问题的近似解,达到对测试用例集的有效缩减。现有的启发式算法主要包括:GE算法、GRE算法、H算法、GA算法等,和现有的测试用例缩减方法GE算法、GRE算法、H算法对本实例的结果如表3所示:
表3缩减结果比较
Figure GSB00000167645400131
从表中可以看出,本发明提供的方法结果和初始集无关,每次都能找到将测试用例集缩减到3个。
该实例分析表明,在测试需求数量较大、相互间关系复杂、测试资源又较为紧张的情况下,首先实施测试用例集的缩减,不仅可以有效减小计算开销,提高测试的效率。

Claims (4)

1.一种测试用例集缩减方法,其特征在于主要包括以下步骤:
(1)在项目开发中,测试人员在实施测试的过程中会将所使用测试用例及其测试结果保存在测试用例库中,从测试用例库中得到测试用例对测试需求集的覆盖情况,进而获得测试用例集T={t1,t2,...,tn}与测试需求集R={r1,r2,...,rm}的二元满足关系S(T,R)={(t,r)|(t,r)∈T×R},建立二元关系矩阵B=(bi,j)n×m,其中,n表示测试用例集中包含的测试用例数量,m表示被测系统测试需求的数量,S(T,R)表示测试用例t∈T与测试需求s∈S的满足关系,i表示测试用例集中的第i个测试用例ti的编号,j表示被测系统的第j个测试需求rj的编号,bi,j=1表明测试用例ti覆盖了需求rj,bi,j=0表明测试用例ti没有覆盖需求rj
(2)根据测试用例集T与测试需求集R的二元满足关系矩阵B=(bi,j)n×m,得到各个测试用例ti,对于测试需求集R的覆盖度
Figure FSB00000167645200011
其中i∈{1,2,...,n},即该测试用例满足的需求的数量,进一步得到该测试用例对测试需求集的覆盖率cov_tp[i]=cov_tr[i]/m,其中i∈{1,2,...,n};
(3)对上述测试用例集T与测试需求集R的二元满足关系矩阵B=(bi,j)n×m,则粒子群中第i粒子pi的编码为:pi=<pi,1,pi,2,...,pi,n>,且pi,j∈{0,1},n为该编码的长度,是要缩减的测试用例集中的测试用例数量,pi,j取1表示第i粒子pi代表的测试用例集中包含了第j个测试用例,取0则表明没有包含第j个测试用例,则粒子pi代表的测试用例集;
(4)设定基于粒子群算法的参数,所述的参数包括粒子群中粒子的数量N,粒子各维位置的取值范围{0,1},粒子第i维的随机取1的概率cov_tp[i],随机初始化每个粒子的各维位置,令迭代次数t=1,开始测试用例集缩减;
(5)对每个粒子pi,其编码pi=<pi,1,pi,2,...,pi,n>,则其代表的测试用例集为
Figure FSB00000167645200012
其中T′={pi,1×t1,pi,2×t2,...,pi,n×tn},该测试用例集含有测试用例数量为
Figure FSB00000167645200021
Figure FSB00000167645200022
ki表示粒子pi所代表的测试用例集中包含的测试用例的编号,T′中总共有|pi|个测试用例,该粒子代表的测试用例集满足的总需求为:
Figure FSB00000167645200023
粒子pi的覆盖度cov[pi]为该测试用例集满足的需求数,则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun[pi]=covTotal[pi]-cov[pi],计算每个粒子所代表的测试用例集的二个适应值f(pi)=[cov[pi],covRedun[pi]]T
(6)对每个粒子,将当前适应值和该粒子局部最优位置的适应值piBest进行比较;若较好,则将其作为该粒子当前的局部最优位置,即piBest=f(pi)=[cov[pi],covRedun[pi]]T
(7)对每个粒子,将其局部最优适应值和全局经历过的最优位置的适应值PGBest进行比较,若第i个粒子pi的局部最优值piBest比PGBest好,则将其作为当前的全局最优位置,即PGBest=piBest;
(8)根据下面的公式更新每个粒子的各维的位置,pi (t)=<pi,1,pi,2,...,pi,n>获得新的位置pi,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)步。
2.根据权利要求1所述的一种测试用例集缩减方法,其特征在于:这里的测试需求可以是软件测试中白盒测试的语句覆盖,条件覆盖,判定覆盖,也可以是功能测试中的各个模块的覆盖。
3.根据权利要求1所述的一种测试用例集缩减方法,其特征在于:对一个测试用例集的评价从两个方面进行,一个是该测试用例集对于需求的覆盖度,另一个是测试用例集对测试需求的冗余度。
4.根据权利要求1所述的一种测试用例集缩减方法,其特征在于:在粒子群的位置转化中直接采用将位置的某一维置0或1的方式来进行位置更新。
CN2009100208456A 2009-01-09 2009-01-09 一种测试用例集缩减方法 Expired - Fee Related CN101464831B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100208456A CN101464831B (zh) 2009-01-09 2009-01-09 一种测试用例集缩减方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100208456A CN101464831B (zh) 2009-01-09 2009-01-09 一种测试用例集缩减方法

Publications (2)

Publication Number Publication Date
CN101464831A CN101464831A (zh) 2009-06-24
CN101464831B true CN101464831B (zh) 2010-12-01

Family

ID=40805421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100208456A Expired - Fee Related CN101464831B (zh) 2009-01-09 2009-01-09 一种测试用例集缩减方法

Country Status (1)

Country Link
CN (1) CN101464831B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101908017B (zh) * 2010-06-01 2012-10-03 南京大学 一种基于部分多重覆盖的回归测试用例筛选方法
CN101882106B (zh) * 2010-06-11 2012-10-24 东南大学 一种基于灾变的演化测试的动态优化方法
CN101866317B (zh) * 2010-06-29 2012-07-25 南京大学 一种基于聚类分析的回归测试用例选择方法
CN102063376B (zh) * 2011-02-16 2013-01-16 哈尔滨工程大学 一种测试用例选取方法
CN102364449B (zh) * 2011-10-24 2017-04-12 中兴通讯股份有限公司 一种最小测试用例集的生成方法及系统
CN102750153B (zh) * 2012-06-29 2015-11-25 南京大学 一种基于程序变更的回归测试用例集构建方法
CN103617119B (zh) * 2013-12-03 2016-05-11 南通大学 基于语句交互覆盖的回归测试用例选择方法
CN105260534B (zh) * 2015-10-10 2019-06-18 浪潮(北京)电子信息产业有限公司 用于超大规模芯片验证的回归测试用例维护方法及系统
CN105446876B (zh) * 2015-11-03 2020-12-22 北京京东尚科信息技术有限公司 自动化测试方法、装置、系统、电子设备及可读存储介质
CN106874177A (zh) * 2015-12-14 2017-06-20 中国航空工业第六八研究所 一种基于场景的锁存器测试方法
US9779013B2 (en) * 2016-01-12 2017-10-03 Wipro Limited Method and system for optimizing a test suite comprising plurality of test cases
CN105512046B (zh) * 2016-02-01 2018-02-13 北京理工大学 基于粒子群优化算法的Android自动化测试方法
CN106844193B (zh) * 2016-12-17 2019-10-11 福建瑞之付微电子有限公司 一种嵌入式模块交叉测试的系统化设计方法
CN106991051B (zh) * 2017-04-05 2020-06-16 西安邮电大学 一种基于变异测试和关联规则的测试用例约简方法
CN107544905B (zh) * 2017-08-22 2021-02-05 中国农业银行股份有限公司 回归测试用例集的优化方法和系统
CN107992414B (zh) * 2017-11-28 2020-11-17 曲明成 一种基于测试用例获取进程模块间依赖关系的方法
CN108845927B (zh) * 2018-05-04 2021-12-07 联动优势电子商务有限公司 一种测试用例的筛选方法及装置
CN110955588B (zh) * 2018-09-26 2021-10-22 华为技术有限公司 一种测试用例的质量确定方法和装置
CN109558328B (zh) * 2018-12-04 2022-04-22 郑州云海信息技术有限公司 一种代码覆盖率的测试方法、系统、装置及可读存储介质
CN109596927A (zh) * 2018-12-29 2019-04-09 蜂巢能源科技有限公司 用于电池管理系统bms的测试方法和测试系统
CN111950202A (zh) * 2020-08-12 2020-11-17 广东电网有限责任公司佛山供电局 一种系统芯片的仿真用例集约简处理方法
CN113032271B (zh) * 2021-03-31 2023-10-13 中国电子科技集团公司第十五研究所 数据样本冗余性定量判定方法及系统
CN113282498B (zh) * 2021-05-31 2024-04-05 深圳赛安特技术服务有限公司 测试用例的生成方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN101464831A (zh) 2009-06-24

Similar Documents

Publication Publication Date Title
CN101464831B (zh) 一种测试用例集缩减方法
Fordham et al. How complex should models be? Comparing correlative and mechanistic range dynamics models
CN103218675B (zh) 一种基于聚类和滑动窗口的短期负荷预测方法
CN102147727B (zh) 一种新增软件项目的软件工作量预测方法
Yan et al. A simplified prediction model for energy use of air conditioner in residential buildings based on monitoring data from the cloud platform
KR102468316B1 (ko) 과거 데이터에 기초한 시계열 예측 방법 및 장치
Yuan et al. Conditional style-based generative adversarial networks for renewable scenario generation
CN110837915B (zh) 一种基于混合集成深度学习的电力系统低压负荷点预测及概率预测方法
CN116882038B (zh) 一种基于bim技术的机电施工方法及系统
CN109410588A (zh) 一种基于交通大数据的交通事故演化分析方法
CN108984830A (zh) 一种基于模糊网络分析的建筑能效评价方法及装置
Tan et al. A methodology for augmenting sparse pairwise comparison matrices in AHP: applications to energy systems
CN112036598A (zh) 一种基于多信息耦合的充电桩使用信息预测方法
Smith et al. Meeting real–time traffic flow forecasting requirements with imprecise computations
CN115099511A (zh) 基于优化copula的光伏功率概率估计方法及系统
Lin et al. Data-driven prediction of building energy consumption using an adaptive multi-model fusion approach
Alturk et al. Multi-criteria land use suitability analysis for the spatial distribution of cattle farming under land use change modeling scenarios in Thrace Region, Turkey
Berneti Design of fuzzy subtractive clustering model using particle swarm optimization for the permeability prediction of the reservoir
CN113033898A (zh) 基于k均值聚类与bi-lstm神经网络的电负荷预测方法及系统
CN102663562B (zh) 一种基于克隆选择算法的土地资源评价因子级别划分方法
CN109345080B (zh) 天然气管道系统供气可靠性评价方法及系统
Baker et al. Transferable Energy Storage Bidder
CN109241201A (zh) 一种基于曲率的拉普拉斯中心性峰值数据聚类方法
CN113609456A (zh) 电动汽车光伏充电站可靠性分析方法、系统、介质、终端
Shen et al. An interval analysis scheme based on empirical error and mcmc to quantify uncertainty of wind speed

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101201

Termination date: 20120109