用于测试用例自动生成的遗传算法改进.docVIP

用于测试用例自动生成的遗传算法改进.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用于测试用例自动生成的遗传算法改进.doc

用于测试用例自动生成的遗传算法改进   摘 要:探讨遗传算法的基本准则及其在软件测试中的应用,在此基础上对遗传算法进行改进。针对基本遗传算法中选择算子、交叉算子、突变算子的不确定性,以及容易陷入局部最优解和停滞的问题,提出SO、SACO、SCAMO算法。对改进的遗传算法和基础遗传算法进行比较。实验结果表明,改进的遗传算法比基础遗传算法自动生成测试用例的时间更短、效率更优。   关键词:软件测试;测试用例;遗传算法;选择算子;交叉算子;突变算子   中图分类号:TP311   文献标识码:A 文章编号:1672-7800(2015)005-0095-03   作者简介:喻婧(1991-),女,福建莆田人,武汉工程大学计算机科学与工程学院硕士研究生,研究方向为软件工程;易国洪(1970-),男,湖北武汉人,博士,武汉工程大学计算机科学与工程学院副教授、 硕士生导师,研究方向为软件工程、计算化学。   0 引言   据统计,软件测试的费用约占软件开发总成本的50%,实现软件测试过程的自动化成为必然趋势,而实现测试过程自动化的关键在于自动生成软件测试用例[1]。自动生成测试用例,将改变靠直觉、经验生成测试用例的传统做法,可显著提高软件测试效率,减轻编写大量测试用例的工作量。目前,软件测试自动化工具研究主要集中在测试用例执行和维护,以及测试覆盖度量等方面,测试用例自动生成。本文探讨基本遗传算法,针对其缺陷进行改进,并且通过实验验证改进算法的有效性和可行性。   1 基础遗传算法   遗传算法由美国John Holland教授提出,模拟了达尔文的生物进化过程中自然选择和计算模式。其主要特征为:能直接操作结构对象,不受导数和函数连续性的限制;有隐藏的固有并行性以及更好的全局最优化能力;通过概率优化方法能自动访问及引导到最优搜索区间,适应性地调整搜索方向,不需要建立规则[2]。它尤其适用于处理传统搜索难以解决的复杂和非线性问题,可广泛应用于组合优化、机器学习、自适应控制、规划设计和人工生命等领域。   遗传算法可形式化描述为[3]GA={Γ,Pop,S,M,T,C,π},其中Γ={x|f(x)};设个体为Rani,,则Pop={Ran1,Ran2,…Rani,i∈(0,π)};S={,i = 1,2,...N};M表示突变算子;T表示终止条件;C表示交叉算子,π表示种群大小。遗传算法由选择算子、突变算子、交叉算子3个基本算子组成。通过这3个基本算子,可以从一个初始种群Pop出发,产生期望的改良种群。标准遗传算法流程如图1所示。   遗传算法中普遍存在进化停滞问题[4]。这意味着大量个体陷入局部极值,并且趋于一致,无法改进,也不能通过交叉操作或者突变操作来生成新个体。为改进这些缺点,本文通过改进遗传算法,提高种群搜索速度及保证收敛概率。   基础遗传算法的选择算子随机选择个体,没有目的性,很可能错过较优个体,而选择了较差个体,不利于后期操作。在交叉操作中,最简单的交叉操作是单点交叉,即选择种群中的两个个体,在个体的位串中随机选择交叉点,然后交换两个位串的尾部,形成两个新的个体。当参数数量增加时,位串长度也随之增加。只有单点交叉,位串的结构化改变很小,对于引进新的信息不具建设性,会降低搜索效率。突变操作是在一定概率下对个体进行变异,带有很强的不确定性,可能较优的个体经过突变后变差了,不利于优化。   编码是通过一个特殊字符串来展示目标问题的解,描述问题解空间以及遗传算法相应的编码空间。编码过程是遗传算法的基础,编码方法不仅仅决定个体染色体排列形式,还通过遗传算法空间的基因型到问题空间的表型来决定个体的编码方法。同时,编码方法也影响遗传算子的计算方法。   2 改进的遗传算法   本文使用最常见的二进制编码方法。二进制编码方法是遗传算法中最基本、最常用的编码方法。同时,二进制编码也是最小的编码单元,易于编码和解码,易于实现交叉和突变操作。   本文针对基础遗传算法的缺陷,依次对选择算子、交叉算子、突变算子3个算子进行改进,后续算子的改进建立在前面算子改进的基础上,并分别对改进进行实验。分别将3个改进的算法命名为SO(selection operator),SACO(selection and cross operator),SCAMO(selection cross and mutation operator)。   在SO算法中,本文通过适应度值来选择个体,选择适应度值高于平均值的个体,保持当前最优解;在SACO算法中,在SO的基础上,对于交叉算子,本文增加交叉点,将单点交叉改成多点交叉,交叉点可以落在每个参数的位串,实现每个参数位串中的单点交叉;在SCAMO算法中,在SACO的基础上,对于突变算子,采用

文档评论(0)

lmother_lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档