CN113742251B - 基于集合进化的软件测试路径生成方法及系统 - Google Patents

基于集合进化的软件测试路径生成方法及系统 Download PDF

Info

Publication number
CN113742251B
CN113742251B CN202111310698.3A CN202111310698A CN113742251B CN 113742251 B CN113742251 B CN 113742251B CN 202111310698 A CN202111310698 A CN 202111310698A CN 113742251 B CN113742251 B CN 113742251B
Authority
CN
China
Prior art keywords
evolution
path
node
individuals
fitness function
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
CN202111310698.3A
Other languages
English (en)
Other versions
CN113742251A (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.)
Shandong Jianzhu University
Original Assignee
Shandong Jianzhu University
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 Shandong Jianzhu University filed Critical Shandong Jianzhu University
Priority to CN202111310698.3A priority Critical patent/CN113742251B/zh
Publication of CN113742251A publication Critical patent/CN113742251A/zh
Application granted granted Critical
Publication of CN113742251B publication Critical patent/CN113742251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Genetics & Genomics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Physiology (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出了基于集合进化的软件测试路径生成方法及系统,包括如下步骤:根据设置的约减规则约减待测试程序的控制流图,并获取控制流图中的节点信息;根据节点信息初始化集合进化种群;以路径中相邻边数的占比构造集合进化适应度函数,并设置集合进化算子;根据适应度函数,基于遗传算法,采用集合进化的方法生成路径集合。该方法能够直接生成完整的程序路径集合,只需要运行一次程序即可获得全部路径,不再需要针对路径多次执行程序,提高了测试效率。

Description

基于集合进化的软件测试路径生成方法及系统
技术领域
本发明涉及特定计算模型的计算机系统相关技术领域,具体的说,是涉及基于集合进化的软件测试路径生成方法及系统,可用于程序路径测试,提高测试效率。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,并不必然构成在先技术。
软件测试是发现软件错误,衡量软件质量的重要手段。许多测试问题可以转化为路径覆盖问题。因此,进行路径测试的关键,是采用有针对性的理论和方法,自动产生合理有效的路径集,从而以该路径集为准则,生成满足覆盖要求的测试数据或者进行其他测试工作。
发明人发现,现有的路径生成方法存在各种问题:①将有限状态转换为扩展有限状态树,基于此产生路径,但只能根据测试要求选择求解的路径,不能够生成全部路径;②采用遗传算法生成路径,基于该方法生成的路径不能覆盖全部控制流图的边。③在使用其他优化算法生成路径时,只考虑了路径合理性一个条件,忽略了覆盖难度和代价等问题。
发明内容
本发明为了解决上述问题,提出了基于集合进化的软件测试路径生成方法及系统,能够直接生成完整的程序路径集合,提高测试效率。
为了实现上述目的,本发明采用如下技术方案:
一个或多个实施例提供了基于集合进化的软件测试路径生成方法,包括如下过程:
根据设置的约减规则约减待测试程序的控制流图,并获取控制流图中的节点信息;
根据节点信息初始化集合进化种群:以一个路径集合作为一个进化个体,以一条路径表示一条染色体;
以路径中相邻边数的占比构造集合进化适应度函数,针对路径的生成特点设置集合进化算子;
根据设置的适应度函数计算进化个体的适应度,基于遗传算法,采用集合进化的方法输出适应度最大的进化个体,作为软件测试的路径集合。
一个或多个实施例提供了基于集合进化的软件测试路径生成系统,包括采集装置、通信网络和测试终端,采集装置和测试终端通过通信网络建立连接;
采集装置:被配置为用于获取待测试软件的控制流图;
测试终端:被配置为用于执行上述的基于集合进化的软件测试路径生成方法的步骤。
与现有技术相比,本发明的有益效果为:
本发明采用集合进化方法生成软件测试的路径集合,不仅可以生成完整的测试路径集合,而且通过智能优化方法和集合进化思想与软件测试的融合,大大提高测试效率。
本发明附加方面的优点将在下面的描述中给出,或者将从下面的描述中变得明显。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的限定。
图1是本发明实施例1的路径生成方法流程图;
图2是本发明实施例1的集合进化遗传算法流程图;
图3是本发明实施例1的示例程序源代码;
图4是本发明实施例1的示例程序约减前的控制流图;
图5是本发明实施例1的示例程序约减后的控制流图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。需要说明的是,在不冲突的情况下,本发明中的各个实施例及实施例中的特征可以相互组合。下面将结合附图对实施例进行详细描述。
实施例1
在一个或多个实施方式公开的技术方案中,如图1所示,基于集合进化的软件测试路径生成方法,包括如下步骤:
步骤1、根据设置的约减规则约减待测试程序的控制流图,并获取控制流图中的节点信息;
步骤2、根据节点信息初始化集合进化种群;
步骤3、以路径中相邻边数的占比作为集合进化适应度函数,针对路径生成的特点设计特定的集合进化算子;
步骤4、根据设置的适应度函数计算进化个体的适应度,基于遗传算法,采用集合进化的方法输出适应度最大的进化个体,作为软件测试的路径集合。
本实施例采用集合进化方法生成软件测试的路径集合,能够生成完整的测试路径集合,提高测试效率。
步骤1中,约减待测试程序的控制流图,并获取控制流图中的节点信息,包括如下步骤:
步骤1.1构建程序控制流图;
控制流图是分析程序经常使用的一种抽象数据结构,能够很好地反映程序间的执行关系。
构建程序控制流图,具体的,针对程序源码进行分析,确定程序中包含的基本结构,依据三种基本结构构建程序控制流图。其中,所述程序的基本结构包括分支结构、顺序结构和循环结构。
步骤1.2约减控制流图;
根据约减规则对构建的控制流图进行简化,本实施例中,约减规则可以具体为:约减顺序结构,将顺序结构中串行执行的节点约减为一个节点表示;约减分支结构,如果两个分支中只含有单独一个节点则保持不变,否则按照顺序结构和循环结构的约减规则进行约减;约减循环结构,对于循环结构只考虑循环一次的情况,循环内如果只含有单独一个节点则保持不变,否则按照顺序结构和分支结构约减规则进行约减。
步骤1.3获取控制流图中节点信息;
其中,每个节点的节点信息包括对应的后续节点和兄弟节点的信息。根据约减后的控制流图,获取各个节点对应的后续节点和兄弟节点的信息,并存储在对应的集合当中,并确定控制流图的开始节点和结束节点信息。
步骤2中,根据节点信息初始化集合进化种群,具体的:
每个进化种群中包含多个进化个体,每个进化个体中包含多条染色体,其中每个集合进化个体代表一个路径集合,进化个体中的多条染色体表示多条路径。
种群中每个进化个体初始化过程为:
步骤2.1将一个路径集合作为一个进化个体,进化个体中的多条染色体表示多条路径;
步骤2.2采用顺序执行的节点来表示路径,并对每条路径以整数进行编码,设置种群中进化个体的规模不同,为每条路径添加开始节点和结束节点。
种群中个体的规模不同,即每个集合中包含的路径条数也不相同,可以在集合进化算法过程中,使得进化个体能够通过集合交叉操作改变。另外设置路径长度的不同,每个进化个体包含的染色体长度也不相同,保证了路径的多样性。
本实施例中,在初始化过程中,为每条路径添加开始节点和结束节点,能保证进化过程沿着正确的方向执行,能够更好的生成正确的路径。
步骤3中,构造集合进化适应度函数,具体为:
路径集合中一条染色体上相邻的边数在同一染色体上的总边数中的占比,即一条路径中相邻边的数量在该路径总边数的占比,通过染色体的节点编码和后续节点信息来确定路径中的相邻边,具体适应度函数
Figure 432769DEST_PATH_IMAGE001
公式如下:
Figure 889158DEST_PATH_IMAGE002
其中,
Figure 379045DEST_PATH_IMAGE003
是一条路径中包含的相邻边的个数,
Figure 706122DEST_PATH_IMAGE004
是一条路径中总共包含的边的个数。
集合进化每个进化个体的适应度函数值,为集合中该进化个体所有染色体适应度函数值的平均值。
当一个集合中的多条路径存在一些路径适应度为1,而另一些路径适应度达不到1的情况,将适应度达不到1的路径进行置0处理,进而将整个进化个体的适应度拉低处理,防止整个集合的路径陷入局部最优。
步骤3中,还包括设计集合进化算子:根据路径生成的特点改进集合进化的遗传算子。
采用集合进化生成路径,生成的路径不是单独一条路径,而是包含多条路径的路径集合,设计进化算子中需要考虑路径的多样性和单条路径的完整性,针对该特性设计基于集合进化的遗传算子,包括集合交叉算子、集合变异算子和集合育种算子。
(一)集合交叉算子:考虑不同个体之间的交叉以及个体内部的交叉,设置集合进化的交叉算子;具体的,首先进行不同进化个体之间的交叉,然后对交叉后产生的新个体执行个体内部的交叉。
集合之间的交叉操作,在本方法中一个路径集合中的所有路径就代表的是要求的解,进行集合间的交叉,就是交换两个集合中包含的染色体,即交换两个集合中的路径,也就是交换不同集合的解。
进化个体之间的交叉策略具体如下:
(1)对所有进化个体两两配对;
(2)根据设置的交叉概率cp判断配对的两个进化个体是否需要执行交叉操作,如果是,执行下一步,否则,结束;
(3)无论当前两个进化个体的规模是否相同,分别在两个个体上随机选择一个交叉点;
(4)将两进化个体从各自交叉点到末尾进行互换,通过交换染色体产生新的进化个体。
对于新产生的两个个体分别采用集合内部的交叉操作:
(1)在一个新进化个体(即新的路径集合)中,匹配两条染色体;
(2)根据交叉概率cp判断配对的两条染色体是否需要执行交叉操作,如果需要执行下一步,否则结束;
(3)随机选择一个交叉点,交换两条染色体交叉点后的基因,产生两条新的染色体。
(二)集合变异算子:识别需要变异的基因位置,将该位置上节点变异为其兄弟节点;
集合变异操作策略具体如下:
识别种群中的集合进化个体中每条染色体,如果染色体的适应度为1即为完整路径,不进行变异操作;否则,针对适应度不为1染色体执行下面的操作:
首先,针对染色体的每个基因位置分别产生一个0-1范围内的随机数,判断每个基因位置产生的随机数是否大于设置的变异概率mp,依据变异概率判断需要执行集合变异操作的基因位置;
然后,对于需要变异的基因位置,将位置上的节点变异为其兄弟节点,如果需要变异的节点不存在兄弟节点,那么不执行集合变异操作。
其中,具有同一父节点的节点称为兄弟节点。
本实施例设置的变异算子首先能够适应集合进化,并且能够更好的覆盖分支结构,保证路径的多样性,进一步保证了生成的路径集合的完整。
(三)集合育种算子:确定染色体的育种点位置,将该位置上插入该染色体上的节点,增加染色体的长度。
集合育种算子为:设计新的集合进化算子来扩展集合中的染色体进而生成不同长度的完整路径。集合育种算子的主要作用是在染色体中插入新的节点,直到它们组成完整的路径。
集合育种操作策略,具体如下:
(1)识别种群中的集合进化个体,对集合个体中的每条染色体进行识别,当集合中存在适应度为1的染色体,则为完整路径不进行育种操作;
(2)针对集合进化个体中的非完整路径的染色体,识别该路径顺序执行的缺口处,作为育种点的位置;
(3)识别育种点位置,确定该位置上的节点A,从节点A的后续节点中随机选择一个节点B;
(4)在节点A后面的位置插入节点B,使染色体长度增加1。
本实施例设置的育种算子,首先能够适应集合进化,针对路径生成设计的算子,通过后续节点的添加,路径中每个节点都是顺序执行的,促进路径沿着正确方向生成。
步骤4中,基于遗传算法,采用集合进化的方法生成路径集合,如图2所示,具体方法如下:
步骤4.1设定集合进化参数;
设定集合进化的遗传参数,包括给出集合进化种群规模、交叉、变异概率及最大迭代数等参数值。
步骤4.2根据设置的参数初始化集合进化种群;
根据步骤4.1中给出的种群规模,生成初代集合进化种群。
种群的初始化当中,采用了集合进化的思想,能够覆盖控制流图中的所有路径,能够使得生成的路径更加完整。
步骤4.3评估集合进化个体,并计算进化个体适应度函数值;
具体的进化个体适应度函数,具体为:
Figure 272363DEST_PATH_IMAGE005
其中,n是进化个体中的染色体数量,
Figure 950469DEST_PATH_IMAGE001
为第i条染色体的适应度函数值。
步骤4.4根据得到的适应度函数值,判断是否找到最优解,若找到,则终止算法,输出路径集合;否则,对种群进行集合遗传操作生成子代集合进化种群,执行步骤4.3。
具体的,判断找到最优解的方法为将适应度数值与设定的适应度比较,设定的适应度可以为1或者小于1的任意数值,当适应度值达到设定的适应度即为找到最优解。
其中,集合遗传操作包括集合变异操作、集合交叉操作和集合育种操作。
具体的,根据前述的集合变异操作策略、集合交叉操作策略和集合育种操作策略对应实施变异操作。
下面以一个具体的示例对上述的方法进行说明。
选择程序Triangle作为被测程序,该程序的功能是,求3个输入变量能否构成三角形,如果能构成三角形则判断三角形类型并输出构成的三角形面积,程序的输入为
Figure 509627DEST_PATH_IMAGE006
。该程序首先获得输入的三角形的三条边,判断三条边能否构成三角形,如果不能构成三角形,则结束程序,输出不能构成三角形;如果能构成三角形则输出该三角形的面积并进一步判断构成三角形的类型,最后输出构成的三角形类型。程序Triangle的代码如图3所示。
执行步骤1静态分析被测程序的源代码构建被测程序的控制流图,如图4所示。通过程序的控制流图,分析其中包含的程序的基本结构,按照控制流图的约减规则进行约减,而后获得约减后的控制流图,如图5所示。
基于新获得的控制流图获取各个节点的信息,得到各个节点的兄弟节点信息和后续节点信息并存储到对应的集合中去。以节点
Figure 222368DEST_PATH_IMAGE007
和节点
Figure 677620DEST_PATH_IMAGE008
为例,节点
Figure 843022DEST_PATH_IMAGE009
存在兄弟节点
Figure 691023DEST_PATH_IMAGE010
和后续节点
Figure 258271DEST_PATH_IMAGE011
;节点
Figure 884424DEST_PATH_IMAGE012
存在兄弟节点
Figure 802702DEST_PATH_IMAGE013
以及后续节点
Figure 438082DEST_PATH_IMAGE014
Figure 594257DEST_PATH_IMAGE015
根据步骤2,初始化集合进化种群以及路径集合,确定进化种群中包含的个体数,并且为每个进化个体分配合适规模,并为每个路径集合中的路径添加初始节点和结束节点。
在集合进化种群初始化的过程中为进化种群pop设置随机大小popsize,进化种群中含有popsize个进化个体,每个进化个体包含随机条染色体。假设种群包含3个个体,3个个体分别包含3、2和3条染色体,也就是3个集合分别包含3、2和3条路径。个体
Figure 407624DEST_PATH_IMAGE016
即路径集合存在3条路径,由图5得到开始节点和结束节点分别为
Figure 547618DEST_PATH_IMAGE017
Figure 986690DEST_PATH_IMAGE018
,那么初始化后的路径集合如下
Figure 262950DEST_PATH_IMAGE019
根据步骤3的集合进化的适应度函数计算路径集合中每条路径的适应值
Figure 496485DEST_PATH_IMAGE020
,最后获得路径集合的适应值
Figure 123776DEST_PATH_IMAGE021
。假设进化过程中,存在一个进化个体也就是一个路径集合含有三条路径:
Figure 848762DEST_PATH_IMAGE022
Figure 979529DEST_PATH_IMAGE023
Figure 383965DEST_PATH_IMAGE024
。那么按照公式计算每条路径的适应值分别为1、0.75和0.8,那么可以获得该路径集合的适应值为0.85。
根据步骤3,设计有针对性的集合交叉、集合变异和集合育种算子。首先进行集合交叉操作,选定的进行集合交叉的两个个体X1和X2,两个个体分别包含四条染色体,也就是四条路径,其中
Figure 232973DEST_PATH_IMAGE025
Figure 748268DEST_PATH_IMAGE026
。假设交叉点为2,那么交叉后的新个体为
Figure 999120DEST_PATH_IMAGE027
Figure 574458DEST_PATH_IMAGE028
。然后,执行集合内部的交叉操作,假设存在个体
Figure 910762DEST_PATH_IMAGE029
中进行交叉的路径分别为
Figure 980480DEST_PATH_IMAGE030
Figure 85839DEST_PATH_IMAGE031
,交叉点为3,那么交叉后的产生的两条新路径分别为
Figure 97658DEST_PATH_IMAGE032
Figure 655678DEST_PATH_IMAGE033
。然后进行集合变异操作,存在路径
Figure 778355DEST_PATH_IMAGE034
,此时为位置2和位置5上的基因发生变异,也就是节点
Figure 738220DEST_PATH_IMAGE035
和节点
Figure 655361DEST_PATH_IMAGE036
,由于节点
Figure 716989DEST_PATH_IMAGE037
不存在兄弟节点所以不进行变异,节点
Figure 377777DEST_PATH_IMAGE038
存在兄弟节点
Figure 192150DEST_PATH_IMAGE039
,那么可以变异为
Figure 545771DEST_PATH_IMAGE040
,这样变异完成后的路径为
Figure 78383DEST_PATH_IMAGE041
。最后进行集合育种操作,假设存在路径
Figure 808442DEST_PATH_IMAGE042
,进行育种操作为节点
Figure 477320DEST_PATH_IMAGE043
添加后续节点,从
Figure 752575DEST_PATH_IMAGE044
的后续节点中随机选择一个,假设选择的节点为
Figure 772484DEST_PATH_IMAGE045
,那么就在
Figure 775075DEST_PATH_IMAGE046
的位置后添加
Figure 564039DEST_PATH_IMAGE047
,这样就产生新的路径
Figure 259463DEST_PATH_IMAGE048
最终,设计合适的集合进化参数,根据集合进化适应度函数
Figure 766667DEST_PATH_IMAGE049
和集合进化算子,使用遗传算法生成路径集合{
Figure 586331DEST_PATH_IMAGE050
,
Figure 495382DEST_PATH_IMAGE051
,
Figure 96127DEST_PATH_IMAGE052
,
Figure 90628DEST_PATH_IMAGE053
,
Figure 435022DEST_PATH_IMAGE054
}。
为了说明效果进行了仿真实验,将本实施例采用所提方法生成路径集合与非集合进化方法、随机法两种算法进行比较。具体的,将个体数量设置为30,交叉概率为0.8,变异概率为0.1,使用三种方法运行示例程序,通过迭代次数、成功率和方法运行次数来比较,每种方法进行10次实验。示例程序有5条路径。
迭代次数指标为运行方法能够生成所有完整路径的迭代次数的平均值。
如集合进化方法运行一次得到的路径数为5,即生成了完整路径,运行一次的迭代次数为12;同样的实验,第二次也生成完整路径,迭代次数是10,迭代次数指标取两次的平均值就是11,进行10次实验同样取平均值更新该指标。随机法第一次运行一次输出一条路径,迭代次数为11,需要至少运行5次才能输出5条路径,如果中间有重复的路径需要继续运行更多的次数,输出一次完整路径获得的迭代次数就是每次运行的迭代次数的和。这样进行10次运行实验,每次实验到能够输出完整路径截止,取10次的迭代次数平均值,作为迭代次数指标。
方法运行次数指标,运行方法能够生成所有完整路径的运行次数的平均值。
实验中,集合进化方法每次运行都能生成所有的路径,10次实验都是1次,方法运行次数指标就是1,非集合进化方法和随机方法每次运行只能生成一条路径,而且有可能输出重复的路径,如随机方法第一次实验运行了8次输出了完整的路径,第一次实验的运行次数就是8,第二次运行了6次输出了完整的路径,第二次实验的运行次数就是6,两次运行的平均值为7;运行10次,求平均值,即为随机法的方法运行次数指标。
可以将成功率定义为:每次实验生成的不同路径数量对路径总数量的覆盖率的平均值。即不同方法每次实验得到的路径数量不同,如集合进化方法第一次实验即运行一次得到的路径数为5,覆盖率就是100%,随机法第一次得到的路径数为1,覆盖率就是1/5,即20%。
非集合进化方法和随机方法每次运行只能生成一条路径,给出的示例程序含有5条路径,为使得成功率的比较结果更具有说服力,对于成功率这一指标,集合进化方法每次实验只运行1次程序,其他两种方法运行5次程序。
表1 实验运行结果
Figure 198578DEST_PATH_IMAGE055
从表中可以看出集合进化的方法与非集合进化方法和随机方法相比在迭代次数和运行次数优势明显,这是由于集合进化方法按照提出的控制流图约减规则,约减掉多余的节点,这样就减少了路径生成的迭代次数并且只需一次运行便能生成全部路径,不需要为生成其他路径进行额外的运行迭代;对于方法运行次数来说,非集合进化的方法每次只能生成一条路径,并且生成的路径具有随机性,这就需要更多的去运行,进而使运行次数增加,而集合进化的方法只需要一次运行程序即可生成全部的路径。对于成功率来说,非集合进化的方法和随机法每次只能生成一条路径,且生成的路径随机性很大,生成的路径重复率高,这样便会大大拉低成功率。对于随机法,多次实验中未能够成功生成全部路径,因此迭代次数和方法运行次数没有数据。在方法的运行时间方面,集合进化方法运行时间较长,这是因为本方法的遗传操作是以集合的形式进行的,并且增加了集合进化特有的集合内部的交叉操作,相对于非集合进化的单条染色体进行交叉和变异操作,会消耗较多时间。
可见,上述示例中,生成的路径中包含了完整的每一条路径,能够覆盖全部流程图的边,路径完整;并且只需要运行一次程序即可获得全部路径,不再需要针对某条路径多次执行程序。
实施例2
基于实施例1,本实施例提供基于集合进化的软件测试路径生成系统,包括采集装置、通信网络和测试终端,采集装置和测试终端通过通信网络建立连接;
采集装置:被配置为用于获取待测试软件的控制流图;
也可以采用静态分析源代码,手动绘制代码的控制流图通过软件代码采集装置输入至测试终端,软件代码采集装置可以具体为电脑。
测试终端:被配置为用于实施例1所述的基于集合进化的软件测试路径生成方法的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (8)

1.基于集合进化的软件测试路径生成方法,其特征是,包括如下过程:
根据设置的约减规则约减待测试程序的控制流图,并获取控制流图中的节点信息;
根据节点信息初始化集合进化种群:以一个路径集合作为一个进化个体,以一条路径表示一条染色体;
以路径中相邻边数的占比构造集合进化适应度函数,针对路径的生成特点设置集合进化算子;
根据适应度函数计算进化个体的适应度,基于遗传算法,采用集合进化的方法输出适应度最大的进化个体,作为软件测试的路径集合;
根据节点信息初始化集合进化种群,具体的:初始化路径集合作为进化个体,进化个体中的染色体代表路径,用顺序执行的节点来表示路径,并对每条路径以整数进行编码,设置种群中进化个体的规模不同,为每条路径添加开始节点和结束节点;
集合进化每条染色体的适应度函数为:路径集合中一条染色体上相邻的边数在同一染色体上的总边数中的占比;
集合进化每个进化个体的适应度函数值为:集合中该进化个体所有染色体适应度函数值的平均值;
基于遗传算法,采用集合进化的方法生成路径集合,具体方法如下:
步骤1设定集合进化参数;
步骤2根据设置的参数初始化集合进化种群;
步骤3评估集合进化个体,并计算进化个体适应度函数值;
步骤4根据得到的适应度函数值,当适应度函数值达到设定的数值即找到最优解,若找到,则终止算法,输出路径集合;否则,对种群进行集合遗传操作生成子代集合进化种群,执行步骤3。
2.如权利要求1所述的基于集合进化的软件测试路径生成方法,其特征是,约减规则具体为:
约减顺序结构:将顺序结构中串行执行的节点约减为一个节点表示;
约减分支结构:如果两个分支中只含有单独一个节点则保持不变,否则按照顺序结构和循环结构的约减规则进行约减;
约减循环结构:循环次数设为一次,循环内如果只含有单独一个节点则保持不变,否则按照顺序结构和分支结构约的减规则进行约减。
3.如权利要求1所述的基于集合进化的软件测试路径生成方法,其特征是,集合进化每个进化个体的适应度函数值,具体为:将集合进化的适应度函数值达不到1的染色体的适应度函数值置零,计算进化个体所有染色体适应度函数值的平均值,作为进化个体的适应度函数值。
4.如权利要求1所述的基于集合进化的软件测试路径生成方法,其特征是:所述集合进化算子,包括集合交叉算子、集合变异算子和集合育种算子;
集合交叉算子:先进行不同进化个体之间的交叉,然后对交叉后产生的新个体执行个体内部的交叉;
集合变异算子:识别需要变异的基因位置,将该位置上节点变异为其兄弟节点,无兄弟节点保持不变;
集合育种算子:确定染色体的育种点位置,在染色体的该位置后插入当前节点的随机一个后续节点,增加染色体的长度。
5.如权利要求1所述的基于集合进化的软件测试路径生成方法,其特征是:集合遗传操作包括集合变异操作、集合交叉操作和集合育种操作;
进化个体之间的集合育种操作策略,具体的包括如下步骤:
识别种群中的集合进化个体,对集合个体中的每条染色体进行识别,当集合中存在适应度为1的染色体,则为完整路径不进行育种操作;
针对集合进化个体中的非完整路径的染色体,识别该路径顺序执行的缺口处,作为育种点的位置;
识别育种点位置,确定该位置上的节点A,从节点A的后续节点中随机选择一个节点B;
在节点A后面的位置插入节点B,使染色体长度增加1。
6.如权利要求5所述的基于集合进化的软件测试路径生成方法,其特征是:集合变异操作策略,具体的,针对适应度不为1的染色体执行下面的操作:
针对每个基因位置产生0-1范围内的随机数,判断每个基因位置产生的随机数是否大于设置的变异概率mp,依据变异概率判断需要执行集合变异操作的基因位置;
对于需要变异的基因位置,将位置上的节点变异为其兄弟节点,如果需要变异的节点不存在兄弟节点,那么不执行集合变异操作。
7.如权利要求1所述的基于集合进化的软件测试路径生成方法,其特征是:集合进化参数包括集合进化种群规模、交叉概率、变异概率及最大迭代数。
8.基于集合进化的软件测试路径生成系统,其特征是:包括采集装置、通信网络和测试终端,采集装置和测试终端通过通信网络建立连接;
采集装置:被配置为用于获取待测试软件的控制流图;
测试终端:被配置为用于执行权利要求1-7任一项所述的基于集合进化的软件测试路径生成方法的步骤。
CN202111310698.3A 2021-11-08 2021-11-08 基于集合进化的软件测试路径生成方法及系统 Active CN113742251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111310698.3A CN113742251B (zh) 2021-11-08 2021-11-08 基于集合进化的软件测试路径生成方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111310698.3A CN113742251B (zh) 2021-11-08 2021-11-08 基于集合进化的软件测试路径生成方法及系统

Publications (2)

Publication Number Publication Date
CN113742251A CN113742251A (zh) 2021-12-03
CN113742251B true CN113742251B (zh) 2022-01-28

Family

ID=78727704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111310698.3A Active CN113742251B (zh) 2021-11-08 2021-11-08 基于集合进化的软件测试路径生成方法及系统

Country Status (1)

Country Link
CN (1) CN113742251B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106502908A (zh) * 2016-11-07 2017-03-15 牡丹江师范学院 基于统计分析的可执行基础路径进化生成方法
CN107391385A (zh) * 2017-08-28 2017-11-24 北京航空航天大学 一种软件测试用例生成技术的构建方法
CN107590073A (zh) * 2017-08-30 2018-01-16 华南理工大学 基于路径覆盖软件测试的测试用例自动生成方法
CN112988579A (zh) * 2021-03-11 2021-06-18 山东建筑大学 一种用于并行程序通信覆盖的测试数据约减方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140019946A1 (en) * 2012-03-15 2014-01-16 Nec Laboratories America, Inc. Layered decomposition for scalable static data race detection of concurrent programs
JP6245573B2 (ja) * 2013-11-25 2017-12-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制御フロー・グラフ上の実行パスの実行頻度情報を得るための方法、並びに、当該情報を得るためのコンピュータ及びそのコンピュータ・プログラム
KR101989802B1 (ko) * 2017-02-28 2019-06-18 주식회사 스패로우 테스트 케이스를 이용하여 테스트를 수행하는 방법 및 장치
CN108509335B (zh) * 2018-01-31 2021-03-19 浙江理工大学 基于遗传算法优化的软件测试数据生成方法
CN108549607B (zh) * 2018-04-17 2021-05-18 中国矿业大学 消息传递并行程序多路径覆盖测试数据协同进化生成方法
US10613842B2 (en) * 2018-04-30 2020-04-07 International Business Machines Corporation Simplifying a control flow graph based on profiling data
US11477166B2 (en) * 2018-05-29 2022-10-18 Cognizant Technology Solutions U.S. Corporation Systems and methods for providing secure evolution as a service

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106502908A (zh) * 2016-11-07 2017-03-15 牡丹江师范学院 基于统计分析的可执行基础路径进化生成方法
CN107391385A (zh) * 2017-08-28 2017-11-24 北京航空航天大学 一种软件测试用例生成技术的构建方法
CN107590073A (zh) * 2017-08-30 2018-01-16 华南理工大学 基于路径覆盖软件测试的测试用例自动生成方法
CN112988579A (zh) * 2021-03-11 2021-06-18 山东建筑大学 一种用于并行程序通信覆盖的测试数据约减方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Multi-Task Optimization-Based Test Data Generation for Mutation Testing via Relevance of Mutant Branch and Input Variable;Xiangying Dang;《IEEE》;20201231;全文 *
基于变异分析和集合进化的测试用例生成方法;张功杰;《计算机学报》;20151130;全文 *
智能优化在软件测试中的应用综述;姚香娟;《控制与决策》;20211103;全文 *

Also Published As

Publication number Publication date
CN113742251A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
US8700548B2 (en) Optimization technique using evolutionary algorithms
Böttcher et al. Optimal fixed and adaptive mutation rates for the LeadingOnes problem
Métivier et al. An optimal bit complexity randomized distributed MIS algorithm
Bian et al. A General Approach to Running Time Analysis of Multi-objective Evolutionary Algorithms.
CN111612528A (zh) 用户分类模型的确定方法、装置、设备及存储介质
CN109298930B (zh) 一种基于多目标优化的云工作流调度方法及装置
CN106934722A (zh) 基于k节点更新与相似度矩阵的多目标社区检测方法
Talbi Hybrid metaheuristics for multi-objective optimization
Eremeev On proportions of fit individuals in population of mutation-based evolutionary algorithm with tournament selection
Yao et al. Taming disruptive base pairs to reconcile positive and negative structural design of RNA
Lissovoi et al. Computational complexity analysis of genetic programming
CN113742251B (zh) 基于集合进化的软件测试路径生成方法及系统
CN107257307B (zh) 基于Spark的并行化遗传算法求解多终端协同接入网络方法
CN111961710B (zh) 一种样本处理方法及设备
Damia et al. Automated test data generation using a combination of firefly algorithm and asexual reproduction optimization algorithm
Wessing et al. Sequential parameter optimization for multi-objective problems
CN111352650A (zh) 一种基于insga-ii的软件模块化多目标优化方法及系统
Purshouse et al. An adaptive divide-and-conquer methodology for evolutionary multi-criterion optimisation
CN114840326B (zh) 资源调度方法、装置、电子设备及存储介质
CN115543803A (zh) 基于改进遗传算法的软件测试用例智能生成方法及系统
CN110647994A (zh) 一种基于改进变异算子遗传算法的tsp优化方法
Kumar et al. Optimization of binary decision diagram using genetic algorithm
Doerr et al. (1+ 1) genetic programming with functionally complete instruction sets can evolve Boolean conjunctions and disjunctions with arbitrarily small error
Manan et al. Vertex Cover Optimization Using a Novel Graph Decomposition Approach.
CN117217150B (zh) 一种基于遗传算法符号回归的dtco公式建模方法

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
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Tian Tian

Inventor after: Wang Anshi

Inventor after: Shao Yangyang

Inventor after: Yang Huan

Inventor after: Yang Xiuting

Inventor after: Liu Xinfeng

Inventor after: Li Yuejun

Inventor before: Tian Tian

Inventor before: Wang Anshi

Inventor before: Shao Yangyang

Inventor before: Yang Huan

Inventor before: Yang Xiuting

Inventor before: Liu Xinfeng

Inventor before: Li Yuejun

CB03 Change of inventor or designer information