在面向对象软件中的自适应随机测试机制.docx

上传人:scccc 文档编号:13051928 上传时间:2021-12-12 格式:DOCX 页数:10 大小:481.78KB
返回 下载 相关 举报
在面向对象软件中的自适应随机测试机制.docx_第1页
第1页 / 共10页
在面向对象软件中的自适应随机测试机制.docx_第2页
第2页 / 共10页
在面向对象软件中的自适应随机测试机制.docx_第3页
第3页 / 共10页
在面向对象软件中的自适应随机测试机制.docx_第4页
第4页 / 共10页
在面向对象软件中的自适应随机测试机制.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《在面向对象软件中的自适应随机测试机制.docx》由会员分享,可在线阅读,更多相关《在面向对象软件中的自适应随机测试机制.docx(10页珍藏版)》请在三一文库上搜索。

1、.在面向对象软件中的自适应随机测试机制陆兆洁 南宁市经济信息中心摘要:本文摘译自ICSE08 pp.71-80 ARTOO: Adaptive Random Testing for ObjectOriented Software,作者Ilinca Ciupa, Andreas Leitner, Manuel Oriol, Bertrand Meyer。本文仅作简述自适应随机测试算法在面向对象软件中的应用。引言:随机测试从表面上看来非常简单而且不实用,但是通过研究评估,我们发现:如果用于测试的生成数据能在所有可供测试的数据集内均匀分布,这样将会大大提高随机测试的效率。我们把这样的策略称之为:自适

2、应随机测试。我们把自适应随机测试引申到面向对象软件的测试当中,提出了“物距”的概念和一种新的测试机制“面向对象的自适应随机测试”。“面向对象的自适应随机测试”是这样一种机制:在随机选择测试输入数据的同时选择平均物距离已用使用过的测试对象最远的对象作为测试输入对象。分析结果表明,和定向随机测试机制相比,面向对象的自适应随机测试机制能通过较少的测试生成次数找到第一个故障,在某些情况下能降低多达两个数量级的测试生成次数。在指定的时间内,面向对象的自适应随机测试机制还能找到定向随机测试机制无法查找出来的系统故障。研究背景:测试仍然是评估软件质量最为广泛运用的方法。近来,自动化的测试解决方案越来越受到重

3、视。但是,这些测试方案仍然没能排除基础测试的固有局限性:在有限的时间里面要求测试者想出一些能够穷尽、彻底测试程序的输入数据的选择策略,这对任何人来说都是不可能的。一种可能的解决此类问题的策略便是“随机测试”。它有几个优点:实用范围广泛,易于在自动测试工具内实施,不需要额外的系统开销用于在所有的输入数据集合里面选择输入数据,没有倾向性。这样的测试策略也广遭人们诟病因为它缺乏系统性选择测试输入数据。一些测试输入数据的生成算法也经由人们所提出,但是这些算法无论从适用水平方面还是执行速度方面来说都达不到随机测试所及。因此便促成了一些在能发扬随机测试的优势同时更能提高随机测试的效率的算法的生成。“自适应

4、随机测试”建立于直观的基础上,就是在测试区域按照一定的要求平均分布测试用例,使之比“纯随机测试”机制用更少的测试用例检测系统错误。自适应随机测试机制随机的产生候选测试输入数据,并且每一步都在这些随机产生的候选数据中选择一个和已经测试过的输入数据差值最大的数作为新的测试输入数据。以检测出第一个故障为判断标准,“自适应随机测试”机制比“纯随机测试”机制降低了50%测试用例生成次数。目前面临的问题就是如何把自适应随机测试从数值型延伸至任意复杂的类型并进行定义。因此我们开发了一种自动计算“物距”的方法,并将此应用到面向对象的应用软件的自适应随机测试当中。工作内容:1、“物距”(OBJECT DISTA

5、NCE)定义:两个对象间的差异。由元素差异(对象的绝对值)、类型差异(对象类型,忽略对象本身值)和作用域差异(逐一递归的两两比较对象间的作用域,只考虑两个类型相同的对象,因为类型不同的对象已经在类型差异部分中计算)三部分组成。公式:2、面向对象的自适应随机测试(ARTOO)算法(伪代码)used_objects: SET ANYcandidate_objects: SET ANYcurrent_best_distance: DOUBLEcurrent_best_object: ANYv0, v1: ANYcurrent_accumulation: DOUBLE.current_best_dis

6、tance := 0.0foreach v0 in candidate_objectsdocurrent_accumulation := 0.0foreach v1 in used_objectsdocurrent_accumulation :=current_accumulation + distance(v0, v1)endif (current_accumulation > current_best_distance)thencurrent_best_distance := current_accumulationcurrent_best_object := v0endendcan

7、didate_objects.remove(current_best_object)used_objects.add(current_best_object)run_test(current_best_object)3、面向对象的自适应随机测试示例,对银行转账程序进行测试设有如下公式a. transfer ( b, c )代表从帐户a转c元到帐户b这是初始状态:ba1: BANK ACCOUNT, ba1.owner=”A”, ba1.balance=675234ba2: BANK ACCOUNT, ba2.owner=”B”, ba2.balance=10ba3: BANK ACCOUNT,

