基于GDE3的多阶段动态多目标测试资源分配方法与流程

文档序号:16667020发布日期:2019-01-18 23:20阅读:288来源:国知局
基于GDE3的多阶段动态多目标测试资源分配方法与流程

本发明涉及计算机领域,尤其涉及一种基于gde3的多阶段动态多目标测试资源分配方法。



背景技术:

软件测试的主要任务是检测软件错误和发现纠正缺陷,旨在获得软件质量、可靠性、适用性和客户满意度,因此软件测试在软件开发行业的输出验证和验证中发挥了至关重要的作用.在许多模块软件系统中,尤其对于串并联模块软件系统,尽管在实际中对于简单模块测试数量是无穷尽的,但是大量的串并行模块需要合理的测试资源用来测试。软件测试因此在软件开发的过程中被视为最消耗资源的一环,消耗的资源可占软件开发工程中的50%。如今面临着紧急重要的问题是为了应对模块软件系统规模和复杂度不断增加,找到一种最优测试资源分配方案,充分利用有限的测试最大化软件系统的可靠性.也就是众所周知的最优测试资源分配问题。

早期的测试资源分配方案只涉及单目标优化问题,例如测试资源一定时,使软件可靠性最大化;另外在满足可靠性的前提下,最小化测试资源。软件功能结构的复杂度越来越高以及考虑的问题越来越多,单目标优化问题越发难以适应软件测试资源优化问题,也有通过某些方法将多目标问题转化为单目标问题进行计算,本质都是单目标优化问题。随后,搜索算法不断发展,可以很好的适应多目标问题,同样也适应软件测试资源分配问题。在这部分的研究中,在给定约束的测试资源,最大化测试资源、最小化花费和测试资源。但是在实际软件测试的过程中,软件含有错误数量是不固定的而非固定的,当测试完成后,模块的可靠性有可能远远低于预期或者随后的测试资源不会对可靠性有明显的提高,并且浪费了测试资源。多阶段的思想开始被应用到软件测试中,将多阶段反馈思想与遗传算法相结合,实现了具有反馈特性单个目标优化。将多目标与多阶段资源分配相结合,实现多阶段多目标优化。

在优化方案中,可以通过多阶段反馈思想更加逼近与实际测试,但是优化方案只针对单目标进行优化,并且每个测试阶段的测试资源是固定的。



技术实现要素:

本发明实施例提供一种基于gde3的多阶段动态多目标测试资源分配方法,能够利用多阶段反馈的思想使方案更加贴近实际的软件测试,实现多目标使方案更能适应不断发展的软件系统。

本发明实施例采用如下技术方案:

一种基于gde3的多阶段动态多目标测试资源分配方法,包括:

获取多阶段动态多目标优化模型;

应用gde3算法对多阶段动态多目标优化模型进行优化;

在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化。

基于上述技术方案的基于gde3的多阶段动态多目标测试资源分配方法,获取多阶段动态多目标优化模型,应用gde3算法对多阶段动态多目标优化模型进行优化,在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化。从而利用多阶段反馈的思想使方案更加贴近实际的软件测试,实现多目标使方案更能适应不断发展的软件系统。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1为本发明实施例示出的基于gde3的多阶段动态多目标测试资源分配方法的流程图。

图2为本发明实施例示出的计算结果示意图。

图3为本发明实施例示出的系统测试示意图。

图4为本发明实施例示出的gde3算法流程示意图。

图5为本发明实施例示出的一维实数编码示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

本发明实施例的基于gde3的多阶段动态多目标测试资源分配方法,提供优化的对象(软件测试系统)以及测试资源;采用多阶段思想,每个测试阶段的测试资源预分配,说明需要优化的目标,以及每个测试阶段实际消耗的测试资源和可靠性的计算方法,构成了一个优化模型,该模型是我们最终的目标。优化该模型需要的算法gde3以及对于软件测试系统的采用的编码方式。采用多阶段的思想,在当前阶段通过gde3算法获得一个最优解集时,下一测试阶段的测试资源动态调整、重估可靠性参数的方法本阶段处理优化模型的方式实现,而下一测试阶段的种群初始化详见具体实施例。本发明实施例以同样的方式获得一个最优解集,不断进行,直到完成最后一个测试阶段。

