一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于进化算法的并行程序测试路径选择方法

2023-01-14 17:49:40 来源:中国专利 TAG:


1.本专利属于软件测试领域,具体涉及一种并行程序路径测试的路径选择优化模型及其进化求解方法,可用于软件测试中生成具有代表性的并行程序路径集。


背景技术:

2.软件测试是软件适量评价和改进的过程,也是软件质量保证的重要手段,贯穿整个软件开发生命周期。软件测试的工作量很大,寻找降低软件测试耗时的方法日益迫切。
3.并行程序,由两个及以上进程组成的程序,区别于串行程序。其中通过消息传递环境扩展串行程序得到的消息传递并行程序应用广泛。目前,常用的消息传递环境包括mpi和pvm。其中mpi是消息传递应用程序接口,用来开发消息传递并行程序。作为高性能计算的主要模型,mpi具有高性能、大规模性和可移植性等特点。
4.路径测试是白盒测试中一种重要的的动态分析方法,该方法通过设计足够的测试数据覆盖程序中所有可能的路径。但即使规模不大的程序,包含的路径数量也可能很惊人,其中包含了大量的冗余路径,如果选择的路径集能在保证满足测试充分性准则的情况下,尽可能的去除冗余路径,将能够节省大量测试成本。
5.进化算法是现阶段应用广泛的全局优化算法,具有高鲁棒性和广泛适用性。进化算法也用于解决多目标优化问题,其中改进的非支配排序遗传算法是目前最优越的、应用最广泛的多目标优化算法,这个算法通过非支配排序和拥挤距离的偏序关系选择个体。非支配排序可以得到种群中所有个体所处的层次,拥挤距离的计算则可以判断同一层次个体的优劣关系。


技术实现要素:

6.本发明以若干并行路径组成的路径集作为决策变量,以包含的控制边和通信边的总数、决策变量中路径的条数以及路径集的覆盖难度为目标,建立多目标优化模型;然后,采用的基于nsga-ii的进化求解方法求解该模型,在得到的帕累托最优解集中选择包含边数最多的路径组成目标路径集。
7.本发明要解决的技术问题:克服现有方法的不足,保证测试充分性的前提下,减少冗余路径的数量并降低覆盖难度,从而减少生成测试数据时的时间消耗,提高测试效率。
8.本发明的技术方案:提出了一种基于进化算法的并行程序测试路径选择方法,其特征在于如下步骤:
9.步骤1:基路径集获取
10.分析程序控制流图、dd图,对每个进程的dd图初始化所有路径,再通过选择、交叉、变异、育种操作获得完整路径,并对所得路径进行可行性检查,若此可行的路径为独立路径,则将其添加到基路径集中。
11.步骤2:建立路径选择优化模型
12.以若干条并行程序的路径集合为决策变量,以包含的控制边和通信边的总数、决
策变量中路径的条数、路径集的覆盖难度以及并行通信相关指标为目标,建立路径选择问题的多目标优化模型。
13.目标函数基于公式,以路径集包含边数f1,路径覆盖难度f3,路径集中路径条数f2,设计如公式所示的目标函数,用于评价种群中个体的目标函数值。
[0014][0015]
其中f4的目标是期望该路径包含的路径少且覆盖难度小,这样的路径集通常包含的边也少,而f1的目标是包含的边越多越好,因此这个模型是典型的两目标最小化问题模型。
[0016][0017]
路径集包含的边数表示为控制边和通信边的总数。
[0018]
f2(x)=|x|表示路径集中包含的路径条数
[0019]
表示路径集的覆盖难度,由五个不同的覆盖难度指标组合而成
[0020]
步骤3:使用多目标进化算法
[0021]
种群初始化根据并行程序各进程子路径组合关系,确定在不含重复路径的情况下,覆盖所有边最多所需要的路径数,从而确定个体规模的变化区间,个体规模是一个个体内路径的数量。在获得的每个进程的基础路径中随机选取一条子路径,组合成一条并行路径,重复操作直到达到个体规模。初始种群是由若干个个体组成,重复构造个体即可得到初始种群。
[0022]
执行遗传操作遗传操作包括选择,交叉,变异。由于这是一个最小化问题,因此,选择较小目标函数值对应的个体。交叉包括集合间交叉和集合内交叉。集合间交叉是分别在不同集合内两个体中随机选择一个交叉点,将两个体从各自交叉点到末尾的基因互换。集合内交叉,是对集合内的所有路径配对,分别在两个体中随机选择一个交叉点,将两个体从各自交叉点到末尾的基因互换。在变异过程中,首先,依据个体变异概率判断需要执行变异操作的个体:然后,在个体中随机选择一个需要变异的路径;接着,从该路径中随机选择一个进程的子路径作为变异点;最后,找到变异点子路径从属进程的基路径集,从中随机选择一条与变异点子路径不同的子路径进行替换。
[0023]
非支配集排序和拥挤距离计算
[0024]
这是nsga
‑ⅱ
与传统遗传算法的不同之处。对于种群p中的个体,当不被其他个体所支配时,该个体为非支配个体,非支配个体组成的集合为非支配集,根据支配情况分为不同层次。对于同一层次的个体计算拥挤距离,判断同一层次个体的优劣。
[0025]
步骤4:生成路径
[0026]
当达到设定的最大进化代数maxgen时即得到pareto最优解集,之后选择其中包含边数最多的路径集作为目标路径集。
[0027]
与现有技术相比,本发明的有益效果是:
[0028]
1、给出了定义并行路径覆盖难度的指标,添加了对并行程序不确定性的考虑
[0029]
2、在保证测试覆盖率的情况下,有效减少路径集包含的路径条数并使其通信路径
占比大
[0030]
3、采用多目标进化算法选择路径,有效降低了测试数据生成的时间消耗,提高了路径测试效率
附图说明
[0031]
图1是本发明的总流程图;
[0032]
图2是执行遗传操作的代码;
[0033]
图3是根据目标函数计算个体适度的代码;
[0034]
图4是对个体进行非支配排序的代码;
[0035]
图5是计算个体拥挤距离的代码;
具体实施方式
[0036]
该部分使用c语言编写程序,实现了本发明所提到的方法,比结合具体附图和实例对其进行详细说明。
[0037]
图1为本发明所提出的一种基于进化算法的并行程序测试路径选择方法的流程图。给出所提方法的具体实施步骤之前,这里定义如表1所示的变量。
[0038][0039]
所提方法具体实施步骤如下:
[0040]
步骤1:基路径集获取
[0041]
分析程序控制流图、dd图,对每个进程的dd图初始化所有路径,再通过选择、交叉、变异、育种操作获得完整路径,并对所得路径进行可行性检查,若此可行的路径为独立路径,则将其添加到基路径集中。
[0042]
步骤2:建立路径选择优化模型
[0043]
首先定义这一步骤使用变量
[0044][0045]
以若干条并行程序的路径集合为决策变量,以包含的控制边和通信边的总数、决策变量中路径的条数、路径集的覆盖难度以及并行通信相关指标为目标,建立路径选择问题的多目标优化模型。
[0046]
目标函数基于公式,以路径集包含边数f1,路径覆盖难度f3,路径集中路径条数f2,设计如公式所示的目标函数,用于评价种群中个体的目标函数值
[0047][0048]
其中f4的目标是期望该路径包含的路径少且覆盖难度小,这样的路径集通常包含的边也少,而f1的目标是包含的边越多越好,因此这个模型是典型的两目标最小化问题模型。
[0049][0050]
路径集包含的边数表示为控制边和通信边的总数。
[0051]
f2(x)=|x|表示路径集中包含的路径条数
[0052]
表示路径集的覆盖难度,由五个不同的覆盖难度指标组合而成
[0053][0054]
步骤3:使用多目标进化算法
[0055]
使用进化算法需要先定义个体,初始化种群,再按照图2执行遗传操作,遗传操作包括选择,交叉,变异。由于这是一个最小化问题,因此,选择较小目标函数值对应的个体,按照图3计算对应的适应度函数值。
[0056]
再使用图4所示函数对于种群p中的个体,作非支配集排序,得到个体在种群中所处的层次,再根据图5,对于同一层次的个体计算拥挤距离,进而判断同一层次个体的优劣。
[0057]
步骤4:生成路径
[0058]
当达到设定的最大进化代数maxgen时即得到pareto最优解集,之后选择其中包含边数最多的路径集作为目标路径集。
[0059]
接下来以一个并行程序为例,说明本发明所提方法的有效性
[0060]
所选程序包含四个进程,nsga-ii算法参数集合间交叉概率和集合内交叉概率都为0.7,变异概率为0.1,种群规模为500,进化代数为100。遗传算法的控制参数设置如下:个体采用二进制编码,采用轮盘赌选择、单点交叉和单点变异,且交叉和变异概率分别为0.9和0.3,取种群规模为100,进化代数为2000;
[0061]
将所提方法与随机方法对比,使用随机法生成路径集时,先随机从每个进程的基路径集中各选取一条作为子路径,再将它们组合,添加到路径集中。在相同环境下,分3批次,每批次执行10此本发明所提方法与对比方法,并计算生成路径集正常通信路径占比以及覆盖时间消耗。其中正常通信路径占比是指生成路径集中能够完成正常通信路径的比例,反应了路径集的质量;覆盖时间反应路径覆盖难度,时间越短,说明覆盖难度低,能够减少时间消耗。
[0062]
实验结果如下表所示。
[0063][0064]
由表可知,本发明所提方法能够高效生成用于并行程序路径测试的路径集。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献