在面向对象软件中的自适应随机测试机制.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文档。上传文档
查看更多
在面向对象软件中的自适应随机测试机制

在面向对象软件中的自适应随机测试机制 陆兆洁 南宁市经济信息中心 摘要:本文摘译自ICSE’08 pp.71-80 《ARTOO: Adaptive Random Testing for ObjectOriented Software》,作者Ilinca Ciupa, Andreas Leitner, Manuel Oriol, Bertrand Meyer。本文仅作简述自适应随机测试算法在面向对象软件中的应用。 引言: 随机测试从表面上看来非常简单而且不实用,但是通过研究评估,我们发现:如果用于测试的生成数据能在所有可供测试的数据集内均匀分布,这样将会大大提高随机测试的效率。我们把这样的策略称之为:自适应随机测试。 我们把自适应随机测试引申到面向对象软件的测试当中,提出了“物距”的概念和一种新的测试机制“面向对象的自适应随机测试”。“面向对象的自适应随机测试”是这样一种机制:在随机选择测试输入数据的同时选择平均物距离已用使用过的测试对象最远的对象作为测试输入对象。 分析结果表明,和定向随机测试机制相比,面向对象的自适应随机测试机制能通过较少的测试生成次数找到第一个故障,在某些情况下能降低多达两个数量级的测试生成次数。在指定的时间内,面向对象的自适应随机测试机制还能找到定向随机测试机制无法查找出来的系统故障。 研究背景: 测试仍然是评估软件质量最为广泛运用的方法。近来,自动化的测试解决方案越来越受到重视。但是,这些测试方案仍然没能排除基础测试的固有局限性:在有限的时间里面要求测试者想出一些能够穷尽、彻底测试程序的输入数据的选择策略,这对任何人来说都是不可能的。 一种可能的解决此类问题的策略便是“随机测试”。它有几个优点:实用范围广泛,易于在自动测试工具内实施,不需要额外的系统开销用于在所有的输入数据集合里面选择输入数据,没有倾向性。这样的测试策略也广遭人们诟病因为它缺乏系统性选择测试输入数据。一些测试输入数据的生成算法也经由人们所提出,但是这些算法无论从适用水平方面还是执行速度方面来说都达不到随机测试所及。 因此便促成了一些在能发扬随机测试的优势同时更能提高随机测试的效率的算法的生成。“自适应随机测试”建立于直观的基础上,就是在测试区域按照一定的要求平均分布测试用例,使之比“纯随机测试”机制用更少的测试用例检测系统错误。自适应随机测试机制随机的产生候选测试输入数据,并且每一步都在这些随机产生的候选数据中选择一个和已经测试过的输入数据差值最大的数作为新的测试输入数据。以检测出第一个故障为判断标准,“自适应随机测试”机制比“纯随机测试”机制降低了50%测试用例生成次数。目前面临的问题就是如何把自适应随机测试从数值型延伸至任意复杂的类型并进行定义。因此我们开发了一种自动计算“物距”的方法,并将此应用到面向对象的应用软件的自适应随机测试当中。 工作内容: 1、“物距”(OBJECT DISTANCE) 定义:两个对象间的差异。由元素差异(对象的绝对值)、类型差异(对象类型,忽略对象本身值)和作用域差异(逐一递归的两两比较对象间的作用域,只考虑两个类型相同的对象,因为类型不同的对象已经在类型差异部分中计算)三部分组成。 公式: 2、面向对象的自适应随机测试(ARTOO)算法(伪代码) used_objects: SET [ANY] candidate_objects: SET [ANY] current_best_distance: DOUBLE current_best_object: ANY v0, v1: ANY current_accumulation: DOUBLE ... current_best_distance := 0.0 foreach v0 in candidate_objects do current_accumulation := 0.0 foreach v1 in used_objects do current_accumulation := current_accumulation + distance(v0, v1) end if (current_accumulation current_best_distance) then current_best_distance := current_accumulation current_best_object := v0 end end candidate_objects.remove(current_best_object) used_objects.add(current_best_object) run_test(current_best_object) 3、面向对象的自适应随机测试示例,对银行转账程序进行测试 设有如下公式a. transfer

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档