CN103593287B - 一种基于遗传算法的数据流测试用例自动生成方法 - Google Patents

一种基于遗传算法的数据流测试用例自动生成方法 Download PDF

Info

Publication number
CN103593287B
CN103593287B CN201310524293.9A CN201310524293A CN103593287B CN 103593287 B CN103593287 B CN 103593287B CN 201310524293 A CN201310524293 A CN 201310524293A CN 103593287 B CN103593287 B CN 103593287B
Authority
CN
China
Prior art keywords
variable
program
currentpop
individuality
population
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
Application number
CN201310524293.9A
Other languages
English (en)
Other versions
CN103593287A (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.)
China Academy of Aerospace Systems Science and Engineering
Original Assignee
Beijing Information Is Controlled Research Institute
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 Beijing Information Is Controlled Research Institute filed Critical Beijing Information Is Controlled Research Institute
Priority to CN201310524293.9A priority Critical patent/CN103593287B/zh
Publication of CN103593287A publication Critical patent/CN103593287A/zh
Application granted granted Critical
Publication of CN103593287B publication Critical patent/CN103593287B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明公开了一种基于遗传算法的数据流测试用例自动生成方法。目前基于遗传算法的数据流测试用例自动生成技术中,遗传算法的交叉、变异点随机选取在个体基因中的任意位置,产生优良基因的同时也存在破坏已有优良基因的可能;子代种群的个体最大适应度值无论是否大于父代的个体最大适应度值,都向下继续遗传,延长了迭代过程。本发明在计算适应度函数时找到不满足目标路径的具体分支,利用该分支的结构信息约束遗传算法交叉、变异操作的范围,同时通过比较子代与父代种群中个体的最大适应度值,抛弃那些低于父代适应度值的子代,从而确保了优良基因的传递,降低了迭代次数,提高了计算效率。

Description

一种基于遗传算法的数据流测试用例自动生成方法
技术领域
本发明涉及一种测试用例自动生成方法,尤其涉及一种基于遗传算法的数据流测试用例自动生成方法,属于软件结构测试技术。
背景技术
数据流测试是一种基于代码的白盒测试技术,使用程序中的数据流关系来指导测试者选取测试用例。即可以选择一定的测试用例,使程序按照某个变量的定义-使用路径执行,通过检查执行结果是否与预期的相符来发现程序的错误。相对控制流,基于数据流的软件测试考察了每个数据的流向,对程序的执行更深入,更有利于对代码的测试。
测试用例生成是软件测试中的关键环节,其实现对于软件测试过程的自动化具有重要意义。因此,随着数据流测试技术的深入应用,研究面向数据流的测试用例自动生成方法十分必要。大量研究表明,遗传算法采用概率化的搜索方式,具有全局搜索优化能力强,能自学习、自适应,在测试用例自动生成中取得了较好的效果。文献《基于数据流分析的测试用例自动生成技术》、《基于数据流的测试数据自动生成技术研究》将遗传算法与数据流技术相结合,依据数据流信息对测试用例进行评价,实现测试用例的自动生成。但是目前基于遗传算法的数据流测试用例自动生成技术存在如下问题:遗传算法在进行交叉、变异操作时,交叉、变异点可能选取在个体基因中的任意位置,交叉、变异操作产生优良基因的同时也存在破坏已有优良基因的可能;在迭代过程中,没有对子代与父代种群中个体的最大适应度值进行比较,导致无论子代是否优于父代,都向下逐代遗传。这些问题导致在生成测试用例时,迭代次数多,算法效率低。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供一种基于遗传算法的数据流测试用例自动生成方法,本发明根据被测程序的结构信息约束遗传算法交叉、变异操作的范围,同时在迭代过程中抛弃种群最大适应度函数值不大于父代种群的子代,从而确保了优良基因的传递,降低了迭代次数,提高了算法效率。
本发明的技术方案是:一种基于遗传算法的数据流测试用例自动生成方法,步骤如下:
(1)针对被测程序P中的一个定义使用对(def,use),找出由入口节点n1开始并且经过定义节点def的使用节点use的支配路径domdef(n1,use);
(2)根据设定的遗传算法参数和输入变量的取值范围、精度,随机生成初始种群InitPop,并赋值给当前种群CurrentPop,即CurrentPop=InitPop,同时将CurrentPop赋值给父代种群ParentPop,即ParentPop=CurrentPop;
(3)将当前种群CurrentPop中的每个个体输入被测程序P,检查实际路径pa对支配路径domdef(n1,use)的覆盖程度;
(4)若当前种群CurrentPop中的所有个体执行完后,domdef(n1,use)中仍有节点没有被覆盖,且当前遗传代数没有达到设定的最大遗传代数,则执行(5)-(7),否则执行(8);
(5)计算当前种群CurrentPop中每个个体的适应度函数值,将其中最大值赋值给当前种群CurrentPop中个体的最大适应度值fmax_cur,当CurrentPop种群中个体的最大适应度值fmax_cur不大于父代种群中个体的最大适应度值fmax_old时,抛弃当前种群,将父代种群再赋值给CurrentPop,即CurrentPop=ParentPop,其中fmax_old初始值为0,然后执行(6);当CurrentPop种群中个体的最大适应度值fmax_cur大于父代种群中个体的最大适应度值fmax_old时,更新父代种群中个体的最大适应度值,即fmax_old=fmax_cur,然后执行(6);
(6)依据适应度函数值,根据程序结构信息对当前种群CurrentPop利用遗传算法进行选择、交叉和变异操作得到新的种群NewPop;
(7)将当前种群CurrentPop赋值给父代种群的副本ParentPop,即ParentPop=CurrentPop,将新种群NewPop赋值给当前种群CurrentPop,CurrentPop=NewPop,重复步骤(3)-(4);
(8)若在最大遗传代数之内找到了覆盖domdef(n1,use)中所有节点的测试用例,则输出该符合要求的测试用例;否则返回步骤(2)重新设定遗传算法参数,直到生成符合要求的测试用例。
所述步骤(1)中找出支配路径domdef(n1,use)的方法为:
domdef(n1,use)=dom(n1,def)∪ dom(def,use)
其中,dom(n1,def)表示由入口节点n1到定义节点def所必须经过的节点组成的路径,dom(def,use)表示由定义节点def到使用节点use所必须经过的节点组成的路径。
所述步骤(5)中计算个体适应度函数值的公式为:
f = L s m
其中,m表示支配路径domdef(n1,use)的长度,Ls为程序实际执行路径pa从入口点n1开始覆盖支配路径domdef(n1,use)的连续路径长度。
所述步骤(6)中根据程序结构信息对当前种群CurrentPop利用遗传算法进行选择、交叉和变异操作的方法为:
(4.1)首先进行选择操作:种群中每个个体进入下一代的概率等于其适应度值与整个种群中个体适应度值和的比值,采用优先级随机概率选择的方式选择M个适应度好的个体,其中M≥2;
(4.2)对选中的个体进行分组:按照适应度值对选中的个体进行分组,具有相同适应度值的个体被分在同一组里,同组个体拥有相同的“第一个不满足目标路径的分支节点”C1st,即以同组个体作为输入测试被测程序时,程序执行路径将在同一分支节点处偏离目标路径,提取与该分支节点相关的输入变量作为与该组个体相关的输入变量,约束后续交叉变异的范围;
(4.3)对分组后的个体进行交叉操作:交叉操作在同组个体之间进行,对提取出的与该组个体相关的输入变量所对应的数据位进行多点交叉,其他输入变量直接赋值给子代;
根据组内个体数目,分两种情况进行交叉操作:
1)组内个体大于1时,对相邻的两个个体进行交叉;
2)组内只有一个个体时,通过复制个体的方式来完成交叉操作;
(4.4)对交叉操作后的个体进行变异操作:对交叉操作生成的子代个体,随机从每个需要修改的输入变量所对应的数据位中选取一个或多个数据位进行修改,形成新的个体。
所述步骤(4.2)中提取与某分支节点相关的输入变量的步骤为:
(a)提取分支表达式中运算符号左右两边涉及到的所有变量,将其中的输入变量加入到R输入变量集合中,即R输入变量={R输入变量1,R输入变量2,…,R输入变量n},将程序变量加入到R程序变量集合中,即R程序变量={R程序变量1,R程序变量2,…,R程序变量n},n∈[1,N],N为自然数;
(b)对每个程序变量,从该分支表达式向前逐条语句回溯扫描,若扫描到该程序变量的赋值语句(该程序变量位于赋值号左边),则赋值号右边的变量即为程序变量的相关变量;
(c)如果这些相关变量都为输入变量,则针对该程序变量的扫描停止,将其相关的输入变量加入到R输入变量集合中,如果这些变量中还有程序变量,则继续执行(b)和(c),直到这些变量中没有程序变量为止;
(d)对R程序变量集合中的所有变量执行(b)和(c),从而找到与每一个程序变量相关的输入变量,R输入变量集合中所有的变量即为与该分支相关的所有输入变量。
本发明与现有技术相比具有如下有益效果:
(1)目前遗传算法的交叉、变异点可能选取在个体基因中的任意位置,产生优良基因的同时也存在破坏已有优良基因的可能。本发明在计算适应度函数时找到不满足目标路径的具体分支,利用该分支的结构信息约束遗传算法交叉、变异操作的范围,从而确保了优良基因的传递,提高了算法效率;
(2)目前基于遗传算法的数据流测试用例自动生成技术没有对迭代过程中子代与父代种群中个体的最大适应度值进行比较,即使子代适应度值低于父代,也仍然向下继续遗传,本发明比较子代与父代的最大适应度值,只有子代适应度值大于父代才继续向下遗传,否则抛弃子代,由父代再重新生成新的子代,从而降低了迭代次数,提高了效率。
附图说明
图1为本发明方法流程图;
图2为某程序流程图。
具体实施方式
如图1所示,本发明提供了一种基于遗传算法的数据流测试用例自动生成方法,步骤如下:
(1)针对被测程序P中的一个定义使用对(def,use),找出由入口节点n1开始并且经过定义节点def的使用节点use的支配路径domdef(n1,use);
domdef(n1,use)=dom(n1,def)∪ dom(def,use)
其中,dom(n1,def)表示由入口节点n1到定义节点def所必须经过的节点组成的路径,dom(def,use)表示由定义节点def到使用节点use所必须经过的节点组成的路径;
(2)根据设定的遗传算法参数和输入变量的取值范围、精度,随机生成初始种群InitPop,并赋值给当前种群CurrentPop,即CurrentPop=InitPop,同时将CurrentPop赋值给父代种群ParentPop,即ParentPop=CurrentPop;
(3)将当前种群CurrentPop中的每个个体输入被测程序P,检查实际路径pa对支配路径domdef(n1,use)的覆盖程度;
(4)若当前种群CurrentPop中的所有个体执行完后,domdef(n1,use)中仍有节点没有被覆盖,且当前遗传代数没有达到设定的最大遗传代数,则执行(5)-(7),否则执行(8);
(5)计算当前种群CurrentPop中每个个体的适应度函数值,将其中最大值赋值给当前种群CurrentPop中个体的最大适应度值fmax_cur,当CurrentPop种群中个体的最大适应度值fmax_cur不大于父代种群中个体的最大适应度值fmax_old时,抛弃当前种群,将父代种群再赋值给CurrentPop,即CurrentPop=ParentPop,其中fmax_old初始值为0,然后执行(6);当CurrentPop种群中个体的最大适应度值fmax_cur大于父代种群中个体的最大适应度值fmax_old时,更新父代种群中个体的最大适应度值,即fmax_old=fmax_cur,然后执行(6);
计算个体适应度函数值的公式为:
f = L s m
其中,m表示支配路径domdef(n1,use)的长度,Ls为程序实际执行路径pa从入口点n1开始覆盖支配路径domdef(n1,use)的连续路径长度;
(6)依据适应度函数值,根据程序结构信息对当前种群CurrentPop利用遗传算法进行选择、交叉和变异操作得到新的种群NewPop;
根据程序结构信息对当前种群CurrentPop利用遗传算法进行选择、交叉和变异操作的方法为:
(4.1)首先进行选择操作:种群中每个个体进入下一代的概率等于其适应度值与整个种群中个体适应度值和的比值,采用优先级随机概率选择的方式选择M个适应度好的个体,其中M≥2;
(4.2)对选中的个体进行分组:按照适应度值对选中的个体进行分组,具有相同适应度值的个体被分在同一组里,同组个体拥有相同的“第一个不满足目标路径的分支节点”C1st,即以同组个体作为输入测试被测程序时,程序执行路径将在同一分支节点处偏离目标路径,提取与该分支节点相关的输入变量作为与该组个体相关的输入变量,约束后续交叉变异的范围;
(4.3)对分组后的个体进行交叉操作:交叉操作在同组个体之间进行,对提取出的与该组个体相关的输入变量所对应的数据位进行多点交叉,其他输入变量直接赋值给子代;
根据组内个体数目,分两种情况进行交叉操作:
1)组内个体大于1时,对相邻的两个个体进行交叉;
2)组内只有一个个体时,通过复制个体的方式来完成交叉操作;
(4.4)对交叉操作后的个体进行变异操作:对交叉操作生成的子代个体,随机从每个需要修改的输入变量所对应的数据位中选取一个或多个数据位进行修改,形成新的个体。
步骤(4.2)中提取与某分支节点相关的输入变量的步骤为:
(a)提取分支表达式中运算符号左右两边涉及到的所有变量,将其中的输入变量加入到R输入变量集合中,即R输入变量={R输入变量1,R输入变量2,…,R输入变量n},将程序变量加入到R程序变量集合中,即R程序变量={R程序变量1,R程序变量2,…,R程序变量n},n∈[1,N],N为自然数;
(b)对每个程序变量,从该分支表达式向前逐条语句回溯扫描,若扫描到该程序变量的赋值语句(该程序变量位于赋值号左边),则赋值号右边的变量即为程序变量的相关变量;
(c)如果这些相关变量都为输入变量,则针对该程序变量的扫描停止,将其相关的输入变量加入到R输入变量集合中,如果这些变量中还有程序变量,则继续执行(b)和(c),直到这些变量中没有程序变量为止;
(d)对R程序变量集合中的所有变量执行(b)和(c),从而找到与每一个程序变量相关的输入变量,R输入变量集合中所有的变量即为与该分支相关的所有输入变量。
(7)将当前种群CurrentPop赋值给父代种群ParentPop,即ParentPop=CurrentPop,将新种群NewPop赋值给当前种群CurrentPop,CurrentPop=NewPop,重复步骤(3)-(4);
(8)若在最大遗传代数之内找到了覆盖domdef(n1,use)中所有节点的测试用例,则输出该符合要求的测试用例;否则返回步骤(2)重新设定遗传算法参数,直到生成符合要求的测试用例。
图2所示为某程序的流程图,以其中x的定义-使用对(4,10)为例,其支配路径dom4(1,10)为1,2,3,4,6,7,8,10。
设置遗传算法的参数,种群大小为3,最大遗传代数为10,选择方法为优先级随机概率选择方法,设变量a∈[0,7],b∈[0,15],均为整数,精度为零,变量a的取值范围可以分割为(7-0)*100共7个相同大小的区间,22<7<23,可以用3位二进制串表示变量a,变量b的取值范围可以分割为(15-0)*100共15个相同大小的区间,23<15<24,可以用4位二进制串表示变量b,然后随机生成初始种群InitPop,其中tc1为(2,8),其二进制编码为0101000,前3位表示变量a,后4位表示变量b,tc2为(3,11),其二进制编码为0111011,tc3为(5,12),其二进制编码为1011100。
1)tc1经过的路径为1,2,3,5,6,7,8,9。其适应度值f(4,10,tc1)=3/8=0.375。
2)tc2经过的路径为1,2,3,4,6,7,11。其适应度值f(4,10,tc2)=5/8=0.625。
3)tc3经过的路径为1,2,3,4,6,7,11。其适应度值f(4,10,tc3)=5/8=0.625。
可以看出f(4,10,tc3)=f(4,10,tc2)>f(4,10,tc1),tc3和tc2覆盖了节点7,但未覆盖节点8,节点7与节点8之间的第一个分支节点为节点7,即tc3和tc2均在分支节点7偏离了支配路径,因此,选择tc3和tc2为同一组,提取分支节点涉及到的输入变量,由于分支节点7仅涉及程序变量temp,经过回溯扫描得到程序变量temp与输入变量a、b相关,因此,通过交叉和变异对变量a、b进行调整,即可以对二进制编码的所有七位都可以进行调整,得到tc3和tc2的下一代测试用例,本例中调整的步骤为:
(1)输入数据tc2为0111011,tc3为1011100,前三位中选择第一位、第二位进行交叉,tc2变为1011011,tc3变为0111100;
(2)后4位中选择第三位、第四位进行交叉,tc2变为1011000,tc3变为0111111;
(3)对tc2的第1位,第2位,第4位,第5位进行变异,tc2变为0110100;
(4)对tc3的第1位,第3位,第5位,第6位进行变异,tc3变为1101001。
对tc1进行变异操作,tc1覆盖了节点3,但未覆盖节点4,节点3与节点4之间的第一个分支节点为节点3,即tc1在分支节点3偏离了支配路径,由于分支节点3涉及输入变量a,因此,对变量a进行变异调整,即对tc1对应的二进制编码的前三位进行调整,得到tc1的第二代测试用例,如对tc1的第3位进行变异,tc1变为0111000。
第二代测试用例中,tc1为(3,8),tc2为(3,4),tc3为(6,9)。
1)tc1经过的路径为1,2,3,4,6,7,8,9。其适应度值f(4,10,tc1)=7/8=0.875。
2)tc2经过的路径为1,2,3,4,6,7,8,9。其适应度值f(4,10,tc2)=7/8=0.875。
3)tc3经过的路径:1,2,3,4,6,7,8,9。其适应度值f(4,10,tc3)=7/8=0.875。
可以看出f(4,10,tc3)=f(4,10,tc2)=f(4,10,tc1),种群个体适应度均比上一代高,tc1、tc2和tc3分在同一组,选择tc3和tc2进行多点交叉,tc2和tc1进行多点交叉。经过分析,tc1、tc2和tc3在分支节点8偏离了支配路径,而分支节点8与输入变量a、b相关,因此,在交叉变异操作时对变量a、b进行调整,得到tc1、tc2、tc3的第三代测试用例。
第三代测试用例中,tc1为(6,4),tc2为(3,2),tc3为(5,2)。
1)tc1经过的路径为1,2,3,5,6,7,8,10。其适应度值f(4,10,tc1)=3/8=0.375
2)tc2经过的路径为1,2,3,4,6,7,8,10。其适应度值f(4,10,tc2)=8/8=1.0
3)tc3经过的路径为1,2,3,4,6,7,8,10。其适应度值f(4,10,tc3)=8/8=1.0
可以看出f(4,10,tc3)=f(4,10,tc2)>f(4,10,tc1),种群个体适应度均比上一代高,tc3、tc2都覆盖了变量x的定义节点4和使用节点10,这两个测试用例均满足测试需求。即(3,2)和(5,2)为符合条件的测试用例。从总体上来看,每一代个体的最高适应度值都比上一代高,这也说明了遗传算法向最优个体收敛的过程。
本发明未详细描述内容为本领域技术人员公知技术。

Claims (4)

1.一种基于遗传算法的数据流测试用例自动生成方法,其特征在于步骤如下:
(1)针对被测程序P中的一个定义使用对(def,use),找出由入口节点n1开始并且经过定义节点def的使用节点use的支配路径domdef(n1,use);
找出支配路径domdef(n1,use)的方法为:
domdef(n1,use)=dom(n1,def)∪ dom(def,use)
其中,dom(n1,def)表示由入口节点n1到定义节点def所必须经过的节点组成的路径,dom(def,use)表示由定义节点def到使用节点use所必须经过的节点组成的路径;
(2)根据设定的遗传算法参数和输入变量的取值范围、精度,随机生成初始种群InitPop,并赋值给当前种群CurrentPop,即CurrentPop=InitPop,同时将CurrentPop赋值给父代种群ParentPop,即ParentPop=CurrentPop;
(3)将当前种群CurrentPop中的每个个体输入被测程序P,检查实际路径pa对支配路径domdef(n1,use)的覆盖程度;
(4)若当前种群CurrentPop中的所有个体执行完后,domdef(n1,use)中仍有节点没有被覆盖,且当前遗传代数没有达到设定的最大遗传代数,则执行(5)-(7),否则执行(8);
(5)计算当前种群CurrentPop中每个个体的适应度函数值,将其中最大值赋值给当前种群CurrentPop中个体的最大适应度值fmax_cur,当CurrentPop种群中个体的最大适应度值fmax_cur不大于父代种群中个体的最大适应度值fmax_old时,抛弃当前种群,将父代种群再赋值给CurrentPop,即CurrentPop=ParentPop,其中fmax_old初始值为0,然后执行(6);当CurrentPop种群中个体的最大适应度值fmax_cur大于父代种群中个体的最大适应度值fmax_old时,更新父代种群中个体的最大适应度值,即fmax_old=fmax_cur,然后执行(6);
(6)依据适应度函数值,根据程序结构信息对当前种群CurrentPop利用遗传算法进行选择、交叉和变异操作得到新的种群NewPop;
(7)将当前种群CurrentPop赋值给父代种群ParentPop,即ParentPop=CurrentPop,将新种群NewPop赋值给当前种群CurrentPop,即CurrentPop=NewPop,重复步骤(3)-(4);
(8)若在最大遗传代数之内找到了覆盖domdef(n1,use)中所有节点的测试用例,则输出该符合要求的测试用例;否则返回步骤(2)重新设定遗传算法参数,直到生成符合要求的测试用例。
2.根据权利要求1所述的一种基于遗传算法的数据流测试用例自动生成方法,其特征在于:所述步骤(5)中计算个体适应度函数值的公式为:
f = L s m
其中,m表示支配路径domdef(n1,use)的长度,Ls为程序实际执行路径pa从入口点n1开始覆盖支配路径domdef(n1,use)的连续路径长度。
3.根据权利要求1所述的一种基于遗传算法的数据流测试用例自动生成方法,其特征在于:所述步骤(6)中根据程序结构信息对当前种群CurrentPop利用遗传算法进行选择、交叉和变异操作的方法为:
(4.1)首先进行选择操作:种群中每个个体进入下一代的概率等于其适应度值与整个种群中个体适应度值和的比值,采用优先级随机概率选择的方式选择M个适应度好的个体,其中M≥2;
(4.2)对选中的个体进行分组:按照适应度值对选中的个体进行分组,具有相同适应度值的个体被分在同一组里,同组个体拥有相同的“第一个不满足目标路径的分支节点”C1st,即以同组个体作为输入测试被测程序时,程序执行路径将在同一分支节点处偏离目标路径,提取与该分支节点相关的输入变量作为与该组个体相关的输入变量,约束后续交叉变异的范围;
(4.3)对分组后的个体进行交叉操作:交叉操作在同组个体之间进行,对提取出的与该组个体相关的输入变量所对应的数据位进行多点交叉,其他输入变量直接赋值给子代;
根据组内个体数目,分两种情况进行交叉操作:
1)组内个体大于1时,对相邻的两个个体进行交叉;
2)组内只有一个个体时,通过复制个体的方式来完成交叉操作;
(4.4)对交叉操作后的个体进行变异操作:对交叉操作生成的子代个体,随机从每个需要修改的输入变量所对应的数据位中选取一个或多个数据位进行修改,形成新的个体。
4.根据权利要求3所述的一种基于遗传算法的数据流测试用例自动生成方法,其特征在于:所述步骤(4.2)中提取与某分支节点相关的输入变量的步骤为:
(a)提取分支表达式中运算符号左右两边涉及到的所有变量,将其中的输入变量加入到R输入变量集合中,即R输入变量={R输入变量1,R输入变量2,L,R输入变量n},将程序变量加入到R程序变量集合中,即R程序变量={R程序变量1,R程序变量2,L,R程序变量n},n∈[1,N],N为自然数;
(b)对每个程序变量,从该分支表达式向前逐条语句回溯扫描,若扫描到该程序变量的赋值语句(该程序变量位于赋值号左边),则赋值号右边的变量即为程序变量的相关变量;
(c)如果这些相关变量都为输入变量,则针对该程序变量的扫描停止,将其相关的输入变量加入到R输入变量集合中,如果这些变量中还有程序变量,则继续执行(b)和(c),直到这些变量中没有程序变量为止;
(d)对R程序变量集合中的所有变量执行(b)和(c),从而找到与每一个程序变量相关的输入变量,R输入变量集合中所有的变量即为与该分支相关的所有输入变量。
CN201310524293.9A 2013-10-30 2013-10-30 一种基于遗传算法的数据流测试用例自动生成方法 Active CN103593287B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310524293.9A CN103593287B (zh) 2013-10-30 2013-10-30 一种基于遗传算法的数据流测试用例自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310524293.9A CN103593287B (zh) 2013-10-30 2013-10-30 一种基于遗传算法的数据流测试用例自动生成方法

Publications (2)

Publication Number Publication Date
CN103593287A CN103593287A (zh) 2014-02-19
CN103593287B true CN103593287B (zh) 2016-08-17

Family

ID=50083438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310524293.9A Active CN103593287B (zh) 2013-10-30 2013-10-30 一种基于遗传算法的数据流测试用例自动生成方法

Country Status (1)

Country Link
CN (1) CN103593287B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268077A (zh) * 2014-09-23 2015-01-07 湖州师范学院 基于混沌遗传算法的测试用例集约简算法
CN104698365B (zh) * 2015-03-23 2017-10-31 电子科技大学 基于分组编码遗传算法的不可靠测试优选方法
CN105005531B (zh) * 2015-07-27 2017-09-12 昆明理工大学 一种基于查错率的测试用例选择方法
CN106445821A (zh) * 2016-09-23 2017-02-22 郑州云海信息技术有限公司 一种基于遗传算法实现测试用例自动生成的方法
CN107729241B (zh) * 2017-10-12 2020-11-03 中国矿业大学 一种基于变异体分组的软件变异测试数据进化生成方法
CN109145411B (zh) * 2018-08-02 2023-04-18 浙江工业大学 一种基于内嵌并行结构遗传算法的关键电路单元定位方法
CN109376075B (zh) * 2018-09-19 2022-04-22 奇安信科技集团股份有限公司 一种生成测试对象最优测试覆盖路径的处理方法及装置
CN109902007B (zh) * 2019-02-21 2022-04-29 南京信息工程大学 一种基于点染色模型的测试用例生成方法
CN109918304B (zh) * 2019-03-06 2022-04-12 牡丹江师范学院 一种快速高路径覆盖率测试用例生成方法
CN110096439B (zh) * 2019-04-26 2020-07-14 河海大学 一种面向solidity语言的测试用例生成方法
CN110377511B (zh) * 2019-07-11 2021-04-06 河海大学 一种面向数据流的测试用例生成方法
CN112699051B (zh) * 2020-08-03 2022-04-01 徐州工程学院 一种基于相关输入变量的变异体分组方法
CN112052166B (zh) * 2020-08-26 2021-05-18 河海大学 一种基于支配关系的测试用例生成方法与装置
CN116610756B (zh) * 2023-07-17 2024-03-08 山东浪潮数据库技术有限公司 一种分布式数据库自适应副本选择方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853202A (zh) * 2010-05-28 2010-10-06 浙江大学 一种基于遗传算法和带权匹配算法的测试案例自动生成方法
CN102323906A (zh) * 2011-09-08 2012-01-18 哈尔滨工程大学 一种基于遗传算法的mc/dc测试数据自动生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094161A1 (en) * 2005-07-27 2007-04-26 Stmicroelectronics S.R.L. Hardware device for genetic algorithms

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853202A (zh) * 2010-05-28 2010-10-06 浙江大学 一种基于遗传算法和带权匹配算法的测试案例自动生成方法
CN102323906A (zh) * 2011-09-08 2012-01-18 哈尔滨工程大学 一种基于遗传算法的mc/dc测试数据自动生成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于数据流的测试数据自动生成技术研究;陈翔宇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120415(第04期);第20-21,33-36页 *

Also Published As

Publication number Publication date
CN103593287A (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
CN103593287B (zh) 一种基于遗传算法的数据流测试用例自动生成方法
CN104156584B (zh) 多目标优化差分进化算法的传感器目标分配方法及系统
CN106503368B (zh) 一种基于故障机理相关的多状态系统可靠性建模方法
CN103324796B (zh) 一种大规模集成电路设计中的绕障直角斯坦纳树构造方法
CN105825270A (zh) 利用遗传算法针对题库中的试题进行自动组卷的方法
CN102323906A (zh) 一种基于遗传算法的mc/dc测试数据自动生成方法
CN104699899A (zh) 一种船舶管路路径优化设计方法
CN103559129B (zh) 基于遗传算法的统计回归测试数据生成方法
CN105005823B (zh) 一种基于遗传算法的船舶分支管路路径规划方法
CN102331966A (zh) 面向路径的软件测试数据进化生成系统
CN110288048A (zh) 一种svm有向无环图的海底管道风险评估方法
CN111709244A (zh) 一种用于矛盾纠纷事件因果关系识别的深度学习方法
CN105704025B (zh) 基于混沌搜索和人工免疫算法的路由优化方法
JP4857214B2 (ja) 交通信号制御パラメータ設計装置及び交通信号制御パラメータ生成方法
CN101853202B (zh) 一种基于遗传算法和带权匹配算法的测试案例自动生成方法
CN104898039A (zh) 基于故障传播概率模型的故障模式优选方法
CN108629474B (zh) 基于攻击图模型的流程安全评估方法
CN105528296B (zh) 一种面向对象软件的类簇测试方法
CN104615679A (zh) 一种基于人工免疫网络的多智能体数据挖掘方法
Carpenter Production-optimization strategy using a hybrid genetic algorithm
Kajornrit A comparative study of optimization methods for improving artificial neural network performance
CN106294127A (zh) 基于聚类的面向对象软件测试用例生成方法
Kato et al. An alife approach to modeling virtual cities
CN104123439B (zh) 基于遗传算法的电网系统连锁故障在线模拟方法及装置
CN105187310A (zh) 一种路径优化方法与系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20161019

Address after: 100048 Haidian District, Beijing Fu Cheng Road, No. 16

Patentee after: China Academy of Aerospace Systems Science and Engineering

Address before: 100048, Fu Cheng Road, Beijing, Haidian District, No. 14

Patentee before: Beijing information is controlled research institute