CN109918307B - 基于否定选择遗传算法的路径覆盖测试数据生成方法 - Google Patents
基于否定选择遗传算法的路径覆盖测试数据生成方法 Download PDFInfo
- Publication number
- CN109918307B CN109918307B CN201910190880.6A CN201910190880A CN109918307B CN 109918307 B CN109918307 B CN 109918307B CN 201910190880 A CN201910190880 A CN 201910190880A CN 109918307 B CN109918307 B CN 109918307B
- Authority
- CN
- China
- Prior art keywords
- data
- population
- negative selection
- genetic algorithm
- initial
- 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
- Debugging And Monitoring (AREA)
Abstract
本发明公布了一种基于否定选择遗传算法的路径覆盖测试数据生成方法,目的是在保证生成的测试数据具有较高覆盖率的基础上,含有最少的冗余数据,从而提高测试数据的质量和软件测试的效率。首先,依据否定选择的生成策略,有监督的生成否定选择遗传算法的初始种群;然后,依据否定选择的检测策略,动态优化否定选择遗传算法的种群数据,进化生成覆盖目标路径的测试数据。以往方法生成测试数据只是保证目标路径的覆盖,不能确保生成的测试数据的数量最少,含有大量的冗余测试数据,本发明设计方法能够有效地解决上述问题,减少冗余测试数据的生成,并且可以避免算法的过早收敛,能很大程度的提高软件测试的效率。
Description
技术领域
本发明涉及计算机软件测试领域,设计了一种新的软件测试数据的生成方法,以实现目标路径的覆盖。该方法区别于原有方法的特色在于,在保证生成的测试数据具有较高覆盖率的基础上,能够有效的减少冗余测试数据的生成,从而缩短了测试时间,提高了软件测试的效率。
背景技术
软件测试是软件生命周期的重要组成部分,是保证软件质量、提高软件可靠性的重要手段。研究资料表明,软件测试过程大约占软件开发总成本的一半以上。软件测试按照测试工作对软件代码的可见程度划分为白盒测试(又称结构测试)、黑盒测试,以及介于两者之间的灰盒测试。路径覆盖属于白盒测试,是指尽可能地生成覆盖所有路径的测试数据。单锦辉等人认为,许多软件测试问题都可以归结为路径覆盖的测试数据生成问题,该问题描述为:给定程序的一条目标路径,在程序的输入空间中寻找测试数据,使得以该数据为输入,所经过的路径为目标路径,并在中国专利说明书CN1402133(2003年3月12日公布)公开的发明专利中给出了一种路径覆盖测试数据的自动生成方法。该方法能够保证生成的测试数据穿越目标路径,但不能保证生成的测试数据数量最少,也就是说其生成的测试数据含有大量的冗余数据,进而会导致软件测试的效率降低。
路径覆盖可以生成满足覆盖充分性准则的测试数据,是结构测试中最有效的测试方法,但路径覆盖又是一个及其复杂、费力和耗时的过程。如果能在保证生成的测试数据具有较高覆盖率的基础上,减少生成覆盖目标路径测试数据的数量,显然可以减少测试时间,提高软件测试的效率。
基于搜索的测试数据生成主要是以有效的测试数据最大限度的提高软件的覆盖率,已经被广泛的应用于测试数据生成的问题中。如遗传算法,粒子群优化,蚁群优化,人工蜂群和模拟退火等都是自动生成测试数据的最常用的优化技术。其中,遗传算法在软件测试中的应用最为广泛,如回归测试、变异测试和并行测试等均有较好的应用。大量研究结果表明,遗传算法容易过早收敛,但在覆盖率和时间消耗等方面综合考虑,遗传算法在上述优化方法中具有较大的优势。因此,在生成最优测试数据的过程中,如果能够解决遗传算法过早收敛的问题,那么遗传算法将有很大的提升空间,可以更有效的提高生成测试数据的覆盖率,减少测试时间的消耗。
鉴于上述情况,本发明提出了一种新的覆盖目标路径的软件测试数据的进化生成方法,即否定选择遗传算法(Negative Selection Genetic Algorithm,NSGA),该方法在遗传算法中融入否定选择策略,可以解决传统遗传算法过早收敛的问题,更好的发挥遗传算法的覆盖率高和测试时间短的优势。NSGA通过对遗传算法种群数据的动态更新,达到种群数据多样性的目的,由此避免遗传算法出现早熟现象。同时,实验表明,NSGA能够有效的自动生成覆盖目标路径的测试数据,实现了以有限数量的测试数据达到搜索空间最大的覆盖率,减少了冗余测试数据的生成,降低了测试时间的消耗,从而提高了软件测试的效率。
发明内容
本发明提出一种基于否定选择遗传算法的路径覆盖测试数据生成方法。首先,设计 NSGA的种群初始化方法,该方法以否定选择生成策略为依据,有监督的生成NSGA的初始种群数据;然后,设计NSGA的进化种群更新方法,该方法以否定选择检测策略为依据,动态更新NSGA的进化种群;最后,应用NSGA自动生成覆盖目标路径的测试数据。
本发明所要解决的技术问题:克服现有方法生成的路径覆盖测试数据具有大量冗余数据的不足,提出否定选择遗传算法生成路径覆盖的测试数据,该方法在满足较高的路径覆盖率的基础上,能够使生成的测试数据含有最少的冗余数据,而且避免了传统遗传算法出现早熟现象。
本发明设计一种基于否定选择遗传算法的路径覆盖测试数据生成方法,其特征在于包含以下步骤:
步骤1.否定选择遗传算法的设计
众所周知,路径测试是结构测试的主要策略。解决路径测试的一个基本方法是在搜索空间中尽可能找到覆盖目标路径的测试数据。本文提出了否定选择遗传算法(Negative Selection Genetic Algorithm,NSGA),用于进化生成测试数据。NSGA是将否定选择策略融入遗传算法,对遗传算法的种群数据进行动态优化,进而使种群数据具有多样性,避免遗传算法过早收敛,在保证生成的测试数据具有较高覆盖率的基础上,达到以较少的测试数据覆盖较多的测试路径的目的,减少冗余测试数据的生成,实现目标函数进化优化的过程。
NSGA的设计过程分为两个阶段。第一阶段初始化种群,依据否定选择的生成策略,有监督的生成NSGA的初始种群。第二阶段进化生成覆盖目标路径的测试数据,以否定选择检测策略为依据,动态更新NSGA的进化种群。
目前为止,已经存在大量的遗传算法的改进方法,以期求得目标函数的最优解。但是,现有方法中并不存在与本发明相似的遗传算法的改进方法。本发明方法解决了两个问题:一是传统遗传算法的早熟问题,二是生成路径覆盖测试数据的冗余问题。综合考虑两方面问题,本发明方法目的明确,针对性强,从根本上解决了生成测试数据的冗余问题,以及已有遗传算法早熟问题,这是本发明与已有研究成果的明显区别。
步骤2.初始化种群数据的方法设计
在NSGA的第一个阶段,关键技术是将否定选择的生成策略应用在遗传算法的种群初始化过程中,具体问题体现在随机产生的输入数据与初始种群数据如何进行匹配。不难理解,如果满足被测程序的输入数据与初始种群中已有数据的相似距离越大,则初始种群数据的多样性越强。这里的相似距离考虑两方面内容,一是输入数据与初始种群中的每个数据的相似距离;二是输入数据与初始种群中的所有数据的相似距离。本发明方法有监督的生成NSGA 的初始种群,以输入数据与种群数据的相似距离最大作为优化目标,建立初始化种群数据的多目标约束优化问题的数学模型,能保证每个生成的初始数据既是局部最优解,又是全局最优解。目的就是使生成的初始种群具有更好的多样性和科学性,减少冗余测试数据的生成,同时解决NSGA的过早收敛问题。
目前,虽然已经存在一些改进遗传算法初始化种群数据的方法,以期达到遗传算法初始种群的多样化,但是现有方法中并不存在与本发明相似的初始化种群数据方法。对于达到“初始化种群数据多样化”这一目的来讲,本发明方法更优于现有方法。由此可知,本发明设计的初始化种群数据的方法目的性更强,这是本发明与已有研究成果的明显区别。
步骤3.动态更新种群数据的方法设计
在NSGA的第二阶段,关键技术是将否定选择的检测策略应用在遗传的种群数据更新过程中,具体问题为如何进行种群数据更新。种群数据更新指的是每次迭代后,对生成的适应度值较低的种群数据进行更新。包含两方面内容,一是依据否定选择的检测策略,计算进化后适应度值较低的个体与检测集中的生成测试数据是否匹配,匹配删除,不匹配保留。更新种群数据用到的匹配方法为计算进化数据与检测集中的生成数据的相似距离。如果相似距离小于阈值,将其删除。否则,将进化数据保留,更新种群数据。二是如果更新种群数据时,由于移除覆盖目标路径的数据或者删除冗余数据产生种群含有个体的数量小于初始种群大小的情况,应采用与生成初始种群同样的方法,随机产生输入数据,生成足够数量的种群数据。需要说明的是,种群初始化与种群动态更新过程都需要生成种群数据,区别在于进化种群更新过程中随机产生的输入数据不仅要与已有种群数据进行匹配,还要与检测集中生成的测试数据进行匹配,同时满足两种匹配条件的输入数据才能存入当前种群,直到生成满足条件的进化种群为止。
由此可知,动态更新种群数据是在每次迭代时对进化生成的适应度值较低的个体进行检测并且更新,使种群数据在整个进化过程中都具有多样性的特征,直接减少了进化种群中冗余数据的生成,并且避免了传统遗传算法的过早收敛。现有方法中并不存在与本发明相似的在迭代过程中以否定选择检测策略为依据的进化种群动态更新的方法,即在每次迭代后直接对适应度值较低的种群数据进行动态更新的过程,因此,这也是本发明与已有研究成果的明显区别。
步骤4.进化生成测试数据的方法设计
本发明采用NSGA进化生成覆盖多目标路径的测试数据,分别选择一组基准程序和一组工业程序进行实验验证。实验步骤如下:在程序的输入空间,以步骤2设计的初始化种群数据的方法生成一定数量的初始数据,并对其进行编码,使其成为初始种群中的进化个体,作为程序的输入,执行被测程序;以步骤3设计的动态更新种群数据的方法更新进化的种群数据,通过适应度函数评价进化个体的优劣,进行选择、交叉和变异操作;直到达到终止条件为止,得到的最优解解码后就是穿越目标路径的测试数据。
基准程序和工业程序生成覆盖目标路径的测试数据实验结果表明,NSGA在保证生成的测试数据具有较高的覆盖率的基础上,减少了冗余测试数据的生成,解决了传统遗传算法过早收敛的问题,降低了迭代次数,从而达到了提高软件测试效率的目的,这也是本发明与已有研究成果的明显区别。
附图说明
图1是否定选择策略流程图。
图2是遗传算法流程图。
图3是否定选择遗传算法流程图。
图4是相似距离的计算过程图。
图5是种群数据的更新过程图。
图6是示例程序的源代码图。
图7是示例程序的控制流图。
图8三角形分类程序实验结果。
图9基准实验程序。
图10基准程序实验结果。
图11工业实验程序。
图12工业程序实验结果。
具体实施方式
下面结合具体附图和示例程序对本发明的实施方式进行详细说明。
步骤1.否定选择遗传算法的方法设计
1.1否定选择策略
否定选择策略的基本思想是在搜索空间中产生若干检测数据,然后应用这些检测数据来对新数据进行自我集合或非自我集合分类。否定选择策略分为两个阶段:生成阶段(也称训练阶段)和检测阶段(也称测试阶段)。首先,在生成阶段,采用随机过程生成检测数据,并对随机过程进行监督。与自我样本匹配的候选数据被丢弃,不匹配的候选数据存储到检测集。当有足够数量的检测数据(检测集)生成时,生成阶段终止。在检测阶段,将生成阶段产生的检测集用于检查输入数据是否对应自我样本或非自我样本。如果输入数据与检测集中的检测数据匹配,则它被划分到非自我集合,匹配的数据被丢弃;否则,将输入数据存入自我集合。否定选择策略的流程图如图1所示。
1.2遗传算法
遗传算法的基本思想是将要解决的问题模拟成一个生物进化的过程。在搜索空间中随机产生若干输入数据(个体),并对其编码代表问题可能潜在的解集(初始种群)。通过选择、交叉和变异操作产生下一代个体,计算个体的适应度函数值,并淘汰适应度函数值低的个体。重复迭代,进化生成适应度函数值最高的个体,解码为目标函数的最优解或近似最优解。遗传算法的流程图如图2所示。
1.3否定选择遗传算法
NSGA的设计过程分为两个阶段。第一阶段是初始化种群,依据否定选择的生成策略,有监督的生成NSGA的初始种群。主要设计过程为:随机生成输入数据,并与初始种群中已有数据进行匹配。匹配的数据为冗余数据,存入非初始种群;不匹配的数据为所需数据,存入初始种群。重复此过程,直到生成初始种群的全部初始数据为止。第二阶段是进化生成覆盖目标路径的测试数据,以否定选择检测策略为依据,动态更新NSGA的进化种群。主要设计过程为:首先,对初始种群数据进行个体编码,计算个体的适应度值,更新种群数据。如果种群数据覆盖目标路径,则其为生成的覆盖目标路径的测试数据,存入检测集。同时,检测集数据也是作为种群数据集内查找重复数据的依据。然后,进行选择、交叉和变异操作,重新计算个体的适应度值,并且依据否定选择的检测策略动态更新种群数据,保证进化数据多样性,避免算法过早收敛。重复上述过程,直到满足终止条件为止,对个体解码,生成覆盖目标路径的测试数据。否定选择遗传算法流程图如图3所示。
步骤2.初始化种群数据的方法设计
2.1数据匹配
种群初始化的过程中,需要对随机产生的输入数据和已有的种群数据进行匹配,这里的匹配方法为计算输入数据与初始种群数据的相似距离,相似距离小于给定阈值为匹配,否则为不匹配。在本发明中,被测程序记为G,输入搜索空间为X,个体x代表输入数据,以二进制编码表示,即x∈X。本发明的相似距离采用的是计算输入数据与初始种群数据的不同二进制编码的个数,如果小于阈值σ,则为非自我数据,将其删除;否则,为自我数据,将其保留。相似距离的计算公式为
其中,n为检测数据的总数,x'表示采样数据,x'i表示第i个检测数据,di(x')表示x'与x'i的相似距离。
以三角形分类程序为例,说明相似距离的计算方法。假设采样数据x'=(22,16,7),检测集中的第i个数据x'i=(24,20,8),则x'与x'i的相似距离di(x')=8,计算过程如图4所示。
2.2建立初始化种群的数学模型
随机生成被测程序的输入数据,计算输入数据与初始种群数据的相似距离,生成初始种群的全部初始数据。这里的相似距离考虑两方面内容,一是输入数据与初始种群中的每个数据的相似距离,以此确保生成的初始数据为局部最优解;二是输入数据与初始种群中的所有数据的相似距离,以此确保生成的初始数据为全局最优解。因此,以输入数据与种群数据的两个相似距离最大作为目标,建立数学模型如下:
s.t. di(x)≥σ,d(x)≥τ,τ>mσ (2)
其中,x表示输入数据,xi表示初始种群中的第i个初始数据,di(x)表示x与xi的相似距离; m为初始种群中的已有初始数据的个数,d(x)表示x与初始种群的所有数据的相似距离;σ为局部阈值,τ为全局阈值。约束条件di(x)≥σ和d(x)≥τ分别为输入数据是初始种群的局部最优解和全局最优解,τ>mσ为σ与τ之间应满足的约束条件。
步骤3.动态更新种群数据的方法设计
3.1进化种群动态更新
对初始种群数据进行个体编码,计算个体的适应度值,将覆盖目标路径的测试数据存入检测集,作为在种群数据集内查找重复数据的依据,以检查后续进化种群中的冗余数据。没有覆盖目标路径的个体进行选择、交叉和变异操作,重新计算个体的适应度值。为保证进化数据的多样性,避免算法过早收敛,以否定选择检测策略为依据,计算适应度值低的个体与检测集中个体的相似距离。由于检测集中的检测数据均为生成的覆盖目标路径的测试数据,因此,此处的相似距离只要计算适应度值低的个体与检测集中的每个个体的相似距离即可,并以相似距离最大作为优化目标,建立进化过程中动态更新种群数据方法的数学模型如下:
s.t. di(y)≥ε (3)
其中,y表示种群数据,yi表示检测集的第i个数据,di(y)表示y与yi的相似距离,ε为阈值。动态更新种群数据的设计方法,以进化数据与检测集数据的相似距离最大为目标,建立种群数据更新问题的数学模型,di(y)≥ε为种群数据要求满足的约束条件。
特别说明,如果更新种群数据时,由于移除覆盖目标路径的数据或者删除冗余数据产生当前进化种群含有个体的数量小于初始种群大小的情况时,应采用与生成初始种群同样的方法,随机产生输入数据,生成足够数量的种群数据。在进化种群更新过程中,随机产生的输入数据不仅要与已有种群数据进行匹配,还要与检测集中生成的测试数据进行匹配,同时满足两种匹配条件的输入数据才能存入当前种群,直到生成满足条件的进化种群为止。
以三角形分类程序为例,说明本发明方法中种群数据更新的过程,如图5所示。假设初始种群m=5,个体编码后对应5条染色体,阈值ε=5,这里第t代种群数据是依据种群初始化过程产生的,则在第t代种群数据生成覆盖目标路径的测试数据前,检测集为空。首先,计算任意两个个体的相似距离,生成满足初始种群要求的第t代种群数据。其次,计算个体的适应度,将覆盖目标路径的测试数据y5存入检测集。再次,将没有覆盖目标路径的个体进行选择、交叉和变异操作,重新计算个体的适应度。然后,计算适应度低的个体与检测集中个体的相似距离,发现y1与检测集中y的相似距离为4,小于ε,将其删除。此处值得注意的是,丢弃的数据(28,24,24)正是与检测集中的检测数据(22,16,16)穿越的目标路径相同,说明丢弃的数据为冗余数据,这也证实了本文方法能够动态优化种群数据,保证进化种群的多样性,进而减少了冗余测试数据的生成。最后,补充种群数据,使用与种群初始化相同的方法生成个体y4和y5,其中任意两个个体的相似距离均大于ε,则得到第t+1代种群数据(26,30,29)、(15,7,23)、(18,10,23)、(21,21,21)和(9,11,8)。
3.2适应度函数
在采用遗传算法自动生成路径覆盖的测试数据时,适应度函数体现了自然进化过程中的优胜劣汰原则。因此,适应度函数是求解优化问题的关键,在遗传算法中发挥着至关重要的作用。到目前为止,针对路径覆盖的测试数据自动生成问题,适应度函数设计的方法主要分为三种:分支距离(branch_distance)、层接近度(approach_level)和分支距离+层接近度(branch_distance +approach_level)。
在本发明方法中,采用分支距离与层接近度相结合的方法设计适应度函数。设个体z 的层接近度为approach_level(z),表示z的穿越路径与目标路径的偏离程度,计算方法是z 的穿越路径与目标路径不匹配的节点个数除以目标路径的节点总数。设个体z的分支距离为 branch_distance(z),反映z的穿越路径与目标路径分支的偏离程度,即z的穿越路径与目标路径分支语句前件的距离。一般情况,分支距离的值远大于层接近度的值。因此,为了权衡分支距离与层接近度的大小,并统一为最小化运算,将其规范化为1.001-branch_distance(z),其值越小,个体越优。
于是,个体z的适应度函数fit(z)可表示为
fit(z)=approach_level(z)+1.001-branch_distance(z) (4)
步骤4.进化生成测试数据
本发明设计一种覆盖目标路径的软件测试数据进化生成方法,为了评估该方法的性能,设计应用程序进行实验验证。实验条件:Windows 7操作系统,计算机主频2.80GHz,内存2GB,所有程序均用java语言编写,在eclipse环境下运行。
4.1算法步骤
本发明中,设计NSGA的算法步骤如下:
步骤1:随机生成输入数据;
步骤2:输入数据与初始种群数据进行匹配,不匹配的数据存入初始种群;
步骤3:判断初始种群是否已满,未满转至步骤1;
步骤4:对进化个体进行编码;
步骤5:计算进化个体的适应度值;
步骤6:更新种群数据,计算新个体的适应度值;
步骤7:执行被测程序,将覆盖目标路径的测试数据存入检测集;
步骤8:判断是否满足终止条件,未满足则进行选择、交叉和变异操作,转至步骤5;
步骤9:对进化个体解码,输出检测集中的生成测试数据。
4.2测试实例
本发明中,以三角形分类程序为例,说明实验过程,其程序源代码如图6所示,其控制流图如图7所示。
在三角形分类程序中,3个输入数据由变量a、b、c表示,用于判断三角形的类型。三角形分类程序实验参数设置,初始种群为100,交叉概率为0.8,变异概率为0.15,最大迭代次数为200。通常情况下,生成覆盖目标路径的测试用例的数量代表算法的有效性,迭代次数代表算法的效率。应用随机方法(Random)、遗传算法(GA)和本发明方法NSGA自动生成覆盖目标路径的测试用例,每种算法运行被测程序各50次,取其平均值作为实验结果。当达到最大迭代次数时,统计生成的覆盖各个目标路径的测试用例数量,即等边三角形、等腰三角形、一般三角形和非三角形;当生成覆盖所有目标路径的测试数据时,记录迭代次数,统计生成的测试用例总数量,核算覆盖率,实验结果如图8所示。从图8可以看出,Random 生成的测试用例数量最多,迭代次数最大,覆盖率仅为75%。GA生成的测试用例数量为 14853,进化到163代时才生成覆盖所有目标路径的测试用例,覆盖率达到了100%。NSGA 生成覆盖所有目标路径的测试用例数量仅为419,而且只需要迭代5次,减少了冗余测试数据的生成,降低了迭代次数,提高了测试效率。因此,本发明方法与其他方法比较,在软件测试中具有更好的有效性。
4.3基准程序
基准实验程序,包含选择结构、循环结构以及复杂的嵌套结构,含有算术运算符、关系运算符和逻辑运算符,还涵盖了整型、浮点型、字符型以及字符串等数据类型,这些基准程序都被广泛的应用于基于搜索的软件测试研究领域。图9列出了每个程序的简短描述、代码行数、决策节点数以及目标路径数。
依托三角形分类程序实验参数设置以及实验过程,对图9示的基准实验程序进行实验,所得的相关实验结果如图10所示。图10实验结果表明,在基准程序实验中,否定选择遗传算法生成的测试用例数量和迭代次数均最少,且均达到了100%的覆盖率。由此可知,Random、GA和NSGA三种方法相比,NSGA算法在提高了路径覆盖率的基础上,减少了冗余测试数据的生成,降低了迭代次数。因此,本发明NSGA方法在保证覆盖率的基础上,具有更好的有效性。
4.4工业程序
工业实验程序,分别选择Replace、Space、Gzip、Sed和Flex,这些工业程序也都被广泛的应用于软件测试研究领域。对于每个被测程序选择2到3个子函数进行实验,图11分别列出了被测程序的代码行数,选择函数的名称,函数的代码行数,以及基本路径数。
工业程序实验参数设置,初始种群为100,交叉概率为0.8,变异概率为0.15,最大迭代次数为500。工业实验程序的相关实验结果如图 12 所示。图12实验结果表明,在工业程序实验中,NSGA算法生成的测试用例数量和迭代次数最少,路径覆盖率最高,达到了减少冗余测试数据的生成和降低迭代次数的目的。由此可知,Random、GA和NSGA三种方法相比,本发明NSGA方法在保证覆盖率的基础上,具有更好的有效性。
本发明设计一种基于否定选择遗传算法的路径覆盖测试数据自动生成方法,依据否定选择策略设计遗传算法,动态优化遗传算法的种群数据,解决了遗传算法过早收敛的问题,自动进化生成覆盖目标路径的测试数据。本发明方法与随机方法和遗传算法比较,能够提高路径覆盖率,减少冗余测试数据的生成,降低迭代次数,提高测试效率,具有更好的有效性。
Claims (2)
1.基于否定选择遗传算法的路径覆盖测试数据生成方法,其特征在于包含如下步骤:
步骤1.1:针对路径覆盖测试数据的生成问题,本发明设计了一种否定选择遗传算法,主要包括种群初始化和进化种群更新两个阶段;
步骤1.2:针对第一阶段的种群初始化方法,依据否定选择的生成策略,有监督的生成否定选择遗传算法的初始种群,对输入数据与初始种群数据进行匹配,以输入数据与种群数据的相似距离最大作为优化目标,建立种群初始化的多目标约束优化问题的数学模型,其特征在于包含如下步骤:
步骤1.2.1:种群初始化过程的关键问题为输入数据与初始种群数据如何进行匹配,容易理解,被测程序的输入数据与初始种群中已有数据的相似距离越大,则初始种群数据的多样性越强,因此,这里的匹配方法为计算输入数据和初始种群数据的相似距离,被测程序记为G,输入搜索空间为X,个体x代表输入数据,以二进制编码表示,即x∈X,相似距离采用的是计算采样数据与检测数据的不同二进制编码的个数,计算公式为
其中,n为检测数据的总数,x′表示采样数据,x′i表示第i个检测数据,di(x′)表示x′与x′i的相似距离;
步骤1.2.2:种群初始化方法中的相似距离考虑两方面内容,一是输入数据与初始种群中的每个数据的相似距离,以相似距离最大作为目标,使生成的初始数据为局部最优解,建立数学模型如下:
s.t.di(x)≥σ
其中,x表示输入数据,xi表示初始种群中的第i个初始数据,di(x)表示x与xi的相似距离,σ为局部阈值,约束条件di(x)≥σ要求输入数据是初始种群的局部最优解;
二是输入数据与初始种群中的所有数据的相似距离,以相似距离最大作为目标,使生成的初始数据为全局最优解,建立数学模型如下:
s.t.d(x)≥τ,τ>mσ
其中,m为初始种群中的已有初始数据的个数,d(x)表示x与初始种群的所有数据的相似距离,τ为全局阈值,约束条件d(x)≥τ要求输入数据是初始种群的全局最优解,τ>mσ为σ与τ之间应满足的约束条件;
步骤1.3:针对第二阶段的进化种群更新方法,依据否定选择的检测策略,动态更新否定选择遗传算法的进化种群,计算适应度值低的个体与检测集中个体的相似距离,补充进化种群数据,实现进化种群的多样性,避免算法过早收敛,其特征在于包含如下步骤:
步骤1.3.1:进化种群更新过程的关键问题之一是将适应度值低的个体与检测集中的个体进行匹配,匹配的适应度值低的个体被丢弃,因此,这里计算适应度值低的个体与检测集中个体的相似距离,并以相似距离最大作为优化目标,建立进化过程中动态更新种群数据方法的数学模型如下:
s.t.di(y)≥ε
其中,y表示种群数据,yi表示检测集的第i个数据,di(y)表示y与yi的相似距离,ε为阈值,di(y)≥ε为种群数据要求满足的约束条件;
步骤1.3.2:进化种群更新过程的关键问题之二是补充进化种群数据,如果更新种群数据时,由于移除覆盖目标路径的数据或者删除冗余数据产生当前进化种群含有个体的数量小于初始种群大小的情况时,应采用与生成初始种群同样的方法,随机产生输入数据,生成足够数量的种群数据;在进化种群更新过程中,随机产生的输入数据不仅要与已有种群数据进行匹配,还要与检测集中生成的测试数据进行匹配,同时满足两种匹配条件的输入数据才能存入当前种群,直到生成满足条件的进化种群为止;
步骤1.3.3:进化种群更新过程的关键问题之三是适应度函数的设计,适应度函数是求解优化问题的关键,本发明方法采用分支距离与层接近度相结合的方法设计适应度函数,为了权衡分支距离与层接近度的大小,并统一为最小化运算,将分支距离规范化为1.001-branch_distance(z),则个体z的适应度函数可表示为
fit(z)=approach_level(z)+1.001-branch_distance(z)
其中,设个体z的层接近度为approach_level(z),表示z的穿越路径与目标路径的偏离程度,设个体z的分支距离为branch_distance(z),反映z的穿越路径与目标路径分支的偏离程度;
步骤1.4:使用否定选择遗传算法生成测试数据,实现目标路径的覆盖,并采用Java语言针对基准程序和工业程序进行了实验,结果表明,本设计方法生成的测试数据,在具有较高路径覆盖率的基础上,能够有效的减少冗余测试数据的生成,减少迭代次数,提高了软件测试的效率。
2.根据 权利要求1中所述基于否定选择遗传算法的路径覆盖测试数据生成方法,其特征在于, 步骤1.4所述的使用否定选择遗传算法生成测试数据,实现目标路径的覆盖,其特征在于包含如下步骤:
步骤2.1:否定选择遗传算法的步骤如下:
step 1:随机生成输入数据;
step 2:输入数据与初始种群数据进行匹配,不匹配的数据存入初始种群;
step 3:判断初始种群是否已满,未满转至step 1;
step 4:对进化个体进行编码;
step 5:计算进化个体的适应度值;
step 6:更新种群数据,计算新个体的适应度值;
step 7:执行被测程序,将覆盖目标路径的测试数据存入检测集;
step 8:判断是否满足终止条件,未满足则进行选择、交叉和变异操作,转至step 5;
step 9:对进化个体解码,输出检测集中的生成测试数据;
步骤2.2:基准程序实验结果表明,否定选择遗传算法生成的测试用例数量和迭代次数均最少,且均达到了100%的覆盖率,由此可知,否定选择遗传算法在提高了路径覆盖率的基础上,减少了冗余测试数据的生成,降低了迭代次数,因此,本发明方法在保证路径覆盖率的基础上,具有更好的有效性;
步骤2.3:工业程序实验结果表明,否定选择遗传算法生成的测试用例数量和迭代次数均最少,路径覆盖率最高,由此可知,本发明方法在保证路径覆盖率的基础上,达到了减少冗余测试数据的生成和降低迭代次数的目的,具有更好的有效性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910190880.6A CN109918307B (zh) | 2019-03-14 | 2019-03-14 | 基于否定选择遗传算法的路径覆盖测试数据生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910190880.6A CN109918307B (zh) | 2019-03-14 | 2019-03-14 | 基于否定选择遗传算法的路径覆盖测试数据生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109918307A CN109918307A (zh) | 2019-06-21 |
CN109918307B true CN109918307B (zh) | 2022-04-19 |
Family
ID=66964662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910190880.6A Active CN109918307B (zh) | 2019-03-14 | 2019-03-14 | 基于否定选择遗传算法的路径覆盖测试数据生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109918307B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666209B (zh) * | 2020-05-20 | 2023-03-31 | 牡丹江师范学院 | 一种基于多目标优化的测试用例优先级排序方法 |
CN112711535B (zh) * | 2020-12-29 | 2021-12-21 | 哈尔滨工业大学 | 基于粒子群优化的约束下组合测试数据生成方法 |
CN112817841B (zh) * | 2021-01-21 | 2022-12-09 | 西安交通大学 | 基于路径覆盖的通信确定mpi并行程序测试数据生成方法 |
CN112862057B (zh) * | 2021-04-07 | 2023-11-03 | 京东科技控股股份有限公司 | 一种建模方法、装置、电子设备和可读介质 |
CN113959051B (zh) * | 2021-10-08 | 2023-08-15 | 青岛海尔空调电子有限公司 | 用于空调器的控制方法及空调器 |
CN114036057B (zh) * | 2021-11-19 | 2024-08-27 | 江苏科技大学 | 一种软件可靠性模型参数估计方法 |
CN116048958B (zh) * | 2022-11-17 | 2023-12-01 | 中山大学 | 医疗机器人控制软件测试数据的生成方法、注入方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299691A (zh) * | 2008-06-13 | 2008-11-05 | 南京邮电大学 | 一种基于人工免疫的动态网格入侵检测方法 |
WO2012135714A2 (en) * | 2011-03-30 | 2012-10-04 | Whitehead Institute For Biomedical Research | Serine biosynthesis pathway inhibition for treatment of cancer |
WO2013120509A1 (en) * | 2012-02-13 | 2013-08-22 | Ruebben Albert | Algorithm for modification of somatic cancer evolution |
CN108509335A (zh) * | 2018-01-31 | 2018-09-07 | 浙江理工大学 | 基于遗传算法优化的软件测试数据生成方法 |
CN109359421A (zh) * | 2018-11-14 | 2019-02-19 | 中华人民共和国苏州海关 | 一种实时监测系统及基于实时监测系统的起重设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102331966A (zh) * | 2011-01-10 | 2012-01-25 | 中国矿业大学 | 面向路径的软件测试数据进化生成系统 |
CN103036745A (zh) * | 2012-12-21 | 2013-04-10 | 北京邮电大学 | 云计算中一种基于神经网络的异常检测系统 |
-
2019
- 2019-03-14 CN CN201910190880.6A patent/CN109918307B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299691A (zh) * | 2008-06-13 | 2008-11-05 | 南京邮电大学 | 一种基于人工免疫的动态网格入侵检测方法 |
WO2012135714A2 (en) * | 2011-03-30 | 2012-10-04 | Whitehead Institute For Biomedical Research | Serine biosynthesis pathway inhibition for treatment of cancer |
WO2013120509A1 (en) * | 2012-02-13 | 2013-08-22 | Ruebben Albert | Algorithm for modification of somatic cancer evolution |
CN108509335A (zh) * | 2018-01-31 | 2018-09-07 | 浙江理工大学 | 基于遗传算法优化的软件测试数据生成方法 |
CN109359421A (zh) * | 2018-11-14 | 2019-02-19 | 中华人民共和国苏州海关 | 一种实时监测系统及基于实时监测系统的起重设备 |
Non-Patent Citations (4)
Title |
---|
A New Genetic Algorithm Based on Negative Selection;Na-na Li;《2006 International Conference on Machine Learning and Cybernetics》;20090304;4297-4299 * |
An Exploratory Study of Search Based Training Data Selection for Cross Project Defect Prediction;Seyedrebvar Hosseini;《2018 44th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)》;20181022;244-251 * |
基于多种群遗传算法的检测器生成算法研究;杨东勇;《自动化学报》;20090415;425-432 * |
基于能量有效的免疫—蚁群三维覆盖算法的研究;舒黎忠;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20150515;I140-213 * |
Also Published As
Publication number | Publication date |
---|---|
CN109918307A (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918307B (zh) | 基于否定选择遗传算法的路径覆盖测试数据生成方法 | |
US9058564B2 (en) | Controlling quarantining and biasing in cataclysms for optimization simulations | |
CN107590073B (zh) | 基于路径覆盖软件测试的测试用例自动生成方法 | |
Langdon et al. | Optimizing existing software with genetic programming | |
Zeng et al. | Accurately clustering single-cell RNA-seq data by capturing structural relations between cells through graph convolutional network | |
Shah et al. | Ensembling artificial bee colony with analogy-based estimation to improve software development effort prediction | |
US20110161264A1 (en) | Optimized seeding of evolutionary algorithm based simulations | |
CN106250461A (zh) | 一种基于Spark框架利用梯度提升决策树进行数据挖掘的算法 | |
CN110110858B (zh) | 一种基于强化学习的自动化机器学习方法 | |
Gutmann et al. | TildeCRF: Conditional random fields for logical sequences | |
CN113221112B (zh) | 基于弱相关集成策略的恶意行为识别方法、系统和介质 | |
CN107169983B (zh) | 基于交叉变异人工鱼群算法的多阈值图像分割方法 | |
CN111209192A (zh) | 一种基于双混沌鲸鱼优化算法的测试用例自动生成方法 | |
CN107885503A (zh) | 一种基于程序特征分析的迭代编译优化方法 | |
Manikandan et al. | Feature selection on high dimensional data using wrapper based subset selection | |
CN113076545A (zh) | 一种基于深度学习的内核模糊测试序列生成方法 | |
CN106919504B (zh) | 一种基于ga算法的测试数据进化生成方法 | |
CN118116574A (zh) | 基于改进的哈里斯鹰优化算法的中医证型分类方法和装置 | |
CN116756662A (zh) | 基于哈里斯鹰算法优化随机森林的良率预测方法及系统 | |
Yi et al. | A new genetic programming algorithm for building decision tree | |
CN114780967B (zh) | 基于大数据漏洞挖掘的挖掘评估方法及ai漏洞挖掘系统 | |
CN114201199B (zh) | 基于信息安全大数据的防护升级方法及信息安全系统 | |
CN113571134B (zh) | 基于骨干粒子群算法的基因数据特征选择方法及装置 | |
Koerner et al. | Neuromodulation biomarker selection using GPU-parallelized genetic algorithms | |
CN114067914B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |