基于UML顺序图的场景测试用例生成方法

上传人:s9****2 文档编号:562857136 上传时间:2023-01-06 格式:DOC 页数:7 大小:20.50KB
返回 下载 相关 举报
基于UML顺序图的场景测试用例生成方法_第1页
第1页 / 共7页
基于UML顺序图的场景测试用例生成方法_第2页
第2页 / 共7页
基于UML顺序图的场景测试用例生成方法_第3页
第3页 / 共7页
基于UML顺序图的场景测试用例生成方法_第4页
第4页 / 共7页
基于UML顺序图的场景测试用例生成方法_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于UML顺序图的场景测试用例生成方法》由会员分享,可在线阅读,更多相关《基于UML顺序图的场景测试用例生成方法(7页珍藏版)》请在金锄头文库上搜索。

1、基于UML顺序图的场景测试用例生成方法摘要本文提出了一个基于UL顺序图的场景测试方法,它以UL顺序图为主要测试模型,结合类图和状态图生成所有的测试场景,然后找到与每一场景相关的环境条件并将它与方法序列、输入、输出合理组合作为覆盖该场景的测试用例。该方法完全基于UL,而且生成的测试用例数量少,减少了测试工作量。关键词UL顺序图;场景测试;测试用例;自动测试本文提出了一个基于UL模型图来测试场景的方法,它以顺序图为主要测试模型,结合类图和状态图导出所有的场景,并将与场景相关的环境条件与方法序列、输入、输出合理组合作为覆盖该场景的测试用例。我们的工作具有两方面的优点:测试方法完全基于UL模型,以便已

2、经使用UL的软件系统能方便地采用,另一方面生成的测试用例数量少,减少工作量。本文以DHP2作为一个实例,使用UL的类图、状态图和顺序图3来说明我们提出的一个场景测试用例生成方法。DHP是由IETF进展标准化的一个协议,提供一种动态指定IP地址和配置参数的机制。我们选取了DHP协议的一个子集,协议的一般过程如下:1客户端播送一个DHP_DISVER消息。2每个具有网络地址的效劳可能响应一个DHP_FFER消息,假如都没有响应,那么表示超时失败。3假如客户端接收到一个或多个DHP_FFER消息,那么选择其中一个,然后播送一条DHP_REQUEST消息给所有的效劳器,并附上选择参数及指明哪一个效劳器

3、。4所有效劳器接收到客户的播送信息,只有被选中的效劳器才绑定地址给这个客户,并发送确认消息DHP_AK,连接成功;假如要求的地址不可得可能分配给其它用户,那么效劳器发送一个DHP_NAK给客户,连接失败。图1显示了DHP协议的局部类图。图1DHP的局部类图图2是实例中恳求IP的顺序图。图2恳求IP的顺序图图3是DHP中Server类的状态图。图3DHP-Server状态图为了能在测试中找出所有的场景,下面给出顺序图的形式化定义:定义1顺序图顺序图SD可以表示为一个六元组:SD=,E,sg,bj,其中:=1,2,,是对象的集合。1,2,都是顺序图中的对象。guardessagenaeparaet

4、er_list,是消息的集合。顺序图中的每一个消息都形如:“卫士条件消息名(参数)。E=s,r,是事件集合。事件是指消息的发送和接收。对于消息sg,发送事件用sg,s表示,接收事件用sg,r表示。顺序图中所有发送消息事件的集合记为S,所有接收消息事件的集合记为R。SR=,SR=E。是消息集合上的一个全序关系,表示顺序图中的消息在纵向时间轴上的先后关系。sg是从E到的一个函数关系,sg(e)表示事件e所对应的消息。bj是从E到的一个函数关系,bj(e)表示时间e所对应的对象。对象i上所有事件的集合记为Ei,Eie|eEbj(e)=i。在如图4所示的顺序图中:=bj1,bj2,bj3;=1,2,3

5、;E=(1,s),(1,r),(2,s),(2,r),(3,s),(3,r);=123.图4一个简单的顺序图顺序图主要描绘了对象间发送消息的时间顺序。我们用符号来表示事件间的先后关系,它满足如下三个性质:1对同一消息而言,发送事件先于接收事件。2在同一对象的生命线上,假设事件e1出如今发送事件e2的上方,那么e1先于e2。3在同一个对象的生命线上,假如接收事件e1出如今e2的上方,并且它们分别对应的发送事件也位于同一个对象的生命线上,那么e1先于e2。顺序关系是强迫顺序关系,那么即使它们在顺序图的时间轴上存在先后关系,这两个事件实际发生的先后顺序也是不确定的。例如图4中,尽管1,r在3,r的上

6、方,但是在系统实际运行中,由于1,2,3都是异步消息,因此1,r并不一定先于3,r发生,这是由于图形表示的局限性造成的。一个简单顺序图不包括分支刻画了系统运行的一个场景,其运行过程表现为一个事件的序列e1,e2,e,其中事件ei+1在事件ei后发生1i1。由于事件之间存在强迫顺序关系,因此并不是所有事件序列都是顺序图允许的。而且,由于并不是一个全序关系,所以一个顺序图的场景可能允许多个事件序列。可以用一个有向无环图DAG来表示关系,对于任意两个事件ei,eiE,假如eiei,那么画一条从ei指向ei的边,直到所有事件都在这个有向图上。通过遍历所得的DAG图,可以很容易的得到顺序图中的每一个有效

7、的事件序列。在图4的例子中,(1,s),(2,s),(2,r),(3,s),(3,r),(1,r)和(1,s),(1,r),(2,s),(2,r),(3,s),(3,r)就是两个有效的事件序列。定义2顺序图的场景对于顺序图SD=,E,sg,bj,场景定义为一个消息序列1,2,,并且满足下面两个条件:1所有中的事件在序列中出现且仅出现一次,也就是说1,2,=且对于所有的ij,ij。2对于任意两个消息序列i,j,假如i,s(j,s),那么序列中i在j的前面。根据场景的定义,通过所找到的合法的事件序列就可以确定与该事件序列相应的场景。如图4,1,2,3就是一个有效的场景。顺序图中的场景设计可能与实现

8、不一致,例如由于消息名的编码错误、不正确的或缺少输出等,那么通过执行顺序图中的所有可能场景,至少能在其中的一个场景的执行过程中到达该错误,因此只要从顺序图中生成覆盖所有场景的测试用例就能有效地找出存在的错误。在测试用例的生成过程中,我们将环境条件与输入,方法调用序列和预期输出作为最终的测试用例,最后将系统测试后的实际输出和方法调用序列与预期的输出和方法调用序列进展比拟,从整体上验证系统的最终实现是否与设计一致,从而完成顺序图的场景测试。3.1测试衡量方法测试的主要评测方法包括覆盖和质量,测试覆盖是对测试完全程度的评测,质量是对测试对象系统或测试的应用程序的可靠性、稳定性以及性能的评测。对于顺序

9、图的场景测试,最根本的评测方法就是测试覆盖,即要求针对每一个场景都至少生成一个测试用例。但是顺序图本身并不能充分地对系统交互行为进展建模,仅通过顺序图并不能生成充分地场景测试用例。所以我们将顺序图与交互对象的状态图相结合,生成更充分的测试用例。为此,定义如下评测方法:1)顺序图中的每个场景至少被测试一次。2)假如顺序图中的对象存在状态图,那么与场景相关的每个状态至少要被测试一次。3.2顺序图场景测试用例生成方法的步骤第一步,检查顺序图中的每一个对象,假如其存在状态图,就将对象状态参加到顺序图中。以DHP-Server对象为例,其状态图如图3所示,HasfreeIPaddresses和Hasnf

10、reeIPaddresses是Server可能处于的两种状态,我们将这两个状态参加顺序图,参加状态信息后的最终结果如图5所示。图5参加状态信息后的顺序图第二步,使用第3节介绍的方法通过遍历顺序图中的事件序列从而找出所有的场景。在图5中,消息4和消息7、消息10和消息12分别构成了分支,处理分支时,可以为顺序图构造多个DAG图,每个图包含其中一条分支。这样就将复杂顺序图化简成多个简单的顺序图来进展处理,遍历每个DAG图就可以得到所有场景。图5中,得到3个场景如下:A:1,2,3,4,5B:1,2,3,6,7,8,9,10:1,2,3,6,7,8,11,12第三步,选定一个场景,根据其消息序列在顺

11、序图中遍历该场景,记录场景的输入和最终输出。以场景B为例:输入:用户调用nnet操作。预期输出:返回“nak消息,表示申请IP不成功。第四步,确定每个场景的环境条件。首先从顺序图中找出所有的测试单元,在顺序图中,每一个交互的对象就是一个测试单元。本例中的DHP_lient和DHP_Server就是两个测试单元;其次对每一个测试单元,从类图中导出相应的环境设置包括对象属性、操作和消息中的参数。结果如表1所示。表1DHP的测试单元与环境测试单元DHP-ServerDHP-lient环境设置ffer:BleanhasFreEiP:Blean无找出环境设置之后,再为每一个场景找出相应的选择,从而确定其

12、环境条件,如场景B中,ffer=true,hasFreeIP=false。第五步,测试用例生成一个测试用例包括4个局部:环境条件、输入、方法调用序列、预期输出。对于场景B,所有这些信息已从前面的四步中生成,只要将它们组合在一起就可以了。场景B的测试用例为:环境条件:DHP-Server:ffer=true,hasFreeIP=false输入:用户调用nnet操作。方法调用序列:lient.disver,Server.isServerffer,lient.request,Server.hasFreeIP,Server.nak,user.ntnneted预期输出:返回nak消息,表示申请IP不成功

13、。在这个测试用例中,方法调用序列就是该场景中的消息序列。可用同样的方法为所有场景生成测试用例。文4出现了一个基于UL顺序图设计的面向对象的软件的自动测试的概念和相应的实现工具SeDiTe,该方法提出了一个可测试的顺序图的规那么,并在SeDiTe中实现了完好的测试过程,但是没有详细描绘如何从顺序图中生成测试用例。文5指出了多态性对顺序图测试场景的影响,提出了相应的对策,有效地解决了测试消息序列中多态消息的测试问题,但没有说明测试用例如何生成。文6同样提出了一个顺序图生成测试用例的方法,但是该方法没有给出场景的分析,而且生成的用例数太多,工作量大。本文提出的基于UL顺序图生成场景测试用例的方法,包

14、括找出场景和生成测试用例,改良了这类方法生成测试用例数多、工作量大的缺点,减少了测试用例的重复生成。1ULSpeifiatin1.5.g.rg/ul2R.Drs.DynaiHstnfiguratinPrtl(DHP).ietf.rg/rf/rf2131.txt.arh19973HansErikErikssn著.余安萍等译.UL2工具箱.电子工业出版社,20224FraikiF,LenhardtT,SeDiTe.TestingBasednSequeneDiagrasIn:the17IEEEInt1nfnAutatedSftareEngineering(ASE02)Sep20022612675黄陇,于洪敏,陈致明.多态性在UL顺序图测试场景生成中的影响及对策.计算机工程与设计,20226江泽凡王林章等.基于UL顺序图的测试方法.计算机科学,2022

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号