结合关键点概率与路径相似度的多路径覆盖方法及系统技术方案

技术编号:24409541 阅读:25 留言:0更新日期:2020-06-06 08:34
本发明专利技术公开了一种结合关键点概率与路径相似度的多路径覆盖方法及系统。首先,将理论路径划分成易覆盖、难覆盖及不可达路径。其次,通过易覆盖路径统计关键点概率,依此概率计算个体对生成测试数据的贡献度,并利用贡献度改进适应度函数,同时根据关键点概率对目标路径进行排序。最后,使用多种群遗传算法生成覆盖目标路径的测试数据,在进化过程中子种群覆盖当前目标路径后,继续尝试覆盖此目标路径的相似路径。根据关键点概率设计适应度函数,保护优秀个体,同时进一步完善个体信息共享策略,既合理利用种群进化过程中的个体资源,又避免在子种群进化过程中浪费过多的时间,从而有效地提高了测试数据进化生成的效率。

Multi path coverage method and system based on key point probability and path similarity

【技术实现步骤摘要】
结合关键点概率与路径相似度的多路径覆盖方法及系统
本专利技术涉及软件测试系统
,具体涉及一种基于结合关键点概率与路径相似度的多路径覆盖方法及系统。
技术介绍
在软件开发过程中,软件测试可看成是对软件需求分析、设计规格说明和编码等的复审,是保证软件质量的重要阶段。可见,软件测试在软件开发的整个生命周期中都起着关键性的作用。而在软件测试过程中,被测程序能够进行测试的先决条件,就是要有合适的测试数据,因此,测试数据生成是软件测试中一项必不可少的工作。在实际的软件测试中,要生成满足被测程序要求的测试数据,需要专业的测试人员花费大量时间进行实验,这无疑会耗费庞大的时间和人力资源。而利用计算机自动求解生成测试数据,将大幅地提高软件测试的效率,使有限的资源得到更充分合理的利用。路径覆盖是对已知代码的被测程序,自动生成其测试数据的常用方法。因此,在测试数据自动生成领域中,许多研究者对路径覆盖进行了探讨。有些提出融入神经网络的路径覆盖测试数据进化生成方法,通过改进遗传算法,求解路径覆盖问题。有些提出基于稀有数据扑捉的路径覆盖测试数据进化生成方法,通过保护稀有数据,提高路径覆盖测试数据生成效率。大多数软件测试数据自动生成问题可以转化成目标路径的覆盖问题,路径覆盖问题可以描述为:给定程序的一条、多条或全部目标路径,在程序的输入空间寻找测试数据,对于任一目标路径,测试数据集中至少存在一个测试数据,使得以该测试数据为输入所穿越的路径为该目标路径。路径覆盖可分为单路径覆盖及多路径覆盖。多路径覆盖测试数据自动生成的复杂程度远超过单路径覆盖,但是更加贴近实际应用,测试数据的生成也更加高效。在多路径覆盖测试数据自动生成上,多采用经典的遗传算法进行求解,但仍存在多路径覆盖率低、测试数据生成时间长等问题。
技术实现思路
有鉴于此,有必要提供一种提高多路径覆盖测试数据自动生成的效率的结合关键点概率与路径相似度的多路径覆盖方法及系统。一种结合关键点概率与路径相似度的多路径覆盖方法,包括以下步骤:步骤一,基于关键点路径获取被测程序的理论路径;随机生成测试数据集,运行被测程序,得到该数据集对应的覆盖路径并定义为易覆盖路径;通过不可达路径自动检测模型探测到的路径,定义为不可达路径;将剩余理论路径,定义为难覆盖路径;根据生成的易覆盖路径,计算路径中关键点的关键点概率,将难覆盖路径作为目标路径,生成覆盖难覆盖路径的测试数据;步骤二,统计易覆盖路径中的关键点被覆盖情况,计算关键点概率以及个体对生成覆盖目标路径测试数据的贡献度;将个体贡献度作为适应度函数权重,调整多种群遗传算法的适应度函数;根据关键点概率对目标路径进行排序,排序后优先级高的目标路径对应的子种群在测试数据生成过程中优先执行;步骤三,利用多种群遗传算法生成覆盖目标路径的测试数据;采用个体信息共享策略,实现各子种群之间的信息交互,但各子种群的个体不参与其它子种群的进化;子种群覆盖其目标路径后,继续尝试覆盖与该目标路径相似度高的其它目标路径,以提高种群中的个体信息的利用率;步骤四,多路径覆盖测试数据生成;采用改进的多种群遗传算法,对选出的多条目标路径,求解覆盖这些路径的测试数据。进一步地,步骤一中的所述关键点概率的计算步骤如下:对被测程序输入m组测试数据in=(l1,l2,…,lm),其中li(1≤i≤m)为一组输入向量,为种群中的个体,得到m条覆盖路径集Pcover={P1,P2,…,Pm},程序中每个分支子关键点Nj(1≤j≤n)被路径覆盖的概率,记为G(Nj);利用随机生成的测试数据集,及其对应的易覆盖路径,统计易覆盖路径集中的关键点被路径覆盖的情况,如式(1)所示:其中,Pi∈Pcover,再得到覆盖矩阵,记为Cover,如式(2)所示:其中,覆盖矩阵的行表示执行被测程序得到的m条覆盖路径P1,P2,…,Pm,列表示路径中的n个关键点N1,N2,…,Nn;根据覆盖矩阵Cover,得到覆盖关键点Nj的路径数记为Sj,如式(3)所示:被测程序的关键点概率G(Nj),表示如式(4)所示:由式(4)可知,关键点被易覆盖路径覆盖的次数越多,关键点概率越高,表示该关键点越容易被覆盖。进一步地,步骤二中的所述个体贡献度的计算步骤如下:个体数为m的种群中的个体li(1≤i≤m),对于进化生成覆盖目标路径集Ptar={P1,P2,P3,…,Pk}的目标路径Pk(1≤k≤n)的测试数据所做出的贡献,即为个体li对应的覆盖路径P(li)与目标路径Pk相同关键点的关键点概率之和,记为Con(li,Pk);根据关键点概率,将个体的贡献度Con(li,Pk)表达成如式(5)所示:其中,e为自然底数,Nj∈(P(li)∩Pk),G(Nj)为Nj的关键点概率;在多种群遗传算法进化过程中,一个关键点的关键点概率越高,则该关键点越容易被易覆盖路径覆盖;当个体li对应的覆盖路径P(li)与目标路径Pk相同关键点的关键点概率越高,表示该个体对于生成难覆盖的目标路径所能做出的贡献越低;则关键点概率与个体贡献度之间的关系成反比。进一步地,步骤三中的所述适应度函数的计算步骤如下:个体数为m的种群中的个体li(1≤i≤m)的适应度函数由其层接近度、分支距离及个体贡献度组成的,记为F(li);个体li的层接近度为li对应覆盖路径P(li)与目标路径集Ptar={P1,P2,P3,…,Pn}中的目标路径Pj(1≤j≤n)相同的关键点个数,除以路径Pj的关键点数,记为approach_level(li,Pj);个体li的分支距离参考已有的分支谓词的分支距离计算函数及复合谓词的计算方法,记为branch_distance(li,Pj);为了权衡分支距离与层接近度的大小,并统一为最大化运算,将分支距离规范化表示为个体li对于目标路径Pj的贡献度Con(li,Pj)作为适应度函数的权重;适应度函数F(li)表达成如式(8)所示:对于目标路径集Ptar={P1,P2,…,Pk}中的每条路径Pj(1≤j≤k),对被测程序输入一组测试数据lj=(sj1,sj2,…,sjm)能够覆盖路径Pj时,目标函数fj=F(lj)取得最大值;多路径覆盖问题要求寻找至少k个测试数据,使其能够分别覆盖这k个目标路径,则问题转化成求解f1,f2,…,fk最大值的优化问题,f1,f2,…,fk最大值的优化如式(9)所示:其中,Pj∈Ptar;各个目标函数都对应一条目标路径,目标函数之间相互独立,对于每个目标函数对应于一组测试数据;多路径覆盖问题的最终数学模型表达式如式(10)所示:在式(10)中,最终数学模型由k个函数构成,每个函数对应一个优化问题,每个优化问题对应一个覆盖目标路径的测试数据。进一步地,步骤三中的所述个体信息共享的具体步骤如下:对于种群集pop={pop1,pop2,…,popn},第i本文档来自技高网
...

