一种多目标测试序列集优化生成方法与流程

文档序号:15382800发布日期:2018-09-08 00:13阅读:233来源:国知局

本发明涉及算法优化设计与高速铁路列车运行控制系统测试领域,尤其涉及一种多目标测试序列集优化生成方法。



背景技术:

作为高速铁路系统的核心,列车运行控制系统(列控系统)融合了通信、计算机、控制和铁路信号等技术,是保证列车行车安全、提高列车运行效率的关键技术设备之一。系统的任何安全相关功能的故障都有可能造成不可估量的灾难性后果,在投入使用之前必须对其进行严格的系统功能测试,以保证列控系统软硬件功能的完整性和正确性。随着系统结构、交互关系和功能逻辑的日益复杂,列控系统的测试变得更加困难,仅依靠现场测试来验证系统功能的正确性,不仅需要花费大量的时间,还需要投入大量的人力物力财力,而且难以构建特殊场景,无法保证测试的充分性。如何在满足相应测试准则的基础上,降低测试成本,提高测试效率和覆盖范围,是列控系统测试工作中亟待解决的问题。

多目标测试序列集优化生成是列控系统功能测试中的一项重要工作。针对列控系统各个运营场景的逻辑关系和深度优先搜索算法生成包含冗余测试用例的测试序列池,在满足测试用例全覆盖的准则上,根据多个优化目标对测试序列池中的测试序列进行选择性地优先排序,旨在让那些等级较高的测试序列尽可能早地执行,有利于快速定位系统,以便提高列控系统功能测试的效率。

传统的测试序列优化方法存在以下问题:一是以度量准则为准,传统优化方法以单一测试目标指导测试序列的优化生成过程,无法满足实际测试中多个客观因素的约束;二是以解决方法为准,包括线性规划、搜索等的优化方法存在收敛速度过慢,容易陷入局部最优等问题,因此,传统的测试序列优化方法已经无法满足实际测试的需要。



技术实现要素:

本发明的目的是提供一种多目标测试序列集优化生成方法,可以从测试序列池中选择性地生成最优的测试序列集,即求解满足测试用例覆盖准则的部分测试序列的顺序排列,以提高测试效率。

本发明的目的是通过以下技术方案实现的:

一种多目标测试序列集优化生成方法,包括:

建立测试序列集优化生成模型,进而确定影响测试序列优化生成的因素;

通过深度优先搜索算法生成包括全部测试用例集的测试序列池,根据测试序列集优化生成模型中特定参数设计启发式函数,根据影响测试序列优化生成的因素来设计适应度函数,并结合基于改进最大最小蚁群算法求解测试序列池中满足测试用例覆盖准则的最优构造解集。

由上述本发明提供的技术方案可以看出,其主要具有如下有益效果:(1)首次将智能优化算法和多目标优化生成引入到列控系统功能测试领域中,在满足测试用例全覆盖准则的基础上,提高测试效率和覆盖范围;(2)将测试序列重要度、测试序列路径长度和平均测试用例覆盖率作为共同优化目标,可以在测试过程中尽早地检测出比较重要的缺陷;(3)通过设置信息素的最大值和最小值来约束测试序列上的信息素浓度,通过初始蚁群的放置规则加快算法的搜索速度,通过局部信息素更新策略和全局信息素更新策略避免算法过早陷入局部最优,通过删除每次迭代后包含测试序列数量最多的构造解集区间提高算法的工程应用性,通过快速非支配排序方法对构造解的优劣性进行评估,这些算法优化设计使得生成的测试序列不仅具有较好的优先级,而且具有较快的生成效率,从而提高测试效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的一种多目标测试序列集优化生成方法的流程图;

图2为本发明实施例提供的基于改进最大最小蚁群算法求解测试序列池的最优构造解集的流程图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

本发明实施例提供一种多目标测试序列集优化生成方法,如图1所示,其主要包括如下步骤:

步骤1、建立测试序列集优化生成模型,进而确定影响测试序列优化生成的因素。

一、建立测试序列集优化生成模型。

1)定义测试需求覆盖的系统需求集r={r1,…,rx},测试用例集c={c1,…,cy},路径节点集n={n1,…,nz},测试序列池s={s1,…,sl},蚁群k={1,..,antnum},蚁群遍历过的测试用例集tabuc={tabuck|k∈k}和测试序列集tabus={tabusk|k∈k};

2)定义测试需求覆盖矩阵δ(r,c)为测试用例集c到系统需求集r的覆盖关系,定义为|r|×|c|矩阵,δ(r,c)的矩阵元素为:

3)定义路径节点覆盖矩阵δ(n,c)为测试用例集c到路径节点集n的覆盖关系,定义为|n|×|c|矩阵,δ(n,c)的矩阵元素为:

4)定义测试用例覆盖矩阵δ(c,s)为测试序列池s到测试用例集c的覆盖关系,定义为|c|×|s|矩阵,δ(c,s)的矩阵元素为:

5)定义测试用例遍历矩阵δ(c,tabuc)为蚁群遍历过的测试用例集tabuc到测试用例集c的覆盖关系,定义为|c|×|tabuc|矩阵,δ(c,tabuc)的矩阵元素为:

6)定义测试用例重要度为测试用例覆盖的测试需求重要度之和,表示为:

其中,根据需求在运营场景中出现的概率和需求本身的复杂程度来设定测试需求重要度值,可划分为4个等级,分别为必用、常用、很少用和几乎不用,其需求重要度可以预先设定,示例性的,可以分别赋值为1,0.7,0.4,0.1;

7)定义测试序列重要度为测试序列覆盖的测试用例重要度之和,表示为:

8)定义测试用例路径长度为测试用例覆盖的路径节点个数,表示为:

9)定义测试序列路径长度为测试序列覆盖的测试用例路径长度之和,表示为:

10)定义测试序列关注覆盖率为针对蚂蚁k,测试序列中未被tabuck覆盖的测试用例个数和测试序列中测试用例总数的比值,由于将作为测试序列上的启发信息,因此不能等于0,对分子和分母分别做加1处理,表示为:

二、确定影响测试序列优化生成的因素。

针对列控系统功能测试而言,考虑的主要影响因素有三个,测试序列重要度、测试序列路径长度和平均测试用例覆盖率。

1)测试序列重要度。为了尽早地检测到严重等级较高的功能缺陷,优先执行重要度等级较高的测试序列。实际上,在运行场景中经常使用的需求仅有40%左右,对重要度等级较高的功能优先进行验证和测试,能够提高测试效率。

2)测试序列路径长度。测试序列包含的测试路径越长,测试步骤越多,越具有检错潜力。

3)平均测试用例覆盖率。相同覆盖准则的情况下,平均测试用例覆盖率更高的测试序列更具有检错潜力。

本发明实施例中,测试序列重要度、测试序列路径长度和平均测试用例覆盖率,这三个影响因素将用于设计适应度函数f1、f2、f3,其中的平均测试用例覆盖率主要用于设计适应度函数f1,f1鼓励对平均测试用例覆盖率贡献大(此处的贡献大即为贡献超过预定目标)的测试序列排在构造解的前面,具体的将在后文进行介绍。

步骤2、通过深度优先搜索算法生成包括全部测试用例集的测试序列池,将测试序列重要度、测试序列路径长度和测试序列关注覆盖率作为启发式函数,同时根据影响测试序列优化生成的因素设计适应度函数,并结合基于改进最大最小蚁群算法求解测试序列池中满足测试用例覆盖准则的最优构造解集。

本步骤中,通过深度优先搜索算法生成包括全部测试用例集的测试序列池后,对测试序列池中所有测试序列进行统一编号,并求解测试序列重要度与测试序列路径长度(可以通过步骤1中的相关公式来计算);然后,将测试序列路径长度中前sum(s)/2个测试序列和测试序列重要度中前sum(s)/2个测试序列存入初始化候选测试序列集sinit,删除sinit中重复的测试序列;其中,sum(s)表示生成的测试序列池中测试序列的总数。

然后,将测试序列重要度、测试序列路径长度和测试序列关注覆盖率作为启发式函数,同时根据影响测试序列优化生成的因素设计适应度函数,并结合基于改进最大最小蚁群算法求解满足测试用例覆盖准则的最优构造解集;主要流程如图2所示,包括:

步骤s01、初始化测试序列上的信息素影响系数α,测试序列上的启发信息影响系数β、局部信息素挥发系数ω和全局信息素挥发系数ρ,设置蚁群数量antnum=sum(sinit),设置最大迭代次数nmax=20·sum(sinit);其中,sum(sinit)表示初始化候选测试序列集sinit中测试序列的总数。

步骤s02、根据启发式函数初始化各个测试序列上的启发信息。

本发明实施例中,tabuc覆盖测试序列中测试用例的数量越少,说明此测试序列对tabuc的贡献度越大。顺序选取对测试序列重要度、测试路径长度、tabuc贡献最大的测试序列。启发式函数表示为:

其中的均为启发信息,均为常量,随着tabuck的变化而变化,满足为了使得进行归一化处理,即其中,分别表示中的最大值,启发式函数表示为:

步骤s03、设置信息素的最大值τmax和最小值τmin,设置各个测试序列上的初始信息素等于τmax:

其中,nc表示迭代次数,变量avg=nc/2,pbest为一个系数,可以设置pbest=0.5;

步骤s04、开始迭代过程,设置当前迭代值nc=1。

步骤s05、清空禁忌表tabusk和tabuck,将蚁群随机放置sinit中的测试序列上;禁忌表解释为每一次迭代时,第蚂蚁k遍历过的测试用例集tabusk和测试序列集tabuck。

步骤s06、设置当前蚂蚁k=1。

步骤s07、根据转移概率选择下一个遍历的测试序列,更新禁忌表tabusk和tabuck:

其中,为蚂蚁k从第i个测试序列si到第j个测试序列sj的转移概率,d为优化目标,τj为第j个测试序列sj上的信息素值,为第j个测试序列sj上的第d个启发信息,α为测试序列上的信息素影响系数,β为测试序列上的启发信息影响系数,为蚂蚁k遍历的测试序列集,s为生成的测试序列池。

步骤s08、通过局部信息更新策略更新当前测试序列上的信息素值为:τi(t+n)=(1-ω)τi(t)+ωτi(0),其中,τi为第i个测试序列si上的信息素值,t表示时刻。根据信息素的最大值τmax和最小值τmin对信息素值进行限制,根据启发式函数更新当前测试序列上的启发信息。

步骤s09、如果tabuck未覆盖测试用例集c,返回步骤s07,否则执行步骤s10。

步骤s10、将蚂蚁k遍历的测试序列集表示为一个构造解,更新当前蚂蚁k=k+1。

步骤s11、如果k≤antnum,返回步骤s07,否则执行步骤s12。

步骤s12、蚁群遍历的测试序列集表示为构造解集。以测试序列数量为基准,将构造解集进行10等分划分,删除包括测试序列数量最多的构造解集区间内的构造解。

步骤s13、计算每个构造解的适应度函数f1~f3,根据适应度函数值的大小判断构造解集的优劣性:

其中,m1表示构造解中测试序列的数量(不一定等同于测试序列池的测试序列数量),ssy表示覆盖测试用例cy的第一个测试序列在构造解中的顺序位置,f1鼓励对平均测试用例覆盖率贡献大的测试序列排在构造解的前面;y表示测试用例集的数量,h表示测试序列sh在构造解(即所求的测试序列集)中的顺序位置,表示测试序列sh重要度,表示测试序列sh路径长度,c1和c2属于整型常数,用于控制评估函数的值域,f2和f3鼓励具有更高重要度和更长路径的测试序列排在构造解的前面。

步骤s14、根据nsga-ii算法中的快速非支配排序法求解排名最高的构造解前沿集,作为本次迭代的最优解集前沿集g;步骤如下:

1)初始化变量dii和dii:对于种群p,设置dii=0,dii为空集合。

2)对于个体jj∈种群p,如果个体ii支配个体jj,则将个体jj存入dii;否则dii=dii+1。

3)如果dii=0,将个体ii加入前沿集合。

4)输出本次迭代的最优解集前沿集。

其中,蚁群每次迭代后将产生antnum个构造解(种群p),快速非支配排序法是计算每只蚂蚁的构造解(个体)的两个参数dp和dp,其中dp代表种群p中支配个体p的个体数,dp代表种群p中被个体p所支配的个体集合。

步骤s15、将本次迭代的最优解集前沿集g存入全局最优解前沿集g′。针对全局最优解前沿集,再次根据快速非支配排序法求解排名最高的构造解前沿集,更新全局最优解前沿集g′,保持全局最优解前沿集g′的全局最优性。

步骤s16、通过全局信息素更新策略对全局最优解前沿集g′的所有测试序列更新信息素值,通过信息素的最大值τmax和最小值τmin对信息素值进行限制:

其中,τi为第i个测试序列si上的信息素值,t表示时刻,fmin=(f1+f2+f3)min表示全局最优构造解集中的最小适应度值。

步骤s17、更新信息素的最大值τmax和最小值τmin,更新迭代次数nc=nc+1。

步骤s18、如果nc≤nmax,返回步骤s05,否则执行步骤s19。

步骤s19、流程结束,将最终获得的全局最优解前沿集g′作为最优构造解集。

本发明上述方案主要具有如下有益效果:(1)首次将智能优化算法和多目标优化生成引入到列控系统功能测试领域中,在满足测试用例全覆盖准则的基础上,提高测试效率和覆盖范围;(2)将测试序列重要度、测试序列路径长度和平均测试用例覆盖率作为共同优化目标,可以在测试过程中尽早地检测出比较重要的缺陷;(3)通过设置信息素的最大值和最小值来约束测试序列上的信息素浓度,通过初始蚁群的放置规则加快算法的搜索速度,通过局部信息素更新策略和全局信息素更新策略避免算法过早陷入局部最优,通过删除每次迭代后包含测试序列数量最多的构造解集区间提高算法的工程应用性,通过快速非支配排序方法对构造解的优劣性进行评估,这些算法优化设计使得生成的测试序列不仅具有较好的优先级,而且具有较快的生成效率,从而提高测试效率。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1