加速手动测试例执行的方法和装置.pdf

上传人:r5 文档编号:1006543 上传时间:2018-03-25 格式:PDF 页数:24 大小:1.20MB
返回 下载 相关 举报
摘要
申请专利号:

CN200810168122.6

申请日:

2008.09.28

公开号:

CN101685416A

公开日:

2010.03.31

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 11/28公开日:20100331|||实质审查的生效IPC(主分类):G06F 11/28申请日:20080928|||公开

IPC分类号:

G06F11/28

主分类号:

G06F11/28

申请人:

国际商业机器公司

发明人:

谈华芳; 朱 俊; 李中杰; 黄 胜; 李少春; 刘鹤辉

地址:

美国纽约

优先权:

专利代理机构:

中国国际贸易促进委员会专利商标事务所

代理人:

李镇江

PDF下载: PDF下载
内容摘要

本发明公开了一种通过避免重复手动执行多个测试例中的重合操作而加速手动测试例执行的方法和装置。在本发明中,首先分析所述多个测试例之间的重合操作,然后在执行到测试例中的重合操作时,自动地在包含该重合操作的测试例之间同时执行所述重合操作。与现有技术相比,利用本发明的方法和装置,不仅减少了手动测试例操作,也减少了手动测试执行时间,从而大大提高了手动测试例执行的效率。

权利要求书

1、  一种加速手动执行多个测试例的方法,所述多个测试例用于在被测系统上执行以对该被测系统进行测试,该方法包括以下步骤:
分析所述多个测试例之间的测试例操作关系,以确定所述多个测试例之间重合的测试例操作;并且
当手动执行到所述多个测试例中任一个所包含的测试例操作时,自动地同时执行其他测试例中与该测试例操作重合的测试例操作。

2、
  根据权利要求1所述的加速手动执行多个测试例的方法,其中所述自动地同时执行重合测试例操作包括:
创建一个或多个关于所述被测系统的副本系统;
根据分析出的测试例操作关系以及副本系统的数目,计算测试例操作到副本系统的分发;
按照计算出的测试例操作到副本系统的分发向所创建的副本系统分发测试例操作;以及
在测试例操作被分发到的副本系统上执行所分发的测试例操作。

3、
  根据权利要求2所述的加速手动执行多个测试例的方法,还包括:
根据分析出的测试例操作关系以及副本系统的数目,计算测试例执行顺序;以及
按照计算出的测试例执行顺序手动地执行多个测试例。

4、
  根据权利要求3所述的加速手动执行多个测试例的方法,其中,按照所述多个测试例的总执行操作数最少或者所述多个测试例的总执行时间最短来计算测试例执行顺序。

5、
  根据权利要求2或4所述的加速手动执行多个测试例的方法,其中,按照所述多个测试例的总执行操作数最少或者所述多个测试例的总执行时间最短来计算测试例操作到副本系统的分发。

6、
  根据权利要求3所述的加速手动执行多个测试例的方法,所述计算测试例执行顺序以及计算测试例操作到副本系统的分发还包括:
调用存储的测试日志,该测试日志中记录有先前的测试例执行顺序以及测试例操作到副本系统的分发;并且
按照预定准则来判断是否采用先前记录的测试例执行顺序以及测试例操作到副本系统的分发。

7、
  根据权利要求6所述的加速手动执行多个测试例的方法,其中,所述测试日志还包括以下中的任一个或多个:系统先前测试执行时间、系统测试结果、系统修改记录。

8、
  一种加速手动执行多个测试例的装置,所述多个测试例用于在被测系统上执行以对该被测系统进行测试,该装置包括:
测试例分析器,用于分析所述多个测试例之间的测试例操作关系,以确定所述多个测试例之间重合的测试例操作;和
测试例控制器,用于进行控制以使得当手动执行到所述多个测试例中任一个所包含的测试例操作时,自动地同时执行其他测试例中与该测试例操作重合的测试例操作。

9、
  根据权利要求8所述的加速手动执行多个测试例的装置,其中所述测试例控制器包括:
副本系统创建器,用于创建一个或多个关于所述被测系统的副本系统;
优化器,用于根据所述测试例分析器分析出的测试例操作关系以及所述副本系统创建器创建的副本系统的数目,计算测试例操作到副本系统的分发;以及
测试例调度处理器,按照所述优化器计算出的测试例操作到副本系统的分发向所创建的副本系统分发测试例操作,并且在测试例操作被分发到的副本系统上执行所分发的测试例操作。

