基于MOEA/D算法的回归测试用例多目标优化方法技术

技术编号:11723907 阅读:280 留言:0更新日期:2015-07-11 15:36
本发明专利技术公开了一种基于MOEA/D算法的回归测试用例多目标优化方法,用于解决现有回归测试用例多目标优化方法复杂的技术问题。技术方案是从影响测试用例效用的所有属性中选取三个属性,分别测定所述三个属性对于测试用例效用的影响程度,采用GCC编译器的内置插件GCOV测定代码覆盖率,测定分支覆盖过程使用插装程序分析被测程序源码,在其中的if-else分支、for循环、do-while和while-do循环之中插入检测代码,采用开源工具Valgrind测试用例执行时间。本发明专利技术采用MOEA/D算法进行回归测试用例集三目标优化,在完整覆盖各项测试需求的情况下,可以有效的进行测试用例集优化,方法简单。

【技术实现步骤摘要】
基于MOEA/D算法的回归测试用例多目标优化方法
本专利技术涉及一种回归测试用例多目标优化方法,特别是涉及一种基于MOEA/D算法的回归测试用例多目标优化方法。
技术介绍
在软件测试的整个周期中,最耗时最昂贵的内容之一就是错误定位及修正过程。特别是在定位到软件故障并进行修复之后,修复的内容就有可能给软件引入新的问题或故障。然而以往的故障再诊断方法往往要求在已发现的故障被修复后重新执行所有的测试用例以确定故障是否被完全修复和是否引入了新的故障,这种方法不仅非常昂贵和耗时,执行过程繁琐且容易出现错误。因此,回归测试作为一种提高故障修复后再诊断的效率和准确率,降低故障修复后重新测试所需的代价和成本的方法,被广泛的应用在软件测试中。事实上,在实际测试过程中,对软件的每次修改都进行全面的重新测试,不仅仅必要性较低,而且从现实角度看也不可行。因此,不论是在软件开发阶段,还是在最终测试和故障修复阶段,在软件变化较为频繁时,如何提供有效的机制使得回归测试被有效的管理,回归测试用例集被最大的优化以及最大限度降低回归测试的开销和代价,提高回归测试效率,是整个回归测试乃至软件工程领域研究的重点。目前,国内外研究学者针对回归测试已经展开探索,其中测试用例的选择问题已经成为回归测试所有研究方向中的热点,包括重新测试所有测试用例和选择部分测试用例两方面,其中重新测试所有可用测试用例尽管可以产生复用原有测试用例的优点,并且可以降低测试用例重新生成的代价,但是其缺点也是显而易见的,随着开发进度的增加,测试用例数量不断累积,此时如果复用原有的全部测试用例将给测试工作带来极大的负担,使整个工程的周期和预算变得难于控制。而对于通过一定的策略筛选部分测试用例进行重新测试而言,只选择可能与软件已知故障修复部分产生关联的测试用例,首先可以减少回归测试中测试用例的运行成本,还可以减少整个测试用例集的维护成本,更重要的是,该策略相比全部重新测试能够更有效和更高效的验证所修改的部分是否达到了修复故障的目的以及是否引入了新的故障。在现有回归测试的研究成果中,涉及到测试用例选择的有很多,这些方法大体集中在对于满足回归测试覆盖要求的最小测试用例集的选择优化算法和交互等方面,通过优化测试用例选择的模型,去除冗余无用或覆盖效果不理想的测试用例,减小回归测试中使用的测试用例集规模,进而削减回归测试的人力物力以及成本开销。Yoo与Harman等人于2007年首先提出了采用多目标优化算法对回归测试用例集进行最小化(ShinYooandMarkHarman.Paretoefficientmulti-objectivetestcaseselection.InACM/SIGSOFTInternationalSymposiumonSoftwareTestingandAnalysis(ISSTA2007),pages140–150.ACM,2007.)然而该方法却存在一定的限制因素,采用NSGA-II算法往往只能得到局部的最优解,而很难取得最优帕累托前沿。在该方法中讨论了单目标和双目标的优化策略,而在实际测试过程中,如果仅仅采用单一目标或者两目标为基准对测试用例集进行优化,往往难以覆盖全部测试需求,造成测试需求项遗漏或覆盖不全面等问题。此外对于两目标优化方法,现有的算法都采用以一个目标为主,先选取一个主要目标进行优化,而后针对第一步的优化结果再对第二个目标进行优化。该方法在一定程度内降低了算法的复杂度,然而采用两个目标先后进行优化的策略忽略了多目标作为一个整体的特性,仅能在算法局部取得最优解,而不能综合多目标取得全局最优解。对于现有的用于多目标优化的算法,存在着算法复杂度与所求的解对于最优解的逼近程度之间的矛盾,求解效果好的算法往往复杂度较高。相比于传统,遗传算法不仅更适合此类问题的求解,而且计算成本相对较小,此类方法往往首先通过随机选取的测试用例构成初始集合,再将选取的测试用例中不理想的个体通过遗传算法中杂交变异等手段加以剔除,继而产生最优解。这些算法在回归测试多目标优化问题中的应用是本专利技术的重点。
技术实现思路
为了克服现有回归测试用例多目标优化方法复杂的不足,本专利技术提供一种基于MOEA/D算法的回归测试用例多目标优化方法。该方法从影响测试用例效用的所有属性中选取三个属性,即代码覆盖率、分支覆盖率和测试用例执行时间,分别测定以上三个属性对于测试用例效用的影响程度,并通过多目标优化算法选取两目标及所有三个目标进行研究。测定代码覆盖率采用GCC编译器的内置插件GCOV进行代码覆盖信息提取工作,可以在每个测试用例执行之后方便的获得该测试用例覆盖了被测程序中的哪些语句。测定分支覆盖过程,首先使用插装程序分析被测程序源码,在其中的if-else分支、for循环、do-while和while-do循环之中插入检测代码,可以准确的记录每个测试用例在运行时所覆盖的程序分支。采用开源工具Valgrind测试用例执行时间,包括内存使用检测、多线程竞争以及程序性能分析。本专利技术采用MOEA/D算法进行回归测试用例集三目标优化,在完整覆盖各项测试需求的情况下,可以有效的进行测试用例集优化,方法简单。本专利技术解决其技术问题所采用的技术方案是:一种基于MOEA/D算法的回归测试用例多目标优化方法,其特点是采用以下步骤:定义一个决策向量x,该向量能够优化一个包含M个向量的目标函数fi(x),其中i=1,2,...,M。假设最终优化目标为使函数fi取最大值,其中i=1,2,...,M。称决策向量x优超决策向量y,记为x>y。当且仅当目标函数fi(x)与fi(y)满足:且在满足帕累托最优的情况下所有的决策向量都不被其他决策向量锁优超,此时相应的目标向量组成帕累托最优前沿,则多目标优化问题被描述为:给定:一组决策向量x和目标函数集合fi(x),其中i=1,2,...,M;问题:在可行解集合中寻找一组最优解使得函数组{f1(x),f2(x),...,fM(x),}取值最大;多目标测试用例集最优化的问题被抽象为如下描述:给定:一组测试用例集T以及一组M目标函数fi,i=1,2,...,M;问题:寻找一组测试用例集T的子集T’,使得该自己在目标函数的约束下去的帕累托最优;在{f1(t1),f2(t1),...,fM(t1),}中,当T的子集t1优超时,即为决策向量t1优超决策向量t2。优化取得的最终结果,即T的帕累托最优子集T’,即能够取得回归测试优化准则中所预期的目标。MOEA/D算法的主要流程如下:多目标优化问题被描述为:使函数F(x)=(f1(x),f2(x),...,fm(x))T取值最大化,其中x∈Ω。其中,Ω代表变量空间,如果x∈Rn,则Ω被描述为:Ω={x∈Rn|hj(x)≤0,j=1,2,...,m}令λ1,λ2,...,λN组成均匀分布的权重向量集合,用z*表示代表点,利用切比雪夫方法,该问题的帕累托前沿被近似分解为N层子问题如下:其中,在该分层方法中,函数gte关于λ是连续的,即若λi与λj之间距离最小,则gte(x|λi,z*)与gte(x|λj,z*)之间的距离也最小。因此接近λi的每个gte函数所携带的权重向量信息都被用来优化gte(x|λi,z*)。在MOEA/D算法中,λi与相邻权本文档来自技高网
...
基于MOEA/D算法的回归测试用例多目标优化方法