本发明实施例提供一种基于gde3的多阶段动态多目标测试资源分配方法,如图1所示,包括:

11、获取多阶段动态多目标优化模型;

12、应用gde3算法对多阶段动态多目标优化模型进行优化;

13、在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化。

本发明实施例的基于gde3的多阶段动态多目标测试资源分配方法,获取多阶段动态多目标优化模型,应用gde3算法对多阶段动态多目标优化模型进行优化,在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化。从而利用多阶段反馈的思想使方案更加贴近实际的软件测试,实现多目标使方案更能适应不断发展的软件系统。

本发明实施例,多目标算法在一个测试阶段运行完将会的一个种群,并且个体之间是不相互支配的(没有好坏之分),如何在不浪费现阶段的资源的情况下,完成下一阶段的种群初始化.我们提出了两种不同的初始化分配方案。在一个实施例中,在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化包括:

多阶段初始化:当算法完成现阶段的多目标优化模型时,对下一阶段的种群进行初始化,每一个测试阶段阶段下界low=0,第i测试阶段上界在第i测试阶段对每个模块分配测试时间其中rand(low,up)表示low与up之间的随机数,另外对每个模块做以下修正操作,

在一个实施例中,在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化包括:

多阶段动态初始化:当算法完成现阶段的多目标优化模型时,对下一阶段的种群进行初始化,多阶段动态初始化的在利用上述方法进行初始化种群,之后测试阶段通过调整上一测试阶段最优解集使其符合当前测试阶段阈值范围,形成的种群作为当前阶段的初始化种群,利用最优个体消耗的资源占测试资源阈值的比例对上一测试阶段的最优解集进行缩放,比例计算如下:

进而初始化当前阶段的个体:

很显然每个模块及个体都符合当前测试资源阈值的条件,另外还充分的利用上一测试阶段的最优解集。优点在于可以从中间的状态直接到达收敛状态,相比多阶段初始化需要的迭代次数要小;同时在利用了历史解的情况下,存在历史的收敛性,这与重估参数后的收敛方向会有不同,需要花费一定的迭代次数进行调整,从而很好的解决了可靠性连续的问题(即测试阶段与可靠性存在一定的关系)。

在一个实施例中,获取多阶段动态多目标优化模型包括:

多阶段动态多目标优化模型:每个测试阶段都对该优化模型计算获得最优解集,该优化模型是用来比较不同方案之间优劣的标准,多目标模型的测试资源计算和多目标模型的可靠性计算作为多目标函数的优化模型:

其中t表示经过前i阶段后的可靠性和消耗的测试资源,ti为第i测试阶段实际消耗的测试资源,为第i测试阶段第j个子系统第k个模块分配消耗的测试资源,另外,p代表测试阶段的数目、m表示子系统的数目、nj表示第j子系统的模块数量。

在一个实施例中,多目标模型的测试资源计算包括:

多阶段多目标模型的测试资源计算:第i测试阶段实际消耗的测试资源如下:

其中表示模块mjk在测试阶段i中消耗的测试时间;

在实际优化中,第一阶段测试个体实际消耗的测试时间会小于给定的阈值因此将会剩余一定量的测试资源,第二阶段测试阶段的测试时间阈值将会被设置为以此类推在第i测试阶段测试时间阈值为而动态的测试资源阈值要大于固定测试时间在第i阶段结束时实际消耗的测试时间:

上述的等式说明了该优化模型的每个优化阶段的测试时间阈值随着之前阶段的优化结果而动态变化。

在一个实施例中,多目标模型的可靠性计算包括:

多阶段多目标模型的靠性计算:利用软件可靠性增长模型描述了测试资源和可靠性之间的关系,模块mjk在第i测试阶段的错误密度函数可以被表示为:

其中是模块mjk在第i测试阶段的剩余错误的平均值,是检测错误率;