10、
  根据权利要求9所述的加速手动执行多个测试例的装置,所述优化器还被构造为用于根据所述测试例分析器分析出的测试例操作关系以及所述副本系统创建器创建的副本系统的数目,计算测试例执行顺序,其中,按照计算出的测试例执行顺序手动地执行多个测试例。

11、
  根据权利要求10所述的加速手动执行多个测试例的装置,其中所述优化器按照所述多个测试例的总执行操作数最少或者来所述多个测试例的总执行时间最短计算测试例执行顺序。

12、
  根据权利要求9或11所述的加速手动执行多个测试例的装置,其中所述优化器按照所述多个测试例的总执行操作数最少或者来所述多个测试例的总执行时间最短计算测试例操作到副本系统的分发。

13、
  根据权利要求10所述的加速手动执行多个测试例的装置,所述优化器还包括:
存储单元,用于存储测试日志,其中该测试日志中记录有先前的测试例执行顺序以及测试例操作到副本系统的分发;
检索器,用于从存储单元中调用针对所述被测系统的测试日志;以及
分析判断器,用于按照预定准则来判断是否采用所述检索器检索出的先前记录的测试例执行顺序以及测试例操作到副本系统的分发。

14、
  根据权利要求13所述的加速手动执行多个测试例的装置,其中,所述测试日志还包括以下中的任一个或多个:系统先前测试执行时间、系统测试结果、系统修改记录。

15、
  一种手动测试系统,该系统包括:
手动测试平台;和
嵌入到手动测试平台上的加速手动测试例执行装置,该加速手动测试例执行装置用于加速在被测系统上针对多个测试例的手动执行,该加速手动测试例执行装置包括:
测试例分析器,用于分析所述多个测试例之间的测试例操作关系,以确定所述多个测试例之间重合的测试例操作;和
测试例控制器,用于进行控制以使得当手动执行到所述多个测试例中任一个所包含的测试例操作时,自动地同时执行其他测试例中与该测试例操作重合的测试例操作。

16、
  根据权利要求15所述的手动测试系统,其中所述测试例控制器包括:
副本系统创建器,用于创建一个或多个关于所述被测系统的副本系统;
优化器,用于根据所述测试例分析器分析出的测试例操作关系以及所述副本系统创建器创建的副本系统的数目,计算测试例操作到副本系统的分发;以及
测试例调度处理器,按照所述优化器计算出的测试例操作到副本系统的分发向所创建的副本系统分发测试例操作,并且在测试例操作被分发到的副本系统上执行所分发的测试例操作。

17、
  根据权利要求16所述的手动测试系统,其中,所述优化器还被构造为用于根据所述测试例分析器分析出的测试例操作关系以及所述副本系统创建器创建的副本系统的数目,计算测试例执行顺序,其中,按照计算出的测试例执行顺序手动地执行多个测试例。

18、
  根据权利要求17所述的手动测试系统,其中,所述优化器还包括:
存储单元,用于存储测试日志,其中该测试日志中记录有先前的测试例执行顺序以及测试例操作到副本系统的分发;
检索器,用于从存储单元中调用针对所述被测系统的测试日志;以及
分析判断器,用于按照预定准则来判断是否采用所述检索器检索出的先前记录的测试例执行顺序以及测试例操作到副本系统的分发。

说明书

加速手动测试例执行的方法和装置
技术领域
本发明总体上涉及加速手动测试例执行的方法和装置,更具体地涉及一种通过避免重复手动执行多个测试例中的重合操作而加速手动测试例执行的方法和装置。
背景技术
测试例是用户指定按照特定顺序执行的一系列操作,其中每个操作是用户与被测系统的一次或多次交互。用户与系统的交互可以是通过操作被测系统的用户界面来执行,例如,打开url、填表格、然后点击提交按钮。
测试例可以手动执行或自动执行。自动执行测试例是在无人工干预的情况下自动地执行测试例,通常运行较快。然而,实际中,测试多数是手动执行过程。主要原因在于,手动测试例的自动化需要一定的投入,而且在原始功能或者界面改变的情况下自动化的测试例很容易遭到破坏,即,自动化的测试例在应用程序改变的情况下将变得无效。因此目前,在测试领域中,手动测试执行仍然是主导的。而手动测试例执行面临的最主要的问题在于投入到测试例执行上的时间和花费巨大。如何提高手动测试例执行的效率成为测试领域的研究热点。
题为“System and method enabling execution stop and restart ofa test executive sequence”的美国专利No.7076692中公开了一种通过存储测试例执行过程中的被测系统快照,当有重复的测试例操作(在本领域中亦称为测试例步骤)出现时,恢复被保存的系统快照,从而减少重复操作执行的时间和花费的系统和方法。执行“快照”包括保存被测系统在测试例执行的某个阶段相应点恢复和重启执行所需的所有数据。在其它测试例执行期间,如果前面几步已经被执行过,则可以恢复相关快照,来避免对这些操作的冗余执行。然而该方案的缺点在于,针对复杂的应用程序,尤其是J2EE、Web和SOA程序,难以存储和恢复快照。而且这种方法仅仅减少了测试者的测试执行花费,而减少的测试执行时间受限于恢复系统所需的时间。
另外,在题为“Method and system for optimizing configurationclassification of software”的美国专利No.7370039以及题为“Methodand system for optimizing configuration classification of software”的美国专利No.20060224359中提出了通过优化测试例设计,从而减少测试例数,由此来提高手动测试例执行的效率。然而,这种方法是从测试例设计的角度出发的,不涉及测试例执行过程的优化。
因此,希望提供一种同时减少手动测试例执行成本和时间的方法和装置。
发明内容
本发明的一个目的在于提供一种加速手动测试例执行的方法和装置,用于消除或部分地消除现有技术中的上述问题。
本发明为了提高手动测试例执行效率而提供了一种通过自动地同时执行多个测试例中的重合操作的方法和装置。具体而言,本发明通过分析在同一被测系统上运行的多个测试例之间的构成关系,找出可以并行执行的重合操作,从而加速多个测试例在被测系统上的手动执行。
在本发明的第一方面中,提供了一种加速手动执行多个测试例的方法,所述多个测试例用于在被测系统上执行以对该被测系统进行测试,该方法包括以下步骤:分析所述多个测试例之间的测试例操作关系,以确定所述多个测试例之间重合的测试例操作;并且当手动执行到所述多个测试例中任一个所包含的测试例操作时,自动地同时执行其他测试例中与该测试例操作重合的测试例操作。
优选地,在本发明第一方面中的加速手动测试例执行的方法中,所述自动地同时执行所述重合操作包括:创建一个或多个关于所述被测系统的副本系统;根据分析出的测试例操作关系以及副本系统的数目,计算测试例操作到副本系统的分发;按照计算出的测试例操作到副本系统的分发向所创建的副本系统分发测试例操作;以及在测试例操作被分发到的副本系统上执行所分发的测试例操作。更优选地,根据分析出的测试例操作关系以及副本系统的数目,计算测试例执行顺序;以及按照计算出的测试例执行顺序手动地执行多个测试例。
在本发明的第二方面中,提供了一种加速手动执行多个测试例的装置,所述多个测试例用于在被测系统上执行以对该被测系统进行测试,该装置包括:测试例分析器,用于分析所述多个测试例之间的测试例操作关系,以确定所述多个测试例之间重合的测试例操作;和测试例控制器,用于进行控制以使得当手动执行到所述多个测试例中任一个所包含的测试例操作时,自动地同时执行其他测试例中与该测试例操作重合的测试例操作。
在本发明的第三方面中,提供了一种手动测试系统,该系统包括:手动测试平台;和嵌入到手动测试平台上的加速手动测试例执行装置,该加速手动测试例执行装置用于加速在被测系统上针对多个测试例的手动执行,该加速手动测试例执行装置包括:测试例分析器,用于分析所述多个测试例之间的测试例操作关系,以确定所述多个测试例之间重合的测试例操作;和测试例控制器,用于进行控制以使得当手动执行到所述多个测试例中任一个所包含的测试例操作时,自动地同时执行其他测试例中与该测试例操作重合的测试例操作。
与现有的手动测试例执行方法相比,本发明通过避免重复执行多个测试例中的重合操作,既减少了执行的成本,也减少了测试执行时间。
附图说明
根据以下参照附图对本发明示例性实施方式的详细描述,将更好地理解以上和其他示例目的、方面和优点。
图1示出了具有重合操作的多个测试例之间的构成关系;
图2示出了根据本发明优选实施例的加速手动测试例执行的方法的总流程图;
图3示出了根据本发明一实施例的避免重复执行多个测试例之间的重合操作的方法的流程图;
图4A和图4B以列表的形式分别示出了在系统资源不受限和受限情况下计算出的测试例执行顺序及测试例操作到副本系统的分发;
图5示出了根据本发明另一优选实施例的避免重复执行重合操作的方法的流程图;以及
图6是示出了根据本发明优选实施例的加速手动执行多个测试例的装置的框图。
具体实施方式
应当理解,本发明的附图和描述已经简化,以例示有助于清楚地理解本发明的步骤或部件,同时出于清楚的目的,除去了典型的软件分析技术中的其他步骤或部件。本领域技术人员将认识到,为了实施本发明,其他步骤或部件是希望的和/或是必需的。然而,由于这些步骤或部件是本领域所公知的,并且由于它们并不助于更好地理解本发明,所以本文中并未给出关于它们的描述。还应当理解,本文所包括的附图仅仅给出了对于本发明的当前优选实施例的图形表示,落入本发明的范围内的步骤或部件可包括不同于这些附图中示出的步骤或部件。下面将参照附图,其中对类似的步骤或部件给予类似的附图标记。
本发明的发明人发现,在通常情况下,针对某一被测系统所设计的一组测试例之间存在多个重合操作。例如,在订单管理系统中,存在两个测试例,一个是“同意订单”,另一个是“拒绝订单”。这两个测试例都具有“登录”和“提交订单”两个相同的操作。在实际系统测试中,多个测试例之间可能具有更多的重合操作。图1例示了针对某个被测系统的三个测试例,测试例1、2和3,其中每个测试例都包含必须依次执行的多个操作。如图1中的测试例树所示,测试例1、2、3都具有相同的头两个操作“打开”和“登录”,测试例1和2还具有相同的操作“同意”。若按照现有技术一步步执行这三个测试例,总共需要执行12个操作。设想如果能通过避免重复执行这些测试例之间的重合操作,将会大大提高手动测试例执行的效率。
图2示出了根据本发明优选实施例的加速手动测试例执行的方法的总流程图。系统测试执行开始于步骤20处。首先,在步骤22处,构造要在被测系统上运行的m个测试例,这里m为正整数。本发明中所称测试例可以是任意适合形式的,只要包含彼此独立的测试例操作即可。本领域技术人员应该理解,可以通过从测试例操作库中调取多个测试例操作,也可以接收通过输入设备输入的多个测试例操作,来构造要测试运行的测试例。这里,输入设备例如是键盘、鼠标、控制杆、手写输入板以及语音输入设备等中的一个或多个。
接着,在步骤24处,分析在步骤22处构造的m个测试例之间的关系,识别出重合操作。如图1所示,可以构建描述多个测试例之间的关系的测试例树,通过存储表或链接等形式来记录这多个测试例之间的构成关系。本领域技术人员应当明白,除了测试例树以外,其他适合的描述测试例之间的构成关系的方式也是可以的。
最后,在步骤26处,当执行到所分析出的重合操作时,在包含该重合操作的那些测试例中自动地同时执行该重合操作。如图1所示,例如在执行测试例1的“打开”和“登录”操作时,同时将自动执行测试例2和3中的“打开”和“登录”操作,并且例如在执行测试例1中的“同意”操作时,将自动执行测试例2中的“同意”操作。下文中将更详细地描述在步骤26处如何利用分析出的多个测试例之间的重合操作信息而自动地同时执行这些重合操作。
目前,随着计算机硬件计算能力的提高以及系统虚拟化的发展,保持多个被测系统的成本和计算开销大大降低。下面参照图3来详细说明在步骤26处如何自动同时执行重合操作。图3示出了根据本发明优选实施例的利用复制的被测系统来保持测试执行序列的执行进程的方法的流程图。
在步骤302处,根据在图2中的步骤24处分析出的重合操作数目以及系统资源状况,来创建n个副本系统,这里n为正整数。本领域技术人员应当理解,在假设系统资源无限大的情况下,从最优化手动测试例执行的效率来看,副本系统的数目应仅仅由测试例间的重合操作数目和关系来决定。但实际上,测试系统资源必定是有限的,因而不可能采用任意数量的副本系统。本发明中,在步骤302处,还可以允许用户输入副本系统数上限。构建副本系统的技术是本领域所公知的,为了避免使得本发明杂乱不清楚,在此不对构建副本系统进行详细描述。本领域技术人员还将理解可以通过虚拟技术来构建被测系统的副本系统。
这里,需要指出的是,在本发明实施例中,就执行测试例而言,副本系统与被测系统的功能是相同的。因而,在创建了副本系统之后,可以不必再区分“被测系统”和创建的“副本系统”,而是可以将它们通称为“副本系统”。
创建了副本系统之后,接下来,在步骤304处,根据分析出的重合操作以及所创建的副本系统的数目,计算测试例执行顺序以及测试例操作到副本系统的分发。在本实施例中,采用变量Worklist来记录计算出的测试例执行顺序以及测试例操作到副本系统的分发,例如Worklist中每一条记录存储有执行顺序Order、当前执行的操作号OperationNo、分发指示符DistrnFlag、分发到多少个副本系统k以及分发哪些副本系统RaplicaNo,即<Order,OperationNo,DistrnFlag,k,ReplicaInfo>,其中分发指示符DistrnFlag=0表示不向其他副本系统分发该测试例操作,DistrnFlag=1表示该测试例操作为重合操作,需要向其他副本系统分发。还例如,为了确保操作执行顺序的准确性,可以采用冗余记录的形式的Worklist,即<Order,OperationNo1,OperationNo2,DistrnFlag,k,ReplicaInfo>,其中OperationNo1是当前要执行的操作,OperationNo2是接下去要执行的操作。本领域技术人员应该明白以任意其他适合方法存储测试例执行顺序和测试例操作到副本系统的分发的Worklist都是可行的,并不限于本发明所公开的具体形式。
步骤304中的计算操作例如可以按照多个测试例的总执行操作数最少来执行,也可以通过检索测试例中各个执行操作的先前存储的执行时间而按照总执行时间最短来执行。本领域技术人员应该理解,任意其他适合的计算执行准则都是可行的。当计算执行准则确定后,可利用运筹统计学中现有成熟的统计分析方法来计算测试例执行顺序以及测试例操作到副本系统的分发,在此不再累述。
在步骤306处,初始化n个副本系统。然后,进行到步骤308,逐条读取步骤304处获得的Worklist中的数据记录<Order,OperationNo,DistrnFlag,k,ReplicaInfo>。在步骤310处,从测试例树读取该条记录中操作号OperationNo指示的操作。接下去,在步骤312处判断分发指示符DistrnFlag是否为0。如果DistrnFlag=0,则表明不向其他副本系统分发该操作,流程进行到步骤322,无需复制测试例操作,而仅在ReplicaInfo指示的副本系统上执行该操作,然后流程转至步骤320。
返回到步骤312,如果DistrnFlag不为0,则表明该测试例操作为重合操作,需要分发到其他副本系统。流程进行到步骤314,读取该条数据记录中指示的k(k为正整数)值,将该测试例操作复制k份。接着在步骤316处,将复制的k个测试例操作分发到记录中ReplicaInfo指示的k个副本系统,这里k≤n。在本实施例中,可以将所复制的k个测试例操作及其分发信息包含在一请求信号中,通过与测试客户端可通信地连接的截获器来获取该请求信号,并根据该请求信号中包含的分发信息来执行对所复制的k个测试例操作的分发。当然,本领域技术人员应该理解,以任何其他适当方式传送分发信息也是可以的。
需要指出的是,参量ReplicaInfo可以由两部分构成,即ReplicaInfo(ReplicaNo,RepIndicator),其中ReplicaNo指示要分发到的副本系统的编号,而RepIndicator表示在分发该测试例操作之前是否要对ReplicaNo指示的副本系统进行初始化。当完成某个测试例之后,通过令参量RepIndicator=0来指示初始化该测试例在其上运行的副本系统,从而该副本系统可以用于运行其他测试例。这样,可以最大化对副本系统资源的利用率。接下去,步骤318处,在k个副本系统上自动地同时执行该测试例操作。然后流程进行到步骤320。
在步骤320中,判断是否已经读取完Worklist中的所有条记录,即是否执行完所有的测试例。如果Worklist还有记录没有被读取,即还有测试例没有被执行完,则流程返回至步骤308,继续读取新一条记录,然后针对新记录中的测试例操作执行步骤310至318。当在步骤320处判定已经读取Worklist中的所有条记录即Worlist为空(Null),则针对被测系统的整个测试处理流程结束。
下面将针对图1所示的测试实例来说明图2和图3中示出的自动同时执行重合操作的方法。在图1所示的示例中,假设在图2中的步骤22处共构造了m=3个测试例,测试例1具有测试例操作Opt1(打开)、Opt2(登录)、Opt3(同意)和Opt4(提交),测试例2具有测试例操作Opt1(打开)、Opt2(登录)、Opt3(同意)和Opt5(退出),而测试例3具有测试例操作Opt1(打开)、Opt2(登录)、Opt6(拒绝)和Opt7(查询)。在步骤24处,分析这三个测试例之间的重合操作,绘制如图1中示出的测试例树,其中测试例1、测试例2和测试例3中的头两个操作Opt1和Opt2是重合的,而测试例1和测试例2中的Opt3这个操作也是重合的。
如果按理想情况不限制副本系统的数目,则根据上述分析出的重合操作数和测试例数,在步骤302处,创建n=3个副本系统Replica1、Replica2和Replica3。在步骤304处,按照理想上总执行时间最短且总执行操作最少的原则计算得到如图4A所示的Worlist,即将三个测试例分别分发到三个副本系统上。在步骤306处初始化三个副本系统Replica 1、Replica2和Replica3。
接着在步骤308处读取Worklist中的第一条记录<1,Opt1,1,3,(1,2,3;1)>。接着执行步骤312到318,由DistrnFlag=1可知,该条记录中的测试例1的测试例操作Opt1是重合操作,要复制k=3份,并分发到Replica1、Replica2和Replica3三个副本系统,然后在这三个副本系统上自动地同时执行该测试例操作Opt1。然后,经过在步骤320处对Worklist是否为空的判断,流程转至步骤308继续读取新一条记录<2,Opt2,1,3,(1,2,3;1)>。重复执行步骤310至318,与Opt1类似,测试例操作Opt2也是测试例1、2和3都具有的重合步骤,将其复制3份然后分发到三个副本系统上,并在三个副本系统上同时执行该测试例操作Opt2。
然后读取到记录<3,Opt3,1,2,(1,2;1)>,该测试例操作Opt3是测试例1和测试例2所共有的,应被复制2份,分别分发到副本系统Replica1和Replica2,并在这两个副本系统上同时执行操作Opt3。然后流程进行到记录<4,Opt4,0,1,(1;1)>,从DistrnFlag=0可知,该条记录中的测试例操作Opt4不是重合操作,而是测试例1所特有的操作,因而无需复制操作Opt4,仅仅在记录中指示的副本系统Replica1上执行该操作Opt4。接下来,根据记录<5,Opt5,0,1,(2;1)>、<6,Opt6,0,1,(3;1)>和<7,Opt7,0,1,(3;1)>的内容依次在相应的副本系统上执行操作Opt5、Opt6和Opt7。
针对以上示例,在不采用本发明的避免重复执行多个测试例之间的重合操作的方法的情况下,将需要总共执行12个操作,需要花费的时间为((T1+T2+T3+T4)+(T1+T2+T3+T5)+(T1+T2+T6+T7)),这里Tj为执行操作Optj所需的时间(j=1,2,...,7)。而采用本发明的自动避免重复执行重合操作的方法后,如图4A所示,总共只需执行7个操作,总执行时间为(T1+T2+T3+T4+T5+T6+T7))。采用本发明后,无论是总执行操作数还是总执行时间都得到了显著缩小。
以上参照图4A描述的是副本系统资源不受限制的理想情况,正如前所述,实际上系统资源都是有限的,这样就不可能达到理想的总执行操作数或总执行时间的最小值,而是需要在图3中的步骤304处针对总执行操作数或总执行时间来优化测试例执行顺序以及测试例操作到副本系统的分发。下面将参照图4B来说明图1中的测试实例在副本系统数限定为n=2的情况下如何应用本发明。在此仅说明与图4A中情况不同的步骤。
在图3的步骤302处,根据系统资源的限制,仅仅创建n=2个副本系统Replica1和Replica2。接下去,在步骤304处,假设按照总执行操作数最少的原则来优化测试例执行顺序和到副本系统的分发。在各种执行顺序和分发的情况下,确定所需执行的操作数,然后比较各种情况下的总执行操作数,最后选取总执行操作数最少的执行顺序和分发。当然在各个测试例中的测试例操作的执行时间可知道的情况下,也可以通过相加得到各种执行顺序和分发情况下的执行时间,然后比较各种情况下的总执行时间,从而按照总执行时间最短的原则来选取最优的测试例执行顺序和到副本系统的分发。
针对图1所示的测试例情况,为了保证总执行操作数最少,需要先在副本系统Replica1和Replica2上分别执行测试例1和测试例2,然后初始化执行完测试例的任一副本系统,从而在该副本系统上执行测试例3,图4B给出了这种执行情况下的Worklist。
下面针对图1中的示例,按照图4B给出的Worklist来继续执行图3中的步骤。在步骤306处,初始化两个副本系统Replica1和Replica2。然后在步骤308,读取Worklist中的第一条记录<1,Opt1,1,2,(1,2;1)>,将Opt1分发到两个副本系统上,并在这两个副本系统同时执行。接下去读取Worklist中的第二条和第三条记录,类似地,将Opt2和Opt3分发到两个副本系统上,并在这两个副本系统上同时执行。然后,读取Worklist中的第四、第五条记录<4,Opt4,0,1,(1;1)>、<5,Opt5,0,1,(2;1)>,依次分别在副本系统Replica1和Replica2上执行操作Opt4和Opt5。由此,执行完测试例1和测试例2。
之后,读取Worklist中的第六条记录<6,Opt1,0,1,(1;0)>,从这条记录开始执行测试例3中的测试例操作。在执行测试例3中的第一步操作Opt1之前先初始化副本系统Replica1,使得可在其上执行测试例3。在该副本系统Replica1上依次执行测试例3中的操作Opt1、Opt2、Opt6和Opt7,从而完成测试例1、2和3在测试系统上的运行。
从图4B中可见,在副本系统资源限制在n=2的情况下,总共执行了9个操作,所花费的总执行时间为(T1+T2+T3+T4+T5+(T1+T2+T6+T7))。较之不采用本发明的避免重复执行重合操作的情况,图4B的资源受限情况下的执行效果仍然有优势,只是与图4A中的效果相比,执行操作数和执行时间都有所增加。由此可知副本系统资源受限程度越大,本发明的加速手动测试例执行的优势越不突出。在副本系统数n=1的极限情况下,本发明就失去了相对于现有技术的优势。因此,本发明的加速手动测试例执行的方法在系统资源丰富的情况下尤为有利。
图5示出了根据本发明另一优选实施例的避免重复执行重合操作的方法的流程图。该实施例与图3中所示的实施例基本相同,只是增加了在数据库中查找是否曾计算过测试例执行顺序以及测试例操作到副本系统的分发的步骤。对于与图3中相同的步骤不再累述,在此仅仅描述与图3中实施例不同的步骤。
具体地,在系统中设置一数据库DB,用于存储和管理对于被测系统的测试日志,该测试日志除了包括先前存储的测试例执行顺序和测试例操作到副本系统的分发之外,例如还可以包括以下中的任一个或多个:系统先前测试执行时间、系统测试结果、系统修改记录,等等。在步骤302中创建了n个副本系统之后,测试流程在步骤510处访问数据库DB,以读取针对步骤22中构造的m个测试例的测试日志,从而获得先前存储的测试例执行顺序和测试例操作到副本系统的分发。
在步骤520处,可以根据读取出的测试日志来判断是否采用先前存储的测试例执行顺序和测试例操作到副本系统的分发。测试者例如可以根据本次测试距所存储的系统测试执行的时间、系统资源变化状况、与本次测试考察目标的相关性等等因素来进行判断。本领域技术人员应该理解,任意其他适合的判断准则都是可行的。
若在步骤520处判定本次测试可以采用先前存储的测试例执行顺序和测试例操作到副本系统的分发,则流程转至步骤306。否则,流程进行到步骤304,新计算测试例执行顺序以及测试例操作到副本系统的分发。
在本实施例中,如图5所示,在步骤314判定读取完Worklist中的所有记录之后,增加一步骤530。在步骤530中,更新数据库DB中针对该测试系统的测试日志。例如可以将本次测试日期、采用的测试例树、采用的副本系统状况、计算出的测试例执行顺序和到副本系统的分发以及测试结果等等相关联地存储到数据库DB中。
图5中示出的实施例与图3中的实施例相比,省去了重复计算测试例执行顺序和到副本系统的分发。在需要多次执行相同的多个测试例以及多个测试例的构成关系复杂的情况下,图5所例示的这种测试执行方法尤为有利,可以显著地节省系统资源并提高测试效率。
图6是示出了根据本发明优选实施例的加速手动测试例执行的装置600的示意图。如图6所示,该加速手动测试例执行装置600包括测试例分析器610和测试例控制器620,其中测试例控制器620包括副本系统创建器622、优化器624以及测试例调度处理器626。
测试者可通过诸如键盘的输入设备或从测试例库中调用来向加速手动测试例执行装置600输入多个测试例。测试例分析器610对输入的多个测试例进行分析,通过构建这多个测试例之间的构成关系,从而找出多个测试例之间的重合操作。然后将分析出的重合操作的信息以及输入的多个测试例一起输入到测试例控制器620。在测试例控制器620中,首先利用副本系统创建器622根据测试例分析器610分析出的重合操作的信息以及测试者输入的由系统资源状况决定的副本系统数上限,创建对于被测系统的n个副本系统。然后优化器624基于重合操作信息以及副本系统数n,来按照总执行操作数最少或总执行时间最短等准则,计算最优的测试例执行顺序以及测试例操作到副本系统的分发。测试例调度处理器626按照优化器624计算出的测试例执行顺序执行多个测试例,并根据计算出的测试例操作到副本系统的分发,调度哪些操作需要复制几份并需要分发到哪些副本系统,最后在副本系统上执行多个测试例,其中重合操作是在相关的多个副本系统上同时执行的。
应当注意,图6中示出的加速手动测试例执行装置600仅仅是示例性的。本领域技术人员通过阅读对图2至图5的描述,可以构想出包括实现这些图中所示步骤的功能的模块的加速手动测试例执行装置。
本发明的加速手动测试例执行的方法及装置可以与目前的手动测试工具相结合地应用,例如嵌入到IBM公司的手动测试工具Rational Manual TesterTM中。
出于例示和说明的目的给出了对本发明的各种方面的以上描述。这并非旨在穷举或将本发明限于所公开的精确形式,并且显然可以进行很多修改和变化。例如,上述多个实施例中的步骤和模块的各种适当组合也是可行的。另外,针对测试例在测试执行过程中发生改变的情况下,可以实时地构建多个测试例之间的构成关系,得到多个测试例的实时的重合操作信息,并根据该实时重合操作信息以及系统资源状况,实时地计算当前最优测试例执行顺序以及到副本系统的分发。由此可以获得手动测试例执行效率的最大提高。因此,应当理解,本发明并不限于以上公开的特定实施例,而是旨在覆盖由以下权利要求所限定的修改和变型。

加速手动测试例执行的方法和装置.pdf_第1页
第1页 / 共24页
加速手动测试例执行的方法和装置.pdf_第2页
第2页 / 共24页
加速手动测试例执行的方法和装置.pdf_第3页
第3页 / 共24页
点击查看更多>>
资源描述

《加速手动测试例执行的方法和装置.pdf》由会员分享,可在线阅读,更多相关《加速手动测试例执行的方法和装置.pdf(24页珍藏版)》请在专利查询网上搜索。

本发明公开了一种通过避免重复手动执行多个测试例中的重合操作而加速手动测试例执行的方法和装置。在本发明中,首先分析所述多个测试例之间的重合操作,然后在执行到测试例中的重合操作时,自动地在包含该重合操作的测试例之间同时执行所述重合操作。与现有技术相比,利用本发明的方法和装置,不仅减少了手动测试例操作,也减少了手动测试执行时间,从而大大提高了手动测试例执行的效率。 。

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

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1