【技术保护点】
1.一种结合关键点概率与路径相似度的多路径覆盖方法,其特征在于,包括以下步骤:/n步骤一,基于关键点路径获取被测程序的理论路径;随机生成测试数据集,运行被测程序,得到该数据集对应的覆盖路径并定义为易覆盖路径;通过不可达路径自动检测模型探测到的路径,定义为不可达路径;将剩余理论路径,定义为难覆盖路径;根据生成的易覆盖路径,计算路径中关键点的关键点概率,将难覆盖路径作为目标路径,生成覆盖难覆盖路径的测试数据;/n步骤二,统计易覆盖路径中的关键点被覆盖情况,计算关键点概率以及个体对生成覆盖目标路径测试数据的贡献度;将个体贡献度作为适应度函数权重,调整多种群遗传算法的适应度函数;根据关键点概率对目标路径进行排序,排序后优先级高的目标路径对应的子种群在测试数据生成过程中优先执行;/n步骤三,利用多种群遗传算法生成覆盖目标路径的测试数据;采用个体信息共享策略,实现各子种群之间的信息交互,但各子种群的个体不参与其它子种群的进化;子种群覆盖其目标路径后,继续尝试覆盖与该目标路径相似度高的其它目标路径,以提高种群中的个体信息的利用率;/n步骤四,多路径覆盖测试数据生成;采用改进的多种群遗传算法,对选出的多条目标路径,求解覆盖这些路径的测试数据。/n...