8、 ba3.owner=”O”, ba3.balance=99ba4 = Voidi1 : INTEGER, i1 = 100i2 : INTEGER, i2 = 284749i3 : INTEGER, i3 = 0i4 : INTEGER, i4 = 36452i5 : INTEGER, i5 = 1假设ARTOO选ba3为测试目标对象(转出帐户),ba1(转入帐户)作为第一个参数,i5(转账金额)作为第二个参数测试第一次转账,有:ba3. transfer (ba1, i5 )即要执行从ba3转i5至ba1,执行结果(红色标注):ba1: BANK ACCOUNT, ba1.owner=”A

9、”, ba1.balance=675235ba2: BANK ACCOUNT, ba2.owner=”B”, ba2.balance=10ba3: BANK ACCOUNT, ba3.owner=”O”, ba3.balance=98ba4 = Voidi1 : INTEGER, i1 = 100i2 : INTEGER, i2 = 284749i3 : INTEGER, i3 = 0i4 : INTEGER, i4 = 36452i5 : INTEGER, i5 = 1继续对转账功能进行测试,接下来ARTOO将会选择离已测试过的银行帐号用户(ba3)最远的非空用户作为下一个测试目标对象。此时

10、ARTOO将挑选ba1作为新的测试目标对象,同时,第一个参数将选离ba1最远的ba4(空类型离非空类型的距离最远),将i2作为第二个参数,因此有: ba1. transfer (ba4, i2 )执行至此便发现错误,由此可知转入帐户必须不能为空。测试继续进行,此时测试的数据池没有发生变化,ARTOO将再次选择已使用过的对象中平均距离最高的用户作为测试目标对象,因此ba2将做为此次测试的目标对象,同时第一个参数也为ba2,第二个参数为i4,则有:ba2. transfer (ba2, i4 )执行至此便发现错误,由此可知转入帐户和转出帐户不能相同。 以上便是面向对象的自适应随机测试(ARTOO)

11、机制的测试用例的生成模式。4、性能测试用于测试评估ARTOO性能的测试类均来自于EiffelBase library 2 version 5.6。EiffelBase是一个工业级的库文件并适用于所有用ISE Eiffel编写的项目,类似Java或C的系统库文件。此库文件未做任何修改的用于此次试验:所有测试类均来自已公开发行的5.6版本库文件中,并且所有错误也均在此公开版本中有所提及。所有的测试运行利用ISE Eiffel编译器5.6版进行编译,硬件为Pentium M 2.13 GHz处理器,2 GB内存,操作系统为Windows XP SP2 。这些试验均分别用定向随机测试机制(以下简称为R

12、AND)以及ARTOO在一定时间内测试一种类型。由于种子的伪随机数生成影响的结果,以下结果是每种测试类型用不同随机数在5-10分钟内测试结果的平均值。我们根据以下两个因素来进行性能评估:一是需要生成多少个测试用例找到第一个故障;二是需要多少时间来找到第一个故障。研究结果: 在比较测试用例平均生成数方面,ARTOO优于RAND,如图1。图1在比较测试平均使用时间方面,RAND优于ARTOO,如图2。图2在大多数情况下,ARTOO能减少大量(有时候甚至是两个数量级)的必要测试用例数。但是,由于计算物距是要花费时间的。这就使得尽管ARTOO使用的用例数少,但是浪费了时间去挑选“对象”,这就使得RAN

13、D在总的测试时间上占据优势。实验还表明,某些情况下ARTOO能发现故障但是RAND不找到(在同一测试时间内)。表4列出了只有ARTOO能够找到故障的类和例程,包括能发现的故障数,测试用例的生成数和所需时间。表4当然,也存在有在同一时间内RAND能发现故障但是ARTOO不找到的情况。这表明,这两种测试机制具有各自的优势,在完全自动化的过程中,应把二者结合使用以达到理想化的状态。以往的个案研究表明,RAND所能找到新的故障数的开方值和所用时间成反比。这就意味这在运行后一定的时间内,RAND就在也找不到任何剩余的故障。此时,便可用ARTOO来找查剩余的故障。在例程测试时间十分充足的情况下,ARTOO

14、能用极少的测试用例便查找出错误就显得十分的吸引人。研究结果表明,ARTOO与RAND相比,ARTOO更不敏感于随机数的值的变化(见表5),因此ARTOO的性能也更稳定。表5是分别运用ARTOO与RAND对每种测试类在运行1、2、5、10分钟内发现故障数的标准差,以及4个时间段内的故障数总和的标准差和平均值。表5相关工作:随机测试在自动化测试进程中呈现多方面优势,但仍有不少其他主流派别对其进行反驳。尽管如此,对ART机制的改进以提高性能仍然具有长远意义。镜像ART和动态分区ART能减少ART的系统开销。受限随机测试(RRT)也和ART紧密相关,RRT的测试用例是在受限制的数据区域内产生的。更进一步的改进是基于格的ART机制和二分限制的ART机制。;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1