【技术保护点】
一种基于MOEA/D算法的回归测试用例多目标优化方法,其特征在于包括以下步骤:定义一个决策向量x,该向量能够优化一个包含M个向量的目标函数fi(x),其中i=1,2,...,M;假设最终优化目标为使函数fi取最大值,其中i=1,2,...,M;称决策向量x优超决策向量y,记为x>y;当且仅当目标函数fi(x)与fi(y)满足:且∃i∈{1,...,M}.fi(x)>fi(y);]]>在满足帕累托最优的情况下所有的决策向量都不被其他决策向量锁优超,此时相应的目标向量组成帕累托最优前沿,则多目标优化问题被描述为:给定:一组决策向量x和目标函数集合fi(x),其中i=1,2,...,M;问题:在可行解集合中寻找一组最优解使得函数组{f1(x),f2(x),...,fM(x),}取值最大;多目标测试用例集最优化的问题被抽象为如下描述:给定:一组测试用例集T以及一组M目标函数fi,i=1,2,...,M;问题:寻找一组测试用例集T的子集T’,使得该自己在目标函数的约束下去的帕累托最优;在{f1(t1),f2(t1),...,fM(t1),}中,当T的子集t1优超时,即为决策向量t1优超决策向量t2;优化取得的最终结果,即T的帕累托最优子集T’,即能够取得回归测试优化准则中所预期的目标;MOEA/D算法的主要流程如下:多目标优化问题被描述为:使函数F(x)=(f1(x),f2(x),...,fm(x))T取值最大化,其中x∈Ω;其中,Ω代表变量空间,如果x∈Rn,则Ω被描述为:Ω={x∈Rn|hj(x)≤0,j=1,2,...,m}令λ1,λ2,...,λN组成均匀分布的权重向量集合,用z*表示代表点,利用切比雪夫方法,该问题的帕累托前沿被近似分解为N层子问题如下:gte(x|λj,z*)=max1≤i≤m{λij|fi(x)-zi*}]]>其中,λj=(λ1j,λ2j,...,λmj)T;]]>在该分层方法中,函数gte关于λ是连续的,即若λi与λj之间距离最小,则gte(x|λi,z*)与gte(x|λj,z*)之间的距离也最小;因此接近λi的每个gte函数所携带的权重向量信息都被用来优化gte(x|λi,z*);在MOEA/D算法中,λi与相邻权重向量之间的关系被定义为一组由其相邻权重向量构成的集合{λ1,λ2,...,λN};第i个子问题的相邻关系由所有子问题关于λi点的权重向量来表示;在每一代种群t中,MOEA/D算法利用切比雪夫方法保持如下特性:·一个具有N个点的种群x1,x2,...,xN∈Ω,其中xi为第i个子问题的当前最优解;·FV1,FV2,...,FVN,其中FVi表示xi的F函数值,即对于每个i=1,2,...N,有FVi=F(xi);·z=(z1,z2,...,zm)T,其中zi为每个fi目前能够计算出的最优值;·一个外部种群EP,用于存储搜索最优解过程中找到的非支配解。...

