基于多目标差异演化算法的软件测试资源动态分配方法

文档序号:8922470阅读:402来源:国知局
基于多目标差异演化算法的软件测试资源动态分配方法
【技术领域】
[0001] 本发明涉及软件测试方法领域,具体是一种基于多目标差异演化算法的软件测试 资源动态分配方法。
【背景技术】
[0002] 随着软件系统的广泛应用,软件复杂度不断提高,包括的模块越多。在测试过程 中,每个模块都需要经过测试。特别是在软件的单元测试中,不同模块的测试活动都在激烈 争夺有限的测试资源,不同的测试活动也会带来不同的成本的上升与可靠性的增加。软件 工程师必须清楚如何将测试资源分配给不同的模块测试。测试资源分配问题就是如何把有 限的测试资源分配给每一个模块,从而保证软件系统的可靠性最大。
[0003] 测试资源分配问题是系统可靠性优化中的关键和重要问题。自二十世纪九十年代 以来,已经成为研宄的热点问题。目前的研宄大都是基于测试代价、系统可靠性、测试资源 为核心的多目标优化问题。
[0004] 但是已有的测试资源分配模型和分配方法均属于静态分配测试资源的方法,即根 据系统初始时刻各模块的可靠性进行测试资源的分配,很少考虑各模块可靠性随着测试进 程发生变化的情况。这些模型和方法的缺点是会造成测试资源大量浪费在可靠性已经很 高、不在需要测试资源的模块上,导致在测试完成后,有些模块的可靠性远远低于系统的 可靠性,使软件测试的效果不佳。

【发明内容】