【技术特征摘要】
1.一种结合关键点概率与路径相似度的多路径覆盖方法,其特征在于,包括以下步骤:
步骤一,基于关键点路径获取被测程序的理论路径;随机生成测试数据集,运行被测程序,得到该数据集对应的覆盖路径并定义为易覆盖路径;通过不可达路径自动检测模型探测到的路径,定义为不可达路径;将剩余理论路径,定义为难覆盖路径;根据生成的易覆盖路径,计算路径中关键点的关键点概率,将难覆盖路径作为目标路径,生成覆盖难覆盖路径的测试数据;
步骤二,统计易覆盖路径中的关键点被覆盖情况,计算关键点概率以及个体对生成覆盖目标路径测试数据的贡献度;将个体贡献度作为适应度函数权重,调整多种群遗传算法的适应度函数;根据关键点概率对目标路径进行排序,排序后优先级高的目标路径对应的子种群在测试数据生成过程中优先执行;
步骤三,利用多种群遗传算法生成覆盖目标路径的测试数据;采用个体信息共享策略,实现各子种群之间的信息交互,但各子种群的个体不参与其它子种群的进化;子种群覆盖其目标路径后,继续尝试覆盖与该目标路径相似度高的其它目标路径,以提高种群中的个体信息的利用率;
步骤四,多路径覆盖测试数据生成;采用改进的多种群遗传算法,对选出的多条目标路径,求解覆盖这些路径的测试数据。


2.如权利要求1所述的结合关键点概率与路径相似度的多路径覆盖方法,其特征在于,步骤一中的所述关键点概率的计算步骤如下:
对被测程序输入m组测试数据in=(l1,l2,…,lm),其中li(1≤i≤m)为一组输入向量,为种群中的个体,得到m条覆盖路径集Pcover={P1,P2,…,Pm},程序中每个分支子关键点Nj(1≤j≤n)被路径覆盖的概率,记为G(Nj);
利用随机生成的测试数据集,及其对应的易覆盖路径,统计易覆盖路径集中的关键点被路径覆盖的情况,如式(1)所示:



其中,Pi∈Pcover,再得到覆盖矩阵,记为Cover,如式(2)所示:



其中,覆盖矩阵的行表示执行被测程序得到的m条覆盖路径P1,P2,…,Pm,列表示路径中的n个关键点N1,N2,…,Nn;
根据覆盖矩阵Cover,得到覆盖关键点Nj的路径数记为Sj,如式(3)所示:



被测程序的关键点概率G(Nj),表示如式(4)所示:



由式(4)可知,关键点被易覆盖路径覆盖的次数越多,关键点概率越高,表示该关键点越容易被覆盖。


3.如权利要求2所述的结合关键点概率与路径相似度的多路径覆盖方法,其特征在于,步骤二中的所述个体贡献度的计算步骤如下:
个体数为m的种群中的个体li(1≤i≤m),对于进化生成覆盖目标路径集Ptar={P1,P2,P3,…,Pk}的目标路径Pk(1≤k≤n)的测试数据所做出的贡献,即为个体li对应的覆盖路径P(li)与目标路径Pk相同关键点的关键点概率之和,记为Con(li,Pk);
根据关键点概率,将个体的贡献度Con(li,Pk)表达成如式(5)所示:



其中,e为自然底数,Nj∈(P(li)∩Pk),G(Nj)为Nj的关键点概率;
在多种群遗传算法进化过程中,一个关键点的关键点概率越高,则该关键点越容易被易覆盖路径覆盖;当个体li对应的覆盖路径P(li)与目标路径Pk相同关键点的关键点概率越高,表示该个体对于生成难覆盖的目标路径所能做出的贡献越低;则关键点概率与个体贡献度之间的关系成反比。


4.如权利要求3所述的结合关键点概率与路径相似度的多路径覆盖方法,其特征在于,步骤三中的所述适应度函数的计算步骤如下:
个体数为m的种群中的个体li(1≤i≤m)的适应度函数由其层接近度、分支距离及个体贡献度组成的,记为F(li);
个体li的层接近度为li对应覆盖路径P(li)与目标路径集Ptar={P1,P2,P3,…,Pn}中的目标路径Pj(1≤j≤n)相同的关键点个数,除以路径Pj的关键点数,记为approach_level(li,Pj);个体li的分支距离参考已有的分支谓词的分支距离计算函数及复合谓词的计算方法,记为branch_distance(li,Pj);为了权衡分支距离与层接近度的大小,并统一为最大化运算,将分支距离规范化表示为个体li对于目标路径Pj的贡献度Con(li,Pj)作为适应度函数的权重;适应度函数F(li)表达成如式(8)所示:



对于目标路径集Ptar={P1,P2,…,Pk}中的每条路径Pj(1≤j≤k),对被测程序输入一组测试数据lj=(sj1,sj2,…,sjm)能够覆盖路径Pj时,目标函数fj=F(lj)取得最大值;多路径覆盖问题要求寻找至少k个测试数据,使其能够分别覆盖这k个目标路径,则问题转化成求解f1,f2,…,fk最大值的优化问题,f1,f2,…,fk最大值的优化如式(9)所示:



其中,Pj∈Ptar;
各个目标函数都对应一条目标路径,目标函数之间相互独立,对于每个目标函数对应于一组测试数据;多路径覆盖问题的最终数学模型表达式如式(10)所示:



在式(10)中,最终数学模型由k个函数构成,每个函数对应一个优化问题,每个优化问题对应一个覆盖目标路径的测试数据。

【专利技术属性】
技术研发人员:钱忠胜祝洁朱懿敏
申请(专利权)人:江西财经大学
类型:发明
国别省市:江西;36

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1