【技术特征摘要】
1.一种基于MOEA/D算法的回归测试用例多目标优化方法,其特征在于包括以下步骤:定义一个决策向量x,该向量能够优化一个包含M个向量的目标函数fi(x),其中i=1,2,...,M;假设最终优化目标为使函数fi取最大值,其中i=1,2,...,M;称决策向量x优超决策向量y,记为x>y;当且仅当目标函数fi(x)与fi(y)满足:且在满足帕累托最优的情况下所有的决策向量都不被其他决策向量所优超,此时相应的目标向量组成帕累托最优前沿,则多目标优化问题被描述为:给定:一组决策向量x和目标函数集合fi(x),其中i=1,2,...,M;问题:在可行解集合中寻找一组最优解使得函数组{f1(x),f2(x),...,fM(x),}取值最大;多目标测试用例集最优化的问题被抽象为如下描述:给定:一组测试用例集T以及一组M目标函数fi,i=1,2,...,M;问题:寻找一组测试用例集T的子集T’,使得该子集T’在目标函数的约束下去的帕累托最优;在{f1(t1),f2(t1),...,fM(t1),}中,当T的子集t1优超时,即为决策向量t1优超决策向量t2;优化取得的最终结果,即T的帕累托最优子集T’,即能够取得回归测试优化准则中所预期的目标;MOEA/D算法的主要流程如下:多目标优化问题被描述为:使函数F(x)=(f1(x...

【专利技术属性】
技术研发人员:郑炜李知隆李隆俊阴一溦吴潇雪
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西;61

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

1