对于软件模块mjk,在第一个测试阶段第q个检测到错误的测试时间为在测试时间区间内检测到的总错误数为通过收集这些错误数据在第一测试阶段结束时(即)写出极大似然函数进而对参数进行估测,通过这种方法,软件测试人员可以收集当前阶段的错误数据,对下一阶段进行参数估计;

一般情况下,参数为相同的比例常数,用bjk代替只不过是需要更多的错误数据来估测,同时很容易得到参数得到下面的一组等式:

通过解上述等式可以估计出参数bjk(即),得到模块mjk在下一个阶段的错误密度函数同时可以得出剩余错误数随阶段数增加而递减,如图2,模块mjk在第i测试阶段的可靠性可以通过来计算:

其中x(x≥0)表示软件系统的任务时间,当第i测试阶段测试完成时,模块mjk的可靠性不是因为可靠性rjk(·)与测试阶段是非线性关系,而采用估测的目的是减少模块剩余错误的数量,避免在下一测试阶段浪费测试资源,在子系统sj中,模块是并行的,根据并行的系统的计算方法可以写出子系统的sj在第i测试阶段测试的可靠性为根据这种乘法原则,进一步可以写出在由m个串联子系统的软件系统的整体的可靠性为:

在一个实施例中,获取多阶段动态多目标优化模型之前,还包括:

软件系统类型以及测试资源:选用最能拟合现实软件系统的串并联软件系统,一个大规模复杂串并联软件系统包括m(m∈¥)个子系统,s1,l,sj,l,sm,每个子系统sj(j∈{1,l,m})包含nj(nj∈¥)并行模块mj1,l,mjnj如图3。

在软件测试中,可有的测试资源包括人员、cpu时间、可测试实例。我们假设根据每个测试人员的工作时间计算出可用的总测试时间的阈值t*,例如有10个人参与测试,每个人都有1000个小时的时间用在测试任务中,t*=10·1000=10000,对总的测试资源阈值t*初步分配成p(p∈¥)连续的阶段,其中

在一个实施例中,获取多阶段动态多目标优化模型包括:

应用第三代差分进化算法gde3以及编码方式优化多目标优化模型。

gde3算法的基本流程如图4所示.,根据阈值初始化种群,该种群为父代种群,并且计算每个个体目标函数;从父代种群中选出进行交叉和变异的个体,从而产生过渡种群,对过渡种群进行非支配排序操作得到过渡种群的支配层级;

计算每个层级的拥挤距离;

根据支配层级以及拥挤距离的大小选出与父代种群相同的子代种群,不断的迭代到设置的代次数停止。本文采用以为编码结构。一维实数编码比较简单、容易理解,并且适用于otraps的划分特征,能够为以后问题的解决提供方便,同时也能够提高设计算法的性能空间。图5展示了一维实数编码,它代表着在第i测试阶段中的一种测试分配方案,每部分表示子系统sj的编码形式,每个元素代表模块mjk的测试时间。

本发明实施例,在发明方案给每个测试阶段预设测试资源阈值,根据现阶段实际消耗的测试资源动态的调整下一阶段的测试资源阈值;每个阶段测试结束后,通过该阶段检测到的错误数以及错误发生的时间点,利用数学编程技术和检测到错误数据出现的时间重估模型中的参数;在每个阶段开始时,采用两种不同的种群初始化方案。一种是随机初始化,另一种是利用历史种群按照比例的方式初始化现阶段种群。从而利用多阶段反馈的思想使方案更加贴近实际的软件测试,实现多目标使方案更能适应不断发展的软件系统。

本发明实施例的基于gde3的多阶段动态多目标测试资源分配方法,获取多阶段动态多目标优化模型,应用gde3算法对多阶段动态多目标优化模型进行优化,在当前阶段通过gde3算法获得一个最优解集时,对下一阶段种群初始化。从而利用多阶段反馈的思想使方案更加贴近实际的软件测试,实现多目标使方案更能适应不断发展的软件系统。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。

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