基于moea/d算法的回归测试用例多目标优化方法
【技术领域】
[0001] 本发明涉及一种回归测试用例多目标优化方法,特别是涉及一种基于M0EA/D算 法的回归测试用例多目标优化方法。
【背景技术】
[0002] 在软件测试的整个周期中,最耗时最昂贵的内容之一就是错误定位及修正过程。 特别是在定位到软件故障并进行修复之后,修复的内容就有可能给软件引入新的问题或故 障。然而以往的故障再诊断方法往往要求在已发现的故障被修复后重新执行所有的测试用 例以确定故障是否被完全修复和是否引入了新的故障,这种方法不仅非常昂贵和耗时,执 行过程繁琐且容易出现错误。因此,回归测试作为一种提高故障修复后再诊断的效率和准 确率,降低故障修复后重新测试所需的代价和成本的方法,被广泛的应用在软件测试中。
[0003] 事实上,在实际测试过程中,对软件的每次修改都进行全面的重新测试,不仅仅必 要性较低,而且从现实角度看也不可行。因此,不论是在软件开发阶段,还是在最终测试和 故障修复阶段,在软件变化较为频繁时,如何提供有效的机制使得回归测试被有效的管理, 回归测试用例集被最大的优化以及最大限度降低回归测试的开销和代价,提高回归测试效 率,是整个回归测试乃至软件工程领域研宄的重点。
[0004] 目前,国内外研宄学者针对回归测试已经展开探索,其中测试用例的选择问题已 经成为回归测试所有研宄方向中的热点,包括重新测试所有测试用例和选择部分测试用例 两方面,其中重新测试所有可用测试用例尽管可以产生复用原有测试用例的优点,并且可 以降低测试用例重新生成的代价,但是其缺点也是显而易见的,随着开发进度的增加,测试 用例数量不断累积,此时如果复用原有的全部测试用例将给测试工作带来极大的负担,使 整个工程的周期和预算变得难于控制。
[0005] 而对于通过一定的策略筛选部分测试用例进行重新测试而言,只选择可能与软件 已知故障修复部分产生关联的测试用例,首先可以减少回归测试中测试用例的运行成本, 还可以减少整个测试用例集的维护成本,更重要的是,该策略相比全部重新测试能够更有 效和更高效的验证所修改的部分是否达到了修复故障的目的以及是否引入了新的故障。
[0006] 在现有回归测试的研宄成果中,涉及到测试用例选择的有很多,这些方法大体集 中在对于满足回归测试覆盖要求的最小测试用例集的选择优化算法和交互等方面,通过优 化测试用例选择的模型,去除冗余无用或覆盖效果不理想的测试用例,减小回归测试中使 用的测试用例集规模,进而削减回归测试的人力物力以及成本开销。
[0007] Yoo与Harman等人于2007年首先提出了采用多目标优化算法对回归测试用例 集进行最小化(ShinYooandMarkHarman.Paretoefficientmulti-objectivetest caseselection.InACM/SIGSOFTInternationalSymposiumonSoftwareTestingand Analysis(ISSTA2007),pages140 - 150.ACM, 2007.)然而该方法却存在一定的限制因素, 采用NSGA-II算法往往只能得到局部的最优解,而很难取得最有帕累托前沿。在该方法中 讨论了单目标和双目标的优化策略,而在实际测试过程中,如果仅仅采用单一目标或者两 目标为基准对测试用例集进行优化,往往难以覆盖全部测试需求,造成测试需求项遗漏或 覆盖不全面等问题。
[0008] 此外对于两目标优化方法,现有的算法都采用以一个目标为主,先选取一个主要 目标进行优化,而后针对第一步的优化结果再对第二个目标进行优化。该方法在一定程度 内降低了算法的复杂度,然而采用两个目标先后进行优化的策略忽略了多目标作为一个整 体的特性,仅能在算法局部取得最优解,而不能综合多目标取得全局最优解。
[0009] 对于现有的用于多目标优化的算法,存在着算法复杂度与所求的解对于最优解的 逼近程度之间的矛盾,求解效果好的算法往往复杂度较高。相比于传统,遗传算法不仅更适 合此类问题的求解,而且计算成本相对较小,此类方法往往首先通过随机选取的测试用例 构成初始集合,再将选取的测试用例中不理想的个体通过遗传算法中杂交变异等手段加以 剔除,继而产生最优解。这些算法在回归测试多目标优化问题中的应用是本发明的重点。
【发明内容】
[0010] 为了克服现有回归测试用例多目标优化方法复杂的不足,本发明提供一种基于 MOEA/D算法的回归测试用例多目标优化方法。该方法从影响测试用例效用的所有属性中选 取三个属性,即代码覆盖率、分支覆盖率和测试用例执行时间,分别测定以上三个属性对于 测试用例效用的影响程度,并通过多目标优化算法选取两目标及所有三个目标进行研宄。 测定代码覆盖率采用GCC编译器的内置插件GCOV进行代码覆盖信息提取工作,可以在每个 测试用例执行之后方便的获得该测试用例覆盖了被测程序中的哪些语句。测定分支覆盖过 程,首先使用插装程序分析被测程序源码,在其中的if-else分支、for循环、doihile和 while-do循环之中插入检测代码,可以准确的记录每个测试用例在运行时所覆盖的程序分 支。采用开源工具Valgrind测试用例执行时间,包括内存使用检测、多线程竞争以及程序 性能分析。本发明采用M0EA/D算法进行回归测试用例集三目标优化,在完整覆盖各项测试 需求的情况下,可以有效的进行测试用例集优化,方法简单。
[0011] 本发明解决其技术问题所采用的技术方案是:一种基于M0EA/D算法的回归测试 用例多目标优化方法,其特点是采用以下步骤:
[0012] 定义一个决策向量X,该向量能够优化一个包含M个向量的目标函数fi(X),其中i -1,2,? ? ?,Mo
[0013] 假设最终优化目标为使函数fi取最大值,其中i= 1,2, ...,M。称决策向量X优超 决策向量y,记为A.v。当且仅当目标函数A(X)与A(y)满足:V/e 2 /.(>〇 且3/£{丨,...,'¥^/;(.\-)>/;(;1-)。
[0014] 在满足帕累托最优的情况下所有的决策向量都不被其他决策向量锁优超,此时相 应的目标向量组成帕累托最优前沿,则多目标优化问题被描述为:
[0015] 给定:一组决策向量X和目标函数集合fjx),其中i= 1,2, . ..,M;
[0016] 问题:在可行解集合中寻找一组最优解使得函数组K1(X),f2(x),. . .,fM(x),}取 值最大;
[0017] 多目标测试用例集最优化的问题被抽象为如下描述:
[0018] 给定:一组测试用例集T以及一组M目标函数fi,i= 1,2,...,M;
[0019] 问题:寻找一组测试用例集T的子集T',使得该自己在目标函数的约束下去的帕 累托最优;
[0020] 在{f\U1)J2U1),...,匕⑷,}中,当T的子集L优超时,即为决策向量、优超 决策向量t2。优化取得的最终结果,即T的帕累托最优子集T',即能够取得回归测试优化 准则中所预期的目标。
[0021] MOEA/D算法的主要流程如下:
[0022] 多目标优化问题被描述为:
[0023] 使函数?00 =江100,400,...,乙00)1取值最大化,其中1£〇。其中,〇代 表变量空间,如果XG RnJjJ Q被描述为:
[0024] Q = {x G Rn| hj (x) 0, j = I, 2, . . . , m}
[0025] 令A1,A2,...,。组成均匀分布的权重向量集合,用表示代表点,利用切比雪 夫方法,该问题的帕累托前沿被近似分解为N层子问题如下:
【主权项】
1. 一种基于MOEA/D算法的回归测试用例多目标优化方法,其特征在于包括以下步骤: 定义一个决策向量X,该向量能够优化一个包含M个向量的目标函数& (X),其中i = I, 2,. . . , M ; 假设最终优化目标为使函数fi取最大值,其中i = 1,2,...,M ;称决策向量X优超决 策向量y,记为X > y ;当且仅当目标函数A (X)与A (y)满足:Vk h./:.(x)K(.v)且 3/e {1,...,Μ},/;(λ-) > ./;〇·). 在满足帕累托最优的情况下所有的决策向量都不被其他决策向量锁优超,此时相应的 目标向量组成帕累托最优前沿,则多目标优化问题被描述为: 给定:一组决策向量X和目标函数集合fi (X),其中i = 1,2,...,M ; 问题:在可行解集合中寻找一组最优解使得函数组{f\ (X),f2 (X),...,fM(x),}取值最 大; 多目标测试用例集最优化的问题被抽象为如下描述: 给定:一组测试用例集T以及一组M目标函数i = 1,2,. . .,M ; 问题:寻找一组测试用例集T的子集Τ',使得该自己在目标函数的约束下去的帕累托 最优; 在R1U1), If2U1), . . .,fnh), }中,当T的子集1^优超时,即为决策向量t 3尤超决策 向量t2;优化取得的最终结果,即T的帕累托最优子集Τ',即能够取得回归测试优化准则中 所预期的目标; M0EA/D算法的主要流程如下: 多目标优化问题被描述为: 使函数F(X) = 取值最大化,其中X e Ω ;其中,Ω代表变 量空间,如果X e Rn,则Ω被描述为: Ω = {x e Rn I hj (χ) 0, j = I, 2,..., m} 令λ1,λ2,...,\%且成均匀分布的权重向量集合,用表示代表点,利用切比雪夫方 法,该问题的帕累托前沿被近似分解为N层子问题如下:
其中,I =?,名,..,,尤广· 在该分层方法中,函数gte关于λ是连续的,即若λ ^ λ j之间距离最小,则 gte(x| λ、*)与gte(x| λ』,ζ*)之间的距离也最小;因此接近的每个gte函数所携带的权 重向量信息都被用来优化g"(x| λ\ζ?); 在M0EA/D算法中,λ 1与相邻权重向量之间的关系被定义为一组由其相邻权重向量构 成的集合U1, λ2,...,λΝ};第i个子问题的相邻关系由所有子问题关于点的权重向 量来表示; 在每一代种群t中,M0EA/D算法利用切比雪夫方法保持如下特性: ? 一个具有N个点的种群χ1,X2,. . .,xNe Ω,其中χ 1为第i个子问题的当前最优解; ? FV1,FV2,. . .,FVn,其中FVi表示χ制F函数值,即对于每个i = 1,2,. . . N,有FV L F(Xi); ? Z = (Z1, Z2,. . .,zm)T,其中Zi为每个f i目前能够计算出的最优值; ?一个外部种群EP,用于存储搜索最优解过程中找到的非支配解。
【专利摘要】本发明公开了一种基于MOEA/D算法的回归测试用例多目标优化方法,用于解决现有回归测试用例多目标优化方法复杂的技术问题。技术方案是从影响测试用例效用的所有属性中选取三个属性,分别测定所述三个属性对于测试用例效用的影响程度,采用GCC编译器的内置插件GCOV测定代码覆盖率,测定分支覆盖过程使用插装程序分析被测程序源码,在其中的if-else分支、for循环、do-while和while-do循环之中插入检测代码,采用开源工具Valgrind测试用例执行时间。本发明采用MOEA/D算法进行回归测试用例集三目标优化,在完整覆盖各项测试需求的情况下,可以有效的进行测试用例集优化,方法简单。
【IPC分类】G06F11-36
【公开号】CN104765683
【申请号】CN201510144853
【发明人】郑炜, 李知隆, 李隆俊, 阴一溦, 吴潇雪
【申请人】西北工业大学
【公开日】2015年7月8日
【申请日】2015年3月30日