基于代码覆盖率回归测试用例缩减.docVIP

  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文档。上传文档
查看更多
基于代码覆盖率回归测试用例缩减

基于代码覆盖率回归测试用例缩减   摘 要: 提出一种基于代码覆盖率的测试用例推荐的算法,可以在保证代码覆盖率的情况下,挑选出较小的用例子集,大大减少回归测试运行时间,遗传算法具有适应性好,效果佳的特点,采用一种改进的遗传算法实现用例缩减功能,用贪心算法生成初始种群,用测试覆盖率和测试时间成本构造适应度函数,通过海明距离来计算变异与交叉算子,最后给出实验结果,实验表明,改进的遗传算法能有效的减少测试用例,缩短测试运行时间。   关键词: 回归测试;测试用例;代码覆盖率;遗传算法   中图分类号:TM734 文献标识码:A 文章编号:1671-7597(2011)1120168-02      0 引言   目前测试用例缩减技术都基于两个基本的假设:1)每个测试用例在测试时,都有一定的测试覆盖度,并且测试覆盖度在程序的新版本中基本保持不变;2)假设每个测试用例具有相同的测试运行代价,并且运行代价在程序的新版本中基本保持不变。   以上假设存在两个问题:1)每个用例的时间代价不可能完全一样;2)根据用例缩减技术的定义,测试用例缩减目的是要减少回归测试的费用而不是单纯地追求用例数的较小化,所以在做测试用例的选择时,不仅要考虑该用例的测试覆盖能力,还必须考虑该用例的测试运行代价。本文提出了一种基于测试覆盖因素和测试运行因素的适应度函数,目的是找到一个测试运行代价较小的用例集,而不是用例数最少的用例集,真正提高用例缩减效率。   解决测试用例冗余问题的传统方法主要有:贪心算法[6]、整数规划[1]、遗传算法[7],其中贪心算法容易陷入局部最优解,整数规划计算复杂度又过高,而传统的遗传算法容易出现早熟现象,从而陷入局部最优解,而且好的初始种群显然能够加快算法的收敛速度以及性能。遗传算法因为具有很好的扩展性,所以可以与其他算法结合起来以弥补其不足,改进的遗传算法现在主要有几种:混合遗传算法、基于自适应度的遗传算法、基于小种群的遗传算法等等。本文采用一种改进的遗传算法,把贪心算法,简单遗传算法,自适应遗传算法结合起来,各取所长,不仅能很好的避免结果陷入局部最优解的情况,又能使算法拥有很好的搜索、适应能力。   本文的内容安排如下:第1节主要介绍了背景知识,第2节介绍了主要实现方法以及技术思路,第3节为研究结果展示,第4节为总结与展望。   1 背景知识   1.1 代码覆盖率   代码覆盖率=代码的覆盖程度,是一种度量方式。测试用例覆盖到的代码越多,代码覆盖率就越大,代码覆盖率是用来表示测试用例质量的指标,因此我们只要保证缩减后的测试用例的代码覆盖率和原始测试用例的代码覆盖率一样,那么就能证明缩减后的用例运行的准确性。   1.2 用例缩减模型的定义和建立   在大部分关于测试用例缩减的文章里,作者通常在建立模型的时候只考虑到代码覆盖率问题,本文同时将时间成本C也同时考虑进去。   下面给出用例缩减模型的定义:假设给定一个测试用例集:TC={t1,t2,…,tn),每个ti的运行时间代价为c(ti),整个TC的代码覆盖率为Cov(TC),我们要找出一组TC的子集T ={t1,t2,…,tm)(m=∑c(tj)其中(i=1…n;j=1……m)。   2 主要实现方法和技术思路   2.1 基础数据的准备与建模   根据1.2中提出的用例缩减模型,本文需要收集几个相关信息:1)测试用例的覆盖率;2)测试用例运行的时间代价;3)相关测试用例;4)缩减后的测试用例。以下是我们收集的基础数,一共分为四个模块,分别是:CIL2_VIDEO,CIL2_VIDEO_BRANCH1,Video_H264_Encoder, VCP_INSTRUCTION)整理上述信息,得到时间、用例数和覆盖率信息如表1所示:   表1         其中,运行时间取的是每个模块下面的测试用例运行时间,精确到分钟,合并时间为把这四个模块合并成一个.cov文件并算出覆盖率信息的时间,时间代价=四个模块总的运行时间+合并时间,此处为867分钟。功能覆盖率和条件/分支覆盖率信息使用bullseye公司开发的bullseyeCoverage软件进行收集,保存的格式为.cov文件,系统开发采用的是C++语言,运行环境是Visual Stdio2008。   2.2 算法研究(一种改进的遗传算法)   种群初始化:1)编码:对于测试用例缩减问题可以采用贪心算法求解,每次取一个能最大程度增加代码覆盖率的测试用例,循环到覆盖率等于原始的覆盖率为止。这种算法的时间复杂度要比递归回溯算法小的多,但用这种算法只能得到局部或者近似最优解。可以把贪心算法与遗传算法结合起来,由贪心算法得出初始可行解,提高初始种群的质量。测试用例缩减可以看成是按照测试覆盖率

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档