[0005] 本发明的目的是提供一种基于多目标差异演化算法的软件测试资源动态分配方 法,以解决现有技术软件测试资源分配方案因不考虑各模块可靠性随着测试进程发生变化 的情况而导致测试资源浪费、测试效果差的问题,。
[0006] 为了达到上述目的,本发明所采用的技术方案为:
[0007] 基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:包括以下 步骤:
[0008] (1)、对所求问题进行分析,为可行解设计编码方法;
[0009] (2)、对整个测试环节进行划分,划分为若干个测试阶段;
[0010] (3)、对差异演化算法中的种群规模、迭代次数、交叉概率、变异概率等控制参数进 行设置;
[0011](4)、对种群进行初始化操作;
[0012] (5)、对种群中的个体进行变异操作;
[0013] (6)、对变异生成的个体与原种群中的个体进行交叉操作;
[0014](7)、采用非支配排序机制进行选择操作;
[0015] (8)、判断是否达到最大迭代次数,若否,则跳到步骤(5),继续进化操作;若是,则 跳到步骤(9);
[0016](9)、对pareto解进行解码;
[0017] (10)、判断是否还存在未进行的测试阶段,若存在,跳到步骤(11);若否,则结束 求解过程;
[0018](11)、更新下一测试阶段的测试资源,跳到步骤(4),进入下一测试阶段。
[0019] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(1)中为可行解进行一维整数向量编码;且若软件系统包含m个串联子系统,每个子系统 Sj(j= 1,2,…,m)由rij个并联模块M#,…,Mjk,…组成,贝1」每个个体包含m个整数向 量Fj,…,Fj…,Fm,每个向量包含nj个元素tjl,…,tjk,…,,tjk表不模块Mjk所分配 到的测试资源。
[0020] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(2)中,将测试资源T分为p个测试阶段:
[0021] (T0= 0,TJ,...,(ThA]T]〇
[0022] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(3)中,对差异演化算法中的种群规模、迭代次数、交叉概率、变异概率等控制参数进行 设置。
[0023] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(4)中,对种群进行初始化操作,按照不同测试阶段采用不同的种群初始化方法;
[0024] 在步骤⑷中,对于第i= 1个测试阶段〇;= 0,TJ,由于系统各个模块的可靠 性都较低,采用随机的方法初始化每个子系统中每个模块的测试资源:
[0026] 其中,rand(Ul,u2)函数表示在区间(Ul,u2)内随机取整数;
[0027] 在步骤⑷中,对于第i个(i彡2)测试阶段d,TJ,种群初始化的方法是根据 模块已达到的可靠性rjk分配测试资源:
[0029]其中,0是用户希望达到的模块可靠性阈值rjk是模块Mjk已经达到的可靠性值。[0030] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(5)中,对种群中的个体进行变异操作,采用方法是DE/best/2/bin模式。
[0031] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(6)中,对变异生成的个体与原种群中的个体进行位交叉操作,生成2个不同的个体。
[0032] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(7)中,采用非支配排序机制进行选择操作,选择的对象集合包括原种群个体、变异后的 个体以及交叉产生的个体;
[0033] 步骤(7)中,非支配排序机制是指对种群按照优化目标函数进行分层,并计算个 体拥挤度来衡量个体在每层的优劣,然后根据个体的分层和拥挤度的大小选取较优的个体 组成新的种群;
[0034] 步骤(7)中,优化目标函数为:
[0038] s.t.
[0039] Tia^T
[0040] 0 <tiJk彡T「Th
[0041] 其中,tijk表示模块Mjk在第i个测试阶段所分配到的测试资源,rijk表示模块MJk 在第i个测试阶段的可靠性值,且rijk=rjk (x/tijk),氏(xATi-Tg))、(;和Tia分别表示软件 系统在第i个测试阶段的总体可靠性、总体测试代价和系统实际消耗的总测试资源,hk(X/ tijk)和qk(i^k)分别表示模块M#在第i个测试阶段的可靠性和测试代价,均为测试资源的 函数。
[0042] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(9)中,对pareto解进行解码,具体操作包括:计算每个模块的可靠性rjk,计算每个模块 的测试代价qk,计算软件系统的实际测试时间T,。
[0043] 所述的基于多目标差异演化算法的软件测试资源动态分配方法,其特征在于:步 骤(11)中,更新下一测试阶段的测试资源,方法为:
[0044] 凡―Ti-CTi-TH-Tj)。
[0045] 本发明提出了一种基于多目标差异演化算法的软件测试资源动态分配方法,考虑 各模块可靠性随着测试进程发生变化的情况,在测试进程中动态地为各个模块分配测试资 源,可以节省系统测试资源的消耗,提高测试效率,提高软件系统的可靠性。本发明优点 为:
[0046] (1)本发明采用的是以测试资源为约束、联合优化系统可靠性、系统测试代价和实 际消耗的系统测试资源,不会由于三者分离而产生某一方面性能损失;
[0047] (2)本发明将整个测试环节划分为若干个测试阶段,在每个测试阶段根据前一测 试阶段的可靠性为每个模块动态地分配测试资源,解决了已有测试资源分配方案带来的测 试资源浪费、测试效率低的缺陷;
[0048] (3)本发明中采用的是基于非支配排序机制的多目标差异演化算法,搜索速度快、 解质量高,因此可以在系统可靠性、系统测试代价和实际消耗的系统测试资源之间达到平 衡;
[0049] (4)最后,由于演化算法操作简单,性能好,曾在首届IEEE演化计算大赛中表现超 群,非常适合在实际系统中取得应用,有较好的应用前景。
【附图说明】
[0050] 图1为本发明实施例中基于多目标差异演化算法的软件测试资源动态分配方法 的流程示意图;
[0051]图2为本发明实施对象串并行软件系统结构示意图。
[0052] 图3为本发明采用的一维整数向量编码示意图。
[0053] 图4为软件测试环节划分示意图。
[0054]图5为本发明一个实时实例串并行软件系统结构示意图。
[0055] 图6为本发明的一个实施实例中本发明技术与现有技术结果的对比。
【具体实施方式】
[0056] 本发明为了解决现有技术中软件测试资源分配方案因不考虑各模块可靠性随着 测试进程发生变化的情况而导致测试资源浪费、测试效果差的问题,提供了一种基于多目 标差异演化算法的软件测试资源动态分配方法,该方法主要应用于如图2所示的串并行软 件系统的模块测试中。如图1的流程图所示,本发明中的方法的基本过程为:
[0057] S1,对所求问题进行分析,为可行解设计编码方法;
[0058] S2,对整个测试环节进行划分,划分为若干个测试阶段;
[0059]S3,对差异演化算法中的种群规模、迭代次数、交叉概率、变异概率等控制参数进 行设置;
[0060]S4,对种群进行初始化操作;
[0061] S5,对种群中的个体进行变异操作;
[0062] S6,对变异生成的个体与原种群中的个体进行交叉操作;
[0063] S7,采用非支配排序机制进行选择操作;
[0064]S8,判断是否达到最大迭代次数,若否,则跳到S5,继续进化操作;若是,则跳到 S9;
[0065]S9,对pareto解进行解码;
[0066]S10,判断是否还存在未进行的测试阶段,若存在,跳到S11;若否,则结束求解过 程。
[0067] S11,更新下一测试阶段的测试资源,跳到S4,进入下一测试阶段;
[0068] 下面对本发明的方案做进一步的说明。在本发明的方案中,首先假设串并行软 件系统由m个串联子系统构成,每个子系统Sj(j= 1,2,…,m)由rij个冗余模块Mjp… ,Mjk,并联组成;每个模块的测试是单独进行的;任意模块M#的平均失效次数符合非 齐次泊松过程分布;每次失效(错误)的发生是相互独立的。
[0069] 步骤S1中涉及编码设计:
[0070] 采用一维整数向量编码表示一个个体,如图3所示。在每个编码中,有m个整数向 量,r』,…,r』???,rm,每个向量包含nj个元素t#,…,tjk,…,%。r』表不子系统s』中每 个模块分配到的测试资源向量,且
[0071] r,' =~夕卩,…,、.,tjk> 0,k= 1,2,…,nj
[0072] 其中tjk表示模块Mjk所分配到的测试资源。
[0073] 步骤S2中涉及测试阶段划分:
[0074]如图4所示,将测试资源T分为p个测试阶段:
[0075] (T0= 0,TJ,…,(Th,凡],…,(V"Tp=T]
[0076] 步骤S3中涉及控制参数设计:包括种群规模、
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1