发明名称 一种测试用例集缩减方法
摘要 针对软件回归测试中测试用例集膨胀问题,本发明公开了一种测试用例集缩减方法,该方法受启发于粒子群算法,采用0-1编码方式表示测试用例集,不同粒子代表不同的测试用例集选择方案,每个粒子的适应值采用两个适应值进行评价,其中一个为测试用例集对测试需求集的覆盖度,另一个是测试用例集满足测试需求集的冗余度,粒子位置更新利用各个测试用例对测试需求的覆盖率为概率随机产生下一代个体位置,最后得到覆盖度最大,而冗余度最小的粒子即为最优的测试用例集缩减方案。与已有的测试用例集缩减方法相比,本发明提供一种与初始值无关、操作简单、计算速度快、性能优良的测试用例集缩减方法。
申请公布号 CN101464831B 申请公布日期 2010.12.01
申请号 CN200910020845.6 申请日期 2009.01.09
申请人 西安邮电学院 发明人 王曙燕;孙家泽;曹小鹏
分类号 G06F11/36(2006.01)I;G06N3/00(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 代理人
主权项 1.一种测试用例集缩减方法,其特征在于主要包括以下步骤:(1)在项目开发中,测试人员在实施测试的过程中会将所使用测试用例及其测试结果保存在测试用例库中,从测试用例库中得到测试用例对测试需求集的覆盖情况,进而获得测试用例集T={t<sub>1</sub>,t<sub>2</sub>,...,t<sub>n</sub>}与测试需求集R={r<sub>1</sub>,r<sub>2</sub>,...,r<sub>m</sub>}的二元满足关系S(T,R)={(t,r)|(t,r)∈T×R},建立二元关系矩阵B=(b<sub>i,j</sub>)<sub>n×m</sub>,其中,n表示测试用例集中包含的测试用例数量,m表示被测系统测试需求的数量,S(T,R)表示测试用例t∈T与测试需求s∈S的满足关系,i表示测试用例集中的第i个测试用例t<sub>i</sub>的编号,j表示被测系统的第j个测试需求r<sub>j</sub>的编号,b<sub>i,j</sub>=1表明测试用例t<sub>i</sub>覆盖了需求r<sub>j</sub>,b<sub>i,j</sub>=0表明测试用例t<sub>i</sub>没有覆盖需求r<sub>j</sub>;(2)根据测试用例集T与测试需求集R的二元满足关系矩阵B=(b<sub>i,j</sub>)<sub>n×m</sub>,得到各个测试用例t<sub>i</sub>,对于测试需求集R的覆盖度<img file="FSB00000167645200011.GIF" wi="390" he="121" />其中i∈{1,2,...,n},即该测试用例满足的需求的数量,进一步得到该测试用例对测试需求集的覆盖率cov_tp[i]=cov_tr[i]/m,其中i∈{1,2,...,n};(3)对上述测试用例集T与测试需求集R的二元满足关系矩阵B=(b<sub>i,j</sub>)<sub>n×m</sub>,则粒子群中第i粒子p<sub>i</sub>的编码为:p<sub>i</sub>=<p<sub>i,1</sub>,p<sub>i,2</sub>,...,p<sub>i,n</sub>&gt;,且p<sub>i,j</sub>∈{0,1},n为该编码的长度,是要缩减的测试用例集中的测试用例数量,p<sub>i,j</sub>取1表示第i粒子p<sub>i</sub>代表的测试用例集中包含了第j个测试用例,取0则表明没有包含第j个测试用例,则粒子p<sub>i</sub>代表的测试用例集;(4)设定基于粒子群算法的参数,所述的参数包括粒子群中粒子的数量N,粒子各维位置的取值范围{0,1},粒子第i维的随机取1的概率cov_tp[i],随机初始化每个粒子的各维位置,令迭代次数t=1,开始测试用例集缩减;(5)对每个粒子p<sub>i</sub>,其编码p<sub>i</sub>=<p<sub>i,1</sub>,p<sub>i,2</sub>,...,p<sub>i,n</sub>&gt;,则其代表的测试用例集为<img file="FSB00000167645200012.GIF" wi="163" he="53" />其中T′={p<sub>i,1</sub>×t<sub>1</sub>,p<sub>i,2</sub>×t<sub>2</sub>,...,p<sub>i,n</sub>×t<sub>n</sub>},该测试用例集含有测试用例数量为<img file="FSB00000167645200021.GIF" wi="287" he="134" />则<img file="FSB00000167645200022.GIF" wi="420" he="71" />k<sub>i</sub>表示粒子p<sub>i</sub>所代表的测试用例集中包含的测试用例的编号,T′中总共有|p<sub>i</sub>|个测试用例,该粒子代表的测试用例集满足的总需求为:<img file="FSB00000167645200023.GIF" wi="540" he="130" />粒子p<sub>i</sub>的覆盖度cov[p<sub>i</sub>]为该测试用例集满足的需求数,则该粒子所表示的测试用例集对于需求覆盖的冗余度为covRedun[p<sub>i</sub>]=covTotal[p<sub>i</sub>]-cov[p<sub>i</sub>],计算每个粒子所代表的测试用例集的二个适应值f(p<sub>i</sub>)=[cov[p<sub>i</sub>],covRedun[p<sub>i</sub>]]<sup>T</sup>;(6)对每个粒子,将当前适应值和该粒子局部最优位置的适应值p<sub>i</sub>Best进行比较;若较好,则将其作为该粒子当前的局部最优位置,即p<sub>i</sub>Best=f(p<sub>i</sub>)=[cov[p<sub>i</sub>],covRedun[p<sub>i</sub>]]<sup>T</sup>;(7)对每个粒子,将其局部最优适应值和全局经历过的最优位置的适应值PGBest进行比较,若第i个粒子p<sub>i</sub>的局部最优值p<sub>i</sub>Best比PGBest好,则将其作为当前的全局最优位置,即PGBest=p<sub>i</sub>Best;(8)根据下面的公式更新每个粒子的各维的位置,p<sub>i</sub><sup>(t)</sup>=&lt;p<sub>i,1</sub>,p<sub>i,2</sub>,...,p<sub>i,n</sub>&gt;获得新的位置p<sub>i,j</sub><sup>(t+1)</sup>=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)步。
地址 710061 陕西省西安市雁塔区长安南路563号