CN109902007B - 一种基于点染色模型的测试用例生成方法 - Google Patents
一种基于点染色模型的测试用例生成方法 Download PDFInfo
- Publication number
- CN109902007B CN109902007B CN201910128325.0A CN201910128325A CN109902007B CN 109902007 B CN109902007 B CN 109902007B CN 201910128325 A CN201910128325 A CN 201910128325A CN 109902007 B CN109902007 B CN 109902007B
- Authority
- CN
- China
- Prior art keywords
- dyeing
- individual
- probability
- individuals
- graph
- 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.)
- Active
Links
Images
Landscapes
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于点染色模型的测试用例生成方法,该方法包括如下步骤:(1)将软件测试用例生成问题转化为点染色问题;(2)用基于顺序染色的遗传算法来求解最小点染色问题;(3)将图的点染色方案转化为测试用例集的生成方案。相较于普通的基于贪心策略的“一次一行”方案,本发明提供的方法设计全局优化能力,而且设计更简洁、算法执行效率高。
Description
技术领域
本发明涉及一种基于点染色模型的测试用例生成方法,属于软件测试技术领域。
背景技术
随着计算机的普及,大量系统软件层出不穷,软件已成为我们日常生活重要的一部分。为了让软件更好地服务于我们的工作,软件开发的流程被不断完善,软件开发的过程被不断细化,如今软件开发的整个过程被划分为多个重要课题,如:需求分析、软件测试、软件开发、软件维护等。
其中软件测试决定了软件能否发布以及软件维护的方向及成本,如何对一个拥有庞大参数以及结构复杂的软件进行充分全面的测试,已成为目前计算机领域的一个重要课题。例如,通过启发式测试策略模型可以发现软件的代码问题、运行环境问题、数据库使用问题等,从而可以确定软件维护的方向,缩小维护成本。
对于软件测试的方法多种多样,测试用例的生成就是其中一个重要的方法。一个系统软件的错误往往是由内部多个参数的组合引起的,如一个web网页的乱码可能是由该网页的数据库以及浏览器共同造成的。因此可以通过检测系统内部的参数组合情况来进行软件测试。但对于拥有庞大参数的软件系统,生成一个小规模并且能够尽可能多得覆盖住所有组合的测试用例集就显得尤其重要。而如今已有的测试用例集生成方法,主要依靠贪心策略做局部搜索,其全局搜索能力比较有限,解的质量有较大的提升空间,有鉴于此,相比于普通的基于贪心策略的“一次一行”方案,需要从全局优化的角度设计具有更好的执行效率,求解质量也更好的算法。
发明内容
本发明所要解决的技术问题是:提供一种基于点染色模型的测试用例生成方法,将组合测试的用例生成问题转化为图论中的点染色问题,具有较强的全局搜索能力和更好的执行效率,求解质量也较好。
本发明为解决上述技术问题采用以下技术方案:
一种基于点染色模型的测试用例生成方法,包括如下步骤:
步骤1,将软件测试用例生成问题转化为图论中的点染色问题,将所有可能的软件测试用例转化为图的顶点,并判断顶点之间是否有联边,根据顶点和联边生成无向图;
步骤2,利用基于顺序染色的遗传算法求解无向图的最小点染色问题,得到无向图的点染色方案;
步骤3,将无向图的点染色方案转化为要生成的软件测试用例集。
作为本发明的一种优选方案,所述步骤1的具体过程如下:
1.1对于要生成的软件测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集CA(t,k,v),求得所有的参数组合为种,所有的取值排列为vt种,任取一个参数组合和一个取值排列结合起来作为图的顶点,得到图的点集合V,点集合V的大小为
1.2对于1.1得到的点集合,其中任意两个点,对这两个点均有取值的位置,若所有相同位置的取值均相同,则这两个点不联边,否则这两个点联边,得到图的边集合E;
1.3将图的点集合V和图的边集合E结合起来生成无向图G(V,E)。
作为本发明的一种优选方案,所述步骤2的具体过程如下:
2.1对于步骤1得到的具有S个顶点的无向图,对这S个顶点随机生成一个染色顺序,并利用顺序染色算法得到该染色顺序下的染色数;
2.2重复2.1N次,得到N个初始解为(t1,t2,…,tN),ti=(ti1,ti2,…,tiS,Mi),其中,i=1,…,N,ti1,ti2,…,tiS为S个顶点的染色顺序,Mi为染色数;
2.3令迭代次数h=0,采用轮盘赌算法进行个体的选择,计算每个个体被选中遗传到下一代的概率,并据此计算出每个个体的累积概率,从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成(N-M)个新个体将种群数补齐;
2.4对于2.3得到的N个个体,按适应度由高到低,选取前40%的个体作不交叉处理,对剩下60%的个体进行交叉,设定交叉概率为ρ,交叉共循环N次,每次循环都产生一个交叉概率ρn,若ρn≤ρ,则从60%的个体中随机选择两个个体,每个个体随机选择两个位置进行交叉,并将这两个个体进行修正;若ρn>ρ,则本轮循环不进行交叉;
2.5将已经进行交叉的个体按概率q进行变异,变异共循环N次,每次循环都产生一个变异概率qn,若qn≤q,则随机选择一个个体,并从中随机选择两个位置进行变异,并修正该个体;若qn>q,则本轮循环不进行变异;
2.6若当前生成的种群没有收敛于同一解,或并未达到设置的迭代次数H,则令h=h+1,重复2.3-2.5,否则停止迭代,并输出点染色方案结果。
作为本发明的一种优选方案,所述每个个体被选中遗传到下一代的概率,计算公式为:
其中,P(ti)表示个体ti被选中遗传到下一代的概率,mi=1/Mi,mi、mj表示个体ti、tj的适应度。
作为本发明的一种优选方案,所述每个个体的累积概率,计算公式为:
其中,fi表示个体ti的累积概率,P(tj)表示个体tj被选中遗传到下一代的概率。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、相较于现有算法大多是对解的局部优化,本发明考虑从全局优化的角度对解进行处理,使解的求解过程更加高效。
2、本发明结构简单,操作简便,运行速度快。
附图说明
图1是本发明一种基于点染色模型的测试用例生成方法的原理图。
图2是本发明的遗传算法进行一轮遗传变异的流程图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
如图1所示,为本发明一种基于点染色问题的测试用例生成算法的原理图,包括如下三个步骤:(1)将软件测试中的测试用例集看做图的顶点集,对于两个点均有取值的位置所取值均相同,则对应的两点之间不联边,其余顶点之间联边,从而得到一个图,进而将测试用例集的生成问题转化为图的点染色问题;(2)用基于顺序染色的遗传算法来求解最小染色数染色方案;(3)将图的染色方案转化为软件测试的测试用例集生成方案。
其中,将软件测试用例生成问题转化为点染色问题的方法如下:
a)对于一个测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集,可以表示为CA(t,k,v),并且可求出其所有参数组合共种,所有的取值排列共vt种。任取一个参数组合和一种取值排列可以结合为一种情况,定义这样一种结合为一个顶点。按照所得的参数组合顺序以及取值排列顺序,两者一一对应,以每种组合的每个排列建立点序列,从而获得点集合V,点集合大小为
b)对于两个点均有取值的位置,若全部相同位置的取值均相同,则两个点不联边,如(v11,v21,v31,…,vt1,,…,)与(v11,v21,v31,…,,,…,vt1)不可以联边。进而产生了边的集合E;
c)结合a),b)的操作,就生成了无向图G(V,E)。
其中,用基于顺序染色的遗传算法来求解最小染色数染色方案的方法如图2所示:
a)由步骤(1)可得到具有S个点的图,对这S个顶点随机生成一个染色顺序,并用染色算法给出这个染色顺序下的染色数;
b)重复步骤a)所述的生成方法N次,进而得到N个初始解,称为初代种群;
c)令h=0,记N个初始解为((t1,t2,…,tN)),ti=(ti1,ti2,…,tiS,Mi)。其中ti1,ti2,…,tiS为一个S个点的染色顺序,这些数均为正整数,Mi为染色数,令mi=1/Mi为该个体的适应度;
d)运用轮盘赌算法进行个体的选择。由公式:
计算出每个个体被选中遗传到下一代的概率,并用如下公式:
计算出每个个体的累积概率。从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成(N-M)个新个体将种群数补齐;
e)对于处理过的N个个体,按适应度由高到低,选取前40%个体作不交叉处理,而剩下的60%个体进行交叉。设定交叉概率为ρ,交叉共进行N次循环,每次都生产一个交叉概率ρn,若ρn≤ρ,则从60%个体中随机选择两个个体,随机选择两个基因位置进行交叉处理,并将这两个个体的基因进行修正;若ρn>ρ,则表示本轮循环不进行交叉;
f)将已经进行交叉的个体按概率q进行变异。共进行N次循环,每次循环产生一个变异概率qn,若qn≤q,则随机选择一个个体,并随机选择两个基因位进行变异,并修正该个体的基因;若qn>q,则不进行变异处理;
g)令h=h+1,若当前生成的种群没有收敛于同一解,或并未达到设置的迭代次数H,则重复d),e),f)过程。否则停止迭代,并输出结果。
下面以有4个参数、每个参数有两个取值的2组合测试为例进行详细说明:
表1一个4参数的系统
System | DataBase | Client | Web Server |
Windows | MySQL | Chrome | IIS |
LINUX | SQL Server | IE | APACHE |
(1)点转换
表2CA(2,4,2)点集合
序号 | 结合情况 | 序号 | 结合情况 |
1 | (Windows,MySQL,__,__) | 13 | (__,MySQL,Chrome,__) |
2 | (Windows,SQL Server,__,__) | 14 | (__,MySQL,IE,__) |
3 | (LINUX,MySQL,__,__) | 15 | (__,SQL Server,Chrome,__) |
4 | (LINUX,SQL Server,__,__) | 16 | (__,SQL Server,IE,__) |
5 | (Windows,__,Chrome,__) | 17 | (__,MySQL,__,IIS) |
6 | (Windows,__,IE,__) | 18 | (__,MySQL,__,APACHE) |
7 | (LINUX,__,Chrome,__) | 19 | (__,SQL Server,__,IIS) |
8 | (LINUX,__,IE,__) | 20 | (__,SQLServer,__,APACHE) |
9 | (Windows,__,__,IIS) | 21 | (__,__,Chrome,IIS) |
10 | (Windows,__,__,APACHE) | 22 | (__,__,Chrome,APACHE) |
11 | (LINUX,__,__,IIS) | 23 | (__,__,IE,IIS) |
12 | (LINUX,__,__,APACHE) | 24 | (__,__,IE,APACHE) |
联边情况如下:
表3CA(2,4,2)边集合
点序号 | 相邻点序号 | 点序号 | 相邻点序号 |
1 | 2,3,4,7,8,11,12,15,16,19,20 | 13 | 14,15,16,19,20,23,24 |
2 | 3,4,7,8,11,12,13,14,17,18 | 14 | 15,16,19,20,21,22 |
3 | 4,5,6,9,10,15,16,19,20 | 15 | 16,17,18,23,24 |
4 | 5,6,9,10,13,14,17,18 | 16 | 17,18,21,22 |
5 | 6,7,8,11,12,14,16,23,24 | 17 | 18,19,20,22,24 |
6 | 7,8,11,12,13,15,21,22 | 18 | 19,20,21,23 |
7 | 8,9,10,14,16,23,24 | 19 | 20,22,24 |
8 | 9,10,13,15,21,22 | 20 | 21,23 |
9 | 10,11,12,18,20,22,24 | 21 | 22,23,24 |
10 | 11,12,17,19,21,23 | 22 | 23,24 |
11 | 12,18,20,22,24 | 23 | 24 |
12 | 17,19,21,23 | 24 |
由以上操作建立无向图G(V,E)。并取定种群个数N=10,交叉概率ρ=0.8,变异概率q=0.1。
(2)生成初始种群。随机生成一组染色顺序并计算其染色数,初始种群如下:
表4初始种群
编号 | 染色顺序 | 染色数 |
1 | 23,14,13,3,11,2,7,8,10,24,9,6,19,4,20,18,1,22,21,17,15,12,5,16 | 5 |
2 | 1,18,7,8,17,14,19,13,10,2,11,21,4,6,24,12,15,9,16,3,5,23,20,22 | 5 |
3 | 24,8,19,7,9,22,10,13,23,16,21,6,17,2,3,1,14,15,20,18,11,4,5,12 | 6 |
4 | 17,1,3,2,7,6,24,19,22,5,12,23,13,15,21,11,14,9,16,8,4,18,20,10 | 6 |
5 | 2,3,9,24,18,21,8,16,20,5,14,13,22,15,17,1,12,23,4,6,19,10,11,7 | 7 |
6 | 15,14,21,9,2,3,12,19,18,8,16,1,24,7,17,6,22,10,5,11,20,4,13,23 | 6 |
7 | 16,13,9,23,7,4,21,19,5,20,3,18,24,2,1,11,12,8,10,15,14,22,6,17 | 5 |
8 | 12,11,21,16,6,2,14,4,19,18,20,3,10,24,5,22,8,9,1,17,15,13,23,7 | 6 |
9 | 15,12,23,1,10,18,5,8,7,16,13,4,2,9,3,11,17,20,24,22,6,19,14,21 | 6 |
10 | 1,23,11,6,15,17,10,13,24,12,8,9,4,19,18,7,22,5,3,21,20,14,16,2 | 6 |
(3)遗传变异:
进行轮盘赌选择需要遗传的个体,为{1,2,6,7,8}。将经过选择的个体进行补全,并以交叉概率ρ=0.8进行10次交叉处理,得到每次交叉概率为:
P1=(0.201819 0.848933 0.571978 0.959807 0.615314
0.032319 0.832728 0.206732 0.650472 0.560228)
将经过交叉处理后的种群以变异概率q=0.1进行10次变异处理,得到每次变异概率为:
P2=(0.009827 0.723685 0.362041 0.384350 0.568224
0.464736 0.259590 0.905240 0.755852 0.290506)
将以上遗传变异的步骤进行迭代H=2000次,最终获得染色情况如下:
表5最终染色情况
将点染色方案转化为测试用例生成方案,最终获得该测试系统的测试用例为:
表6测试用例集
System | DataBase | Client | Web Server |
Windows | MySQL | IE | IIS |
Windows | SQL Server | Chrome | APACHE |
LINUX | MySQL | IE | APACHE |
LINUX | SQL Server | IE | IIS |
LINUX | MySQL | Chrome | IIS |
以下数据是CA(t,k,2)在交叉率为0.8,变异率为0.1,迭代次数为2000下的结果显示。其中t为不同的强度情况,k为不同的参数数目,best为迭代2000次后最优的测试用例集规模,worst为最差情况,mean表示2000次迭代的平均测试用例集规模:
表7CA(t,k,2)的多组数据显示
与NIST Covering Array Tables相比,可发现该算法在小参数时可以生成最小测试用例集,在参数变大时结果与历史最优解相近。并且该算法结构简单运行速度快,具有实用性。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (3)
1.一种基于点染色模型的测试用例生成方法,其特征在于,包括如下步骤:
步骤1,将软件测试用例生成问题转化为图论中的点染色问题,将所有可能的软件测试用例转化为图的顶点,并判断顶点之间是否有联边,根据顶点和联边生成无向图;具体过程如下:
1.1对于要生成的软件测试用例,定义有k个参数,每个参数有v种取值,要求生成t组合测试用例集CA(t,k,v),求得所有的参数组合为种,所有的取值排列为vt种,任取一个参数组合和一个取值排列结合起来作为图的顶点,得到图的点集合V,点集合V的大小为
1.2对于1.1得到的点集合,其中任意两个点,对这两个点均有取值的位置,若所有相同位置的取值均相同,则这两个点不联边,否则这两个点联边,得到图的边集合E;
1.3将图的点集合V和图的边集合E结合起来生成无向图G(V,E);
步骤2,利用基于顺序染色的遗传算法求解无向图的最小点染色问题,得到无向图的点染色方案;具体过程如下:
2.1对于步骤1得到的具有S个顶点的无向图,对这S个顶点随机生成一个染色顺序,并利用顺序染色算法得到该染色顺序下的染色数;
2.2重复2.1N次,得到N个初始解为(t1,t2,…,tN),ti=(ti1,ti2,…,tiS,Mi),其中,i=1,…,N,ti1,ti2,…,tiS为S个顶点的染色顺序,Mi为染色数;
2.3令迭代次数h=0,采用轮盘赌算法进行个体的选择,计算每个个体被选中遗传到下一代的概率,并据此计算出每个个体的累积概率,从而确定N个初始解中能被遗传到下一代的个体数目M,并重新生成(N-M)个新个体将种群数补齐;
2.4对于2.3得到的N个个体,按适应度由高到低,选取前40%的个体作不交叉处理,对剩下60%的个体进行交叉,设定交叉概率为ρ,交叉共循环N次,每次循环都产生一个交叉概率ρn,若ρn≤ρ,则从60%的个体中随机选择两个个体,每个个体随机选择两个位置进行交叉,并将这两个个体进行修正;若ρn>ρ,则本轮循环不进行交叉;
2.5将已经进行交叉的个体按概率q进行变异,变异共循环N次,每次循环都产生一个变异概率qn,若qn≤q,则随机选择一个个体,并从中随机选择两个位置进行变异,并修正该个体;若qn>q,则本轮循环不进行变异;
2.6若当前生成的种群没有收敛于同一解,或当前迭代次数并未达到设置的迭代次数H,则令h=h+1,重复2.3-2.5,否则停止迭代,并输出点染色方案结果;
步骤3,将无向图的点染色方案转化为要生成的软件测试用例集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910128325.0A CN109902007B (zh) | 2019-02-21 | 2019-02-21 | 一种基于点染色模型的测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910128325.0A CN109902007B (zh) | 2019-02-21 | 2019-02-21 | 一种基于点染色模型的测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902007A CN109902007A (zh) | 2019-06-18 |
CN109902007B true CN109902007B (zh) | 2022-04-29 |
Family
ID=66945074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910128325.0A Active CN109902007B (zh) | 2019-02-21 | 2019-02-21 | 一种基于点染色模型的测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902007B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238954B (zh) * | 2021-05-26 | 2023-05-09 | 南京信息工程大学 | 一种软件测试用例的递归生成方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804634B1 (en) * | 2000-02-17 | 2004-10-12 | Lucent Technologies Inc. | Automatic generation and regeneration of a covering test case set from a model |
CN102323906A (zh) * | 2011-09-08 | 2012-01-18 | 哈尔滨工程大学 | 一种基于遗传算法的mc/dc测试数据自动生成方法 |
CN103593287A (zh) * | 2013-10-30 | 2014-02-19 | 北京信息控制研究所 | 一种基于遗传算法的数据流测试用例自动生成方法 |
CN107704381A (zh) * | 2017-08-31 | 2018-02-16 | 电子科技大学 | 一种两两组合的软件测试用例生成方法 |
-
2019
- 2019-02-21 CN CN201910128325.0A patent/CN109902007B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804634B1 (en) * | 2000-02-17 | 2004-10-12 | Lucent Technologies Inc. | Automatic generation and regeneration of a covering test case set from a model |
CN102323906A (zh) * | 2011-09-08 | 2012-01-18 | 哈尔滨工程大学 | 一种基于遗传算法的mc/dc测试数据自动生成方法 |
CN103593287A (zh) * | 2013-10-30 | 2014-02-19 | 北京信息控制研究所 | 一种基于遗传算法的数据流测试用例自动生成方法 |
CN107704381A (zh) * | 2017-08-31 | 2018-02-16 | 电子科技大学 | 一种两两组合的软件测试用例生成方法 |
Non-Patent Citations (1)
Title |
---|
"基于UML合并状态图的测试用例生成";庄俨;《中国优秀博硕士学位论文全文数据库(硕士)》;20111015(第10期);第1-3、25-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109902007A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3611799A1 (en) | Array element arrangement method for l-type array antenna based on inheritance of acquired characteristics | |
CN107229972A (zh) | 一种基于拉马克获得性遗传原理的全局优化、搜索和机器学习方法 | |
CN110082136B (zh) | 基于云遗传算法优化支持向量机的旋转机械故障诊断方法 | |
CN110110434B (zh) | 一种概率潮流深度神经网络计算的初始化方法 | |
CN114064453B (zh) | 基于聚类和进化算法的软件测试用例自动生成方法 | |
CN107368707B (zh) | 基于us-elm的基因芯片表达数据分析系统及方法 | |
CN109902007B (zh) | 一种基于点染色模型的测试用例生成方法 | |
CN111709526A (zh) | 一种基于多因子迁移学习的多模多目标演化算法 | |
CN105024645A (zh) | 一种基于矩阵进化的光伏阵列故障定位方法 | |
Sipper et al. | Computation in artificially evolved, non-uniform cellular automata | |
CN106919504B (zh) | 一种基于ga算法的测试数据进化生成方法 | |
CN110222816B (zh) | 深度学习模型的建立方法、图像处理方法及装置 | |
Peng et al. | Memetic differential evolution with an improved contraction criterion | |
CN111126560A (zh) | 一种基于云遗传算法优化bp神经网络的方法 | |
CN104281917A (zh) | 基于自适应遗传和克隆选择算法的模糊作业车间调度方法 | |
Ripon et al. | Evolutionary multi-objective clustering for overlapping clusters detection | |
CN106372726B (zh) | 一种基于gasa的mimo雷达正交编码信号优化方法 | |
CN109035258B (zh) | 一种基于有向交叉遗传算法和二维最大熵阈值分割算法的图像分割方法 | |
CN107507157B (zh) | 一种改进的图像增强方法 | |
Manfrini et al. | A novel efficient mutation for evolutionary design of combinational logic circuits | |
CN110647994A (zh) | 一种基于改进变异算子遗传算法的tsp优化方法 | |
CN113128071B (zh) | 一种含光伏发电的发电系统可靠性评估方法 | |
CN104021563B (zh) | 基于多目标模糊聚类和反对学习的噪声图像分割方法 | |
CN112600208A (zh) | 一种区域分布式能源系统的多能流潮流计算方法及系统 | |
CN111260077A (zh) | 一种确定业务处理模型超参数的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Shen Yue Inventor after: Peng Mao Inventor after: Li Hongbo Inventor before: Shen Yue Inventor before: Li Hongbo Inventor before: Peng Mao |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |