首页 / 专利库 / 软件 / 白盒测试 / 一种测试用例集缩减方法

一种测试用例集缩减方法

阅读:1002发布:2020-07-05

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

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的覆盖度其中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>,则其代表的测试用例集为其中T′={pi,1×t1,pi,2×t2,...,pi,n×tn},该测试用例集含有测试用例数量为则ki表示粒子pi所代表的测试用例集中包含的测试用例的编号,T′中总共有|pi|个测试用例,该粒子代表的测试用例集满足的总需求为:粒子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,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的方式来进行位置更新。

说明书全文

技术领域

发明属于软件测试技术领域,具体涉及到根据测试用例库中测试用例及其测试结果,提供一种测试用例集缩减方法,主要解决在渐进和快速迭代开发模式中,频繁进行回归测试,导致测试用例库迅速扩大,回归测试成本也随之急剧增加,通过测试用例集的缩减,减少测试用例数量,提高回归测试效率,减低测试成本。

背景技术

软件测试是提高软件质量的重要手段。回归测试作为软件生命周期的一个组成部分,在软件开发的各个阶段都会多次进行。软件产生新版本、软件硬件平台变更或硬件配置改变后,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现,同时还需要补充新的测试用例来测试新的或被修改了的功能。在渐进和快速迭代开发模式中,新版本的连续发布使回归测试进行得更加频繁,导致测试用例库迅速扩大,回归测试成本也随之急剧增加。在测试用例库中,往往存在冗余的测试用例,冗余测试用例的存在降低了回归测试的效率。因此很有必要进行测试用例集缩减,使用尽可能少的测试用例,充分覆盖给定的测试需求目标,提高测试效率。
回归测试的上述特点决定了实施回归测试是一项工作量大、烦琐的工作。因此实现自动化的回归测试可以提高测试效率和保证测试的可靠性。自动化的回归测试首先要对测试用例库进行自动的缩减。
传统的测试用例库的缩减是靠测试人员人工来判断的,缩减的效果和测试人员的经验和个人偏好有很大的关系,因此根据测试用例本身对于需求的覆盖情况来自动进行测试用例集的缩减将有助于实现真正的回归测试自动化。
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的覆盖度其中i∈{1,2,...,n},即该测试用例满足的需求的数量,测试用例集其中该测试用例集含有p个测试用例,满足的总需求为:则此测试用例集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的覆盖度其中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,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=,则其代表的测试用例集为其中T′={pi,1×t1,pi,2×t2,...,pi,n×tn},该测试用例集含有测试用例数量为则ki表示粒子pi所代表的测试用例集中包含的测试用例的编号,T′中总共有|pi|个测试用例,该粒子代表的测试用例集满足的总需求为:粒子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,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,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,
B12×19=1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,01,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,01,1,1,1,0,1,0,0,0,0,1,1,1,1,1,0,1,1,01,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,1,11,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,01,1,1,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,11,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,01,1,1,1,0,1,0,0,0,0,1,1,1,1,0,1,0,0,11,1,1,1,1,1,0,1,0,1,0,1,0,0,1,0,1,1,01,1,1,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,01,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,01,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的覆盖度其中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,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>,则其代表的测试用例集为其中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},则该位置的测试用例集满足的总需求为: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,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缩减结果比较

从表中可以看出,本发明提供的方法结果和初始集无关,每次都能找到将测试用例集缩减到3个。
该实例分析表明,在测试需求数量较大、相互间关系复杂、测试资源又较为紧张的情况下,首先实施测试用例集的缩减,不仅可以有效减小计算开销,提高测试的效率。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