一种软件测试用例的生成方法

文档序号:30307040发布日期:2022-06-05 06:52阅读:98来源:国知局
一种软件测试用例的生成方法
generation.ieee transactions on evolutionary computation,2015,19,575-591)等等。
9.在这些方法中,基于数学原理的方法仅在特定参数设定下能得到较好的计算效果,不能推广到一般参数;而计算机搜索算法较少考虑数学结构,其可以给出一般参数下的可行解,但耗时巨大,在计算时间有限的的情况下可行解的质量往往难以保证。


技术实现要素:

10.本发明所要解决的技术问题是提供一种软件测试用例的生成方法,采用全新逻辑设计,适用参数广,只需搜索初始向量组,即可实现软件测试用例方案的生成,构造效率高。
11.本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种软件测试用例的生成方法,用于获得覆盖预设k+1种软件类型、且各种软件类型分别包括v+1个可选测试软件的软件测试用例方案,按如下方法执行:
12.步骤a.针对两两不同软件类型的可选测试软件的组合测试方案设计问题,获得相对应构造覆盖阵列ca(2,k+1,v+1)问题,然后进入步骤b;
13.步骤b.应用进化算法生成初始覆盖向量组,然后进入步骤c;
14.步骤c.基于初始覆盖向量组,应用矩阵循环模加方法,构造满足参数要求ca(2,k+1,v+1)的覆盖阵列,然后进入步骤d;
15.步骤d.将覆盖阵列转化为所对应的软件测试用例方案。
16.作为本发明的一种优选技术方案:所述步骤b包括如下步骤b1至步骤b5;
17.步骤b1.初始化向量组b的取值为空集,以及初始化迭代次数n=1,然后进入步骤b2;
18.步骤b2.使用修正算子更新向量组b,使得向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c,并针对迭代次数n进行加1更新,其中,zv={0、1、

、v-1},然后进入步骤b3;
19.步骤b3.判断迭代次数n的值是否等于预设第一最大迭代次数n,是则即获得n个向量组b,并进入步骤b4;否则返回步骤b2;其中,预设第一最大迭代次数n为正偶数;
20.步骤b4.迭代执行如下步骤b4-1至步骤b4-2,直至满足预设迭代溢出条件,然后进入步骤b5;
21.步骤b4-1.根据n个向量组b分别所包含向量的个数,按分别所包含向量个数由小至大的顺序,针对n个向量组b进行排序,并按预设规则选择该排序中的前p个向量组b,并定义该前p个向量组b中的第一个向量组b为当前迭代最优解,然后进入步骤b4-2;
22.步骤b4-2.分别针对n个向量组b中除前p个向量组b以外的剩余各个向量组b,按预设规则针对向量组b进行更新,使得该向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c,进而更新n个向量组b中除前p个向量组b以外的剩余各个向量组b;
23.步骤b5.根据n个向量组b分别所包含向量的个数,选择其中最小包含向量个数所对应的向量组b,构成初始覆盖向量组。
24.作为本发明的一种优选技术方案:所述步骤b4-1中,按由n个向量组b的排序中选择前p个向量组b,其中,a表示预设选择比例,表示向上取整;或者按p=(n/
2),由n个向量组b的排序中选择前p个向量组b。
25.作为本发明的一种优选技术方案:所述步骤b4-2中,分别针对n个向量组b中除前p个向量组b以外的剩余各个向量组b,执行如下步骤b4-2-1至步骤b4-2-3,针对向量组b进行更新,使得该向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c,进而更新n个向量组b中除前p个向量组b以外的剩余各个向量组b;
26.步骤b4-2-1.应用当前最优解,针对向量组b进行替换更新,并进入步骤b4-2-2;
27.步骤b4-2-2.由该向量组b中随机删除一个向量,针对该向量组b进行更新,并进入步骤b4-2-3;
28.步骤b4-2-3.使用修正算子更新该向量组b,使得该向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c。
29.作为本发明的一种优选技术方案:所述步骤b2、以及所述步骤b4-2-3中,分别按如下步骤a)至步骤d),使用修正算子更新向量组b,使得向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c;
30.步骤a)计算当前向量组b中各向量中两两数据对象之间位置差集合,若该集合已覆盖集合c,则修正完成,得到一组符合要求的向量组b,返回向量组b,并退出流程;否则任意选取集合c中未被所覆盖的一个数据对象x,并进入步骤b);
31.步骤b)由zv中随机选择k个数据对象,构成长度为k的行向量u,并进入步骤c);
32.步骤c)随机选择行向量u中的一个位置,修改该位置的值,使行向量u的位置差覆盖该数据对象x,然后进入步骤d);
33.步骤d)将行向量u添加至向量组b中,针对向量组b进行更新,返回到步骤a)。
34.作为本发明的一种优选技术方案:所述步骤b4中的预设迭代溢出条件包括预设第二最大迭代次数、或者预设n个向量组b所构种群经迭代所满足的预设收敛条件。
35.作为本发明的一种优选技术方案:所述步骤c包括如下步骤c1至步骤c4,构造满足参数要求ca(2,k+1,v+1)的覆盖阵列;
36.步骤c1.分别针对初始覆盖向量组中的各个向量bi=(v
i,0
、v
i,1
、...、v
i,k-1
),获得向量bi所对应的循环矩阵,并在该矩阵左侧加一全零列,构成该向量bi所对应的矩阵mi如下,其中,i=1、2、...、m,m表示初始覆盖向量组中向量的个数,然后进入步骤c2;
[0037][0038]
步骤c2.分别针对各向量bi所对应的矩阵mi,按如下:
[0039][0040]
获得矩阵mi所对应的v个模加矩阵进而获得各向量bi分别所对应的v个模加矩阵然后进入步骤c3;
[0041]
步骤c3.按如下:
[0042][0043]
构造特殊矩阵m0,然后进入步骤c4;
[0044]
步骤c4.将所有模加矩阵以及特殊矩阵m0按块竖直排列,构成满足参数要求ca(2,k+1,v+1)的覆盖阵列,共kmv+v+1行。
[0045]
作为本发明的一种优选技术方案:所述步骤d中,将覆盖阵列中属于zv∪{∞}中的各个元素分别替换为各个可选测试软件,即构成软件测试用例方案,其中,每一行表示k+1个可选测试软件进行一次测试。
[0046]
本发明所述一种软件测试用例的生成方法,采用以上技术方案与现有技术相比,具有以下技术效果:
[0047]
(1)本发明所设计软件测试用例的生成方法,首先基于覆盖阵列问题的转换,应用进化算法获得覆盖向量组,然后引入矩阵循环模加方法,构造满足参数要求的覆盖阵列,最后经转化获得获得覆盖预设k+1种软件类型、且各种软件类型分别包括v+1个可选测试软件的软件测试用例方案,整个设计是在分析覆盖阵列的数学结构基础上,提出一类在覆盖强度等于2的情况下的测试用例生成方案。与纯数学构造方法相比,本方法的适用性更广,与直接的启发式方法相比,本方法只需搜索初始向量组,即可实现软件测试用例方案的生成,减少程序运行时间,提高搜索效率。
附图说明
[0048]
图1是本发明所设计软件测试用例的生成方法的框架图。
具体实施方式
[0049]
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
[0050]
本发明所设计一种软件测试用例的生成方法,用于获得覆盖预设k+1种软件类型、且各种软件类型分别包括v+1个可选测试软件的软件测试用例方案,实际应用当中,如图1所示,具体执行如下方法。
[0051]
步骤a.针对两两不同软件类型的可选测试软件的组合测试方案设计问题,获得相对应构造覆盖阵列ca(2,k+1,v+1)问题,然后进入步骤b;
[0052]
步骤b.应用进化算法生成初始覆盖向量组,然后进入步骤c;
[0053]
实际应用当中,上述步骤b具体执行如下步骤b1至步骤b5。
[0054]
步骤b1.初始化向量组b的取值为空集,以及初始化迭代次数n=1,然后进入步骤b2。
[0055]
步骤b2.使用修正算子更新向量组b,使得向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c,并针对迭代次数n进行加1更新,其中,zv={0、1、

、v-1},然后进入步骤b3。
[0056]
这里“位置差”,即s-分离差集对s=1,

