2018年外文翻译--基于进化策略的模因蚁群优化结构测试数据生成
《2018年外文翻译--基于进化策略的模因蚁群优化结构测试数据生成》由会员分享,可在线阅读,更多相关《2018年外文翻译--基于进化策略的模因蚁群优化结构测试数据生成(35页珍藏版)》请在毕设资料网上搜索。
1、中文17949 字,PDF英文16页,下载该文件将得到word中文,PDF英文摘要测试数据生成影响软件测试的效率和有效性,是软件测试的关键活动之一。由于手动测试数据生成效率很低,甚至不实用,因此实现了自动测试数据生成,以生成适当的输入数据子集,以便在合理的时间内进行有效的软件测试。该方法结合了(1+1)进化策略,以改进局部移动中蚂蚁的搜索功能并增强搜索利用。此外,我们还引入了一个新的信息素功能定义,它阻止蚂蚁选择程序的大部分覆盖路径来加强搜索探索。以分支覆盖率为覆盖准则,分别采用了两个适应度函数。第一个适应度函数是一个布尔函数,它被特别定义为最大化分支覆盖率。如果给定的解决方案至少
2、成功遍历一个尚未发现的分支,则输出一个;否则,返回零。第二个适应度函数是根据所覆盖分支的复杂性来制定的。对于布尔函数值等于1的解,不考虑第二个适应度函数的值。对于这些解,蚂蚁的决策过程仅仅是基于第一适应度函数进行的。实验结果表明,相对于现有的测试数据生成技术,我们的记忆ACO算法在分支覆盖率和收敛速度方面都具有优势。 关键词:自动测试数据生成;分支覆盖率;蚁群优化;进化策略;信息素追踪;适应度函数; 1 引言软件测试是软件开发生命周期中的一项重要活动。软件测试中的挑战之一是生成一组称为测试套件的测试数据,以使其满足特定的测试标准1-3
3、。不幸的是,这个过程通常是乏味和昂贵的。根据4,5,近50%的软件开发成本与测试有关。另一方面,自动化测试数据生成有可能显著减少软件测试时间和成本6。由于表示程序输入空间的数据量可能接近无穷大,因此需要开发一些方法来生成一个覆盖程序大部分的适当测试套件7。更确切地说,假设一个程序P,P的输入向量表示为x(x1,x2,xn),其中n是输入的数目,而xi是第i个输入参数。如果输入xi的域等于di,程序输入空间等于d=d1*d2dn。很明显,对具有如此多输入的程序进行详尽的测试是负担不起的,需要在给定的域内生成一个有效的测试套件。尽管它在套件中包含的测试数据数量(作为效率的标准)方面的大小较低,以允
4、许较低的测试执行时间,但生成的测试套件应该覆盖程序的更多部分(作为有效性的标准)。测试数据生成方法通常可分为两个不同的类,功能测试数据生成和结构测试数据生成810。在前者中,测试数据的选择只参考被测软件(SUT)的功能规范,而后者的测试数据则是根据SUT源代码的结构元素(如语句、分支、定义使用对和路径)来选择的。与功能测试相比,结构测试数据的生成对于程序中的故障检测更具成本效益,因此得到了广泛的应用和研究6。各种覆盖标准来评估生成的测试套件已经提出了。一些重要的内容包括语句覆盖率11、分支覆盖率12,13、路径覆盖率14、程序中特定路径的覆盖率7和程序中特定路径中特定节点的覆盖率7。这些覆盖率
5、标准可以通过程序的控制流图(CFG)来计算。其中,分行覆盖率是最具成本效益的。与分支覆盖相比,完全路径覆盖是劳动密集型的,对于循环图来说不可行11。另一方面,与简单性相反,语句覆盖不能用来测试代码中的错误条件。因此,大多数研究采用分支覆盖率作为覆盖标准11。随着软件系统规模的不断扩大和复杂性的增加,使用传统的自动化测试数据生成方法,如符号执行15和随机测试数据生成10具有挑战性且成本高昂。或者,基于搜索的软件测试(SBST)在相关文中得到了广泛应用16。SBST背后的主要思想是使用元启发式算法生成满足特定测试标准的测试套件10,17。问题搜索空间定义为一个元启发式算法的SUT输入空间,它的目标
6、是在合理的短时间内尽可能多的程序结构内找到能够覆盖的最小测试套件。这种方法首先从一个小的测试套件开始,然后在算法执行期间逐渐扩大,直到达到100%的覆盖率(相对于选定的测试标准)或达到最大迭代限制。包括遗传算法在内的各种元启发式算法(ga)1,13,1921,模拟退火算法(sa)22,Tabu禁忌搜索(ts)17,23、粒子群优化(PSO)24和蚁群优化(ACO)25已被用于测试数据生成。此外,基于遗传算法等全局搜索策略与局部搜索算子相结合的混合元启发式算法(MA)对测试数据的生成也很有效5,2629。本文针对结构测试数据的大部分分支,提出了一种基于记忆ACO的结构测试数据生成算法。该方法通过
7、在蚂蚁的局部行动中加入(1+1)进化策略,增强了蚂蚁的搜索利用。此外,一种新的信息素功能定义已经被引入,它阻止蚂蚁选择程序的大部分覆盖路径来帮助搜索探索。对于我们提出的算法,我们考虑了两个可靠函数。第一个函数是一种布尔函数,旨在最大化分支覆盖率。如果给定的解决方案成功地遍历至少一个尚未发现的分支,则该函数输出一个;否则,它返回零。第二个充分性函数是根据所覆盖分支的复杂性而形成的。复杂度是根据分支的嵌套级别和谓词类型来确定的,这两种类型都是分支可达性的良好指标25。对于布尔函数值等于一的解,我们不考虑二次函数的值。在这种情况下,蚂蚁对其相应解决方案的决策过程仅基于第一性函数进行。终止标准要么达到
8、全部分支覆盖范围,要么超过预先指定的迭代次数。实验结果表明,所提出的模因算法具有较高的覆盖率,同时在全局和局部移动之间进行平衡,有利于收敛速度的提高。我们可以从以下三个方面总结我们工作的主要贡献:将(1+1)-ES并入蚂蚁的局部移动中,而不是随机追踪它们以加强搜索利用。引入信息素追踪的新功能,以增强搜索探索。为了最大限度地扩大分支机构的覆盖面以及加快收敛到完全覆盖。论文的其余部分组织如下。第2节介绍了相关工作。第3节回顾了25用于测试数据生成,基于此我们开发了记忆算法。建议的方法在第4节中描述。第5节介绍了实验结果以及经验和统计分析和讨论。四个评价标准用于评价分支覆盖率和收敛速度。最后,第六部
9、分对本文进行了总结,并指出了今后的研究方向。2 相关工作有许多研究提出了元启发式优化算法的结构测试数据生成。Michael等人1开发了一种基于GA的测试工具,称为自动测试数据生成小工具。两种不同的遗传算法实现标准,其中每个输入都表示为一个位串和差分,这是基于实值输入表示。两种实现的目标都是确定一组满足条件决策覆盖范围的测试。要获得100%的决策覆盖率,计划中的每个决策必须至少获得一次所有可能的结果,而要获得100%的条件覆盖率,计划中决策中的每个条件必须至少获得一次所有可能的结果。由于这两种类型的覆盖都很重要,并且一种类型不能保证满足另一种类型,因此在实践中,通常将它们组合起来形成条件决策覆盖
10、9。将这两种算法分别与随机下降法和梯度下降法进行了比较。随机测试数据生成只包括随机生成输入,直到找到有用的输入。梯度下降基本上是通过对一个输入值进行连续的小改变来确定进行较大移动的良好方向。当找到适当的方向时,在该方向上采取越来越大的步骤,直到没有进一步的改善。在这种情况下,会修改不同的输入值,并且当无法对任何输入值进行更多的处理时,流程将终止。实验结果表明,标准遗传算法的实现优于其他三种算法(即差分遗传算法、随机算法和梯度下降法)。考虑到分支覆盖准则,Fraser和ARCURI(21)利用GA自动生成Java代码编写的类测试数据,开发了EvoSuxe测试工具。作为其他使用遗传算法自动生成测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中设计图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2018 外文 翻译 基于 进化 策略 优化结构 测试数据 生成 中文