,k-1覆盖的集合这
里s-分离差集定义为
[0057]dis
={v
i,p-v
i,q
(mod v):q-p≡s(modk),v
i,p
≠∞,v
i,q
≠∞},s=1,2,

,k-1,
[0058]
其中,所有运算模v,并保持∞恒定。
[0059]
步骤b3.判断迭代次数n的值是否等于预设第一最大迭代次数n,是则即获得n个向量组b,并进入步骤b4;否则返回步骤b2;其中,预设第一最大迭代次数n为正偶数。
[0060]
步骤b4.迭代执行如下步骤b4-1至步骤b4-2,直至满足预设第二最大迭代次数,或者预设n个向量组b所构种群经迭代满足预设收敛条件,然后进入步骤b5。
[0061]
步骤b4-1.根据n个向量组b分别所包含向量的个数,按分别所包含向量个数由小至大的顺序,针对n个向量组b进行排序,并按由该排序中的前p个向量组b,并定义该前p个向量组b中的第一个向量组b为当前迭代最优解,然后进入步骤b4-2;其中,a表示预设选择比例,具体实际应用时,a可以选择50%,即由排序中的前一半个向量组b,表示向上取整;或者按p=(n/2),由n个向量组b的排序中选择前p个向量组b。
[0062]
步骤b4-2.分别针对n个向量组b中除前p个向量组b以外的剩余各个向量组b,按预设规则针对向量组b进行更新,使得该向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c,进而更新n个向量组b中除前p个向量组b以外的剩余各个向量组b。
[0063]
具体实施中,上述步骤b4-2中,分别针对n个向量组b中除前p个向量组b以外的剩余各个向量组b,执行如下步骤b4-2-1至步骤b4-2-3,针对向量组b进行更新,使得该向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c,进而更新n个向量组b中除前p个向量组b以外的剩余各个向量组b。
[0064]
步骤b4-2-1.应用当前最优解,针对向量组b进行替换更新,并进入步骤b4-2-2。
[0065]
步骤b4-2-2.由该向量组b中随机删除一个向量,针对该向量组b进行更新,并进入步骤b4-2-3。
[0066]
步骤b4-2-3.使用修正算子更新该向量组b,使得该向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c。
[0067]
步骤b5.根据n个向量组b分别所包含向量的个数,选择其中最小包含向量个数所对应的向量组b,构成初始覆盖向量组。
[0068]
上述步骤b1至步骤b5当中,所述步骤b2、以及所述步骤b4-2-3中,分别按如下步骤a)至步骤d),使用修正算子更新向量组b,使得向量组b中各向量中两两数据对象之间位置差覆盖满足要求的集合c。
[0069]
步骤a)计算当前向量组b中各向量中两两数据对象之间位置差集合,若该集合已覆盖集合c,则修正完成,得到一组符合要求的向量组b,返回向量组b,并退出流程;否则任意选取集合c中未被所覆盖的一个数据对象x,并进入步骤b)。
[0070]
步骤b)由zv中随机选择k个数据对象,构成长度为k的行向量u,并进入步骤c)。
[0071]
步骤c)随机选择行向量u中的一个位置,修改该位置的值,使行向量u的位置差覆盖该数据对象x,然后进入步骤d)。
[0072]
步骤d)将行向量u添加至向量组b中,针对向量组b进行更新,返回到步骤a)。
[0073]
步骤c.基于初始覆盖向量组,应用矩阵循环模加方法,构造满足参数要求ca(2,k+1,v+1)的覆盖阵列,然后进入步骤d。
[0074]
实际应用当中,上述步骤c具体执行如下步骤c1至步骤c4,构造满足参数要求ca(2,k+1,v+1)的覆盖阵列。
[0075]
步骤c1.分别针对初始覆盖向量组中的各个向量bi=(v
i,0
、v
i,1
、...、v
i,k-1
),获得向量bi所对应的循环矩阵,并在该矩阵左侧加一全零列,构成该向量bi所对应的矩阵mi如下,其中,i=1、2、...、m,m表示初始覆盖向量组中向量的个数,然后进入步骤c2。
[0076][0077]
步骤c2.分别针对各向量bi所对应的矩阵mi,按如下:
[0078][0079]
获得矩阵mi所对应的v个模加矩阵进而获得各向量bi分别所对应的v个模加矩阵然后进入步骤c3。
[0080]
步骤c3.按如下:
[0081][0082]
构造特殊矩阵m0,然后进入步骤c4。
[0083]
步骤c4.将所有模加矩阵以及特殊矩阵m0按块竖直排列,构成满足参数要求ca(2,k+1,v+1)的覆盖阵列,共kmv+v+1行。
[0084]
步骤d.将覆盖阵列中属于zv∪{∞}中的各个元素分别替换为各个可选测试软件,即构成软件测试用例方案,即将覆盖阵列转化为所对应的软件测试用例方案,其中,每一行表示k+1个可选测试软件进行一次测试。
[0085]
将上述所设计软件测试用例的生成方法应用于实际当中,诸如预设8种软件类型、且各种软件类型分别包括10个可选测试软件的软件测试用例方案,要设计测试方案,使每两两不同软件类型的可选测试软件的组合测试方案均被测试过至少一次。
[0086]
首先将问题转化为构造ca(2,k+1,v+1),v=9,k=7,生成初始覆盖向量组(m=2):
[0087]
b1=(∞,0,7,4,5,1,4),b2=(4,4,8,6,2,3,2),
[0088]
满足再计算各组位置差:
[0089]d11
={-,7,6,1,5,3,-},d
12
={-,4,7,6,8,-,5},d
13
={-,5,3,0,-,8,3},
[0090]d21
={0,4,7,5,1,8,2},d
22
={4,2,3,6,0,1,2},d
23
={2,7,4,5,2,1,6};
[0091]
不难看出:
[0092]d11
∪d
21
=d
12
∪d
22
=d
13
∪d
23
=z9,
[0093]
满足ca(2,k+1,v+1),生成循环矩阵和模加矩阵,将所有的模加矩阵以及特殊矩阵m0竖直排列,可得到覆盖阵列ca(kmv+v+1;2,k+1,v+1),也即覆盖阵列ca(136;2,8,10)。
[0094]
按所构造的阵列设计测试方案,可实现8类不同类型的软件,每类型软件有10种选择,通过136次测试,确保每两个不同种类选择软件的组合均被测试过至少一次,如下表1所示。
[0095]
表1
[0096][0097][0098]
上述技术方案所设计软件测试用例的生成方法,首先基于覆盖阵列问题的转换,应用进化算法获得覆盖向量组,然后引入矩阵循环模加方法,构造满足参数要求的覆盖阵
列,最后经转化获得覆盖预设k+1种软件类型、且各种软件类型分别包括v+1个可选测试软件的软件测试用例方案,整个设计是在分析覆盖阵列的数学结构基础上,提出一类在覆盖强度等于2的情况下的测试用例生成方案。与纯数学构造方法相比,本方法的适用性更广,与直接的启发式方法相比,本方法只需搜索初始向量组,即可实现软件测试用例方案的生成,减少程序运行时间,提高搜索效率。
[0099]
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1