基于UML顺序图的场景测试用例生成方法文档格式.docx
- 文档编号:14981475
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:3
- 大小:18.15KB
基于UML顺序图的场景测试用例生成方法文档格式.docx
《基于UML顺序图的场景测试用例生成方法文档格式.docx》由会员分享,可在线阅读,更多相关《基于UML顺序图的场景测试用例生成方法文档格式.docx(3页珍藏版)》请在冰豆网上搜索。
我们选取了DHCP协议的一个子集,协议的一般过程1.客户端广播一个DHCP_DISCOVER消息。
2.每个具有网络地址的服务可能响应一个DHCP_OFFER消息,如果都没有响应,则表示超时失败。
3.如果客户端接收到一个或多个DHCP_OFFER消息,则选择其中一个,然后广播一条DHCP_REQUEST消息给所有的服务器,并附上选择参数及指明哪一个服务器。
4.所有服务器接收到客户的广播信息,只有被选中的服务器才绑定地址给这个客户,并发送确认消息DHCP_ACK,连接成功;
如果要求的地址不可得,则服务器发送一个DHCP_NAK给客户,连接失败。
图1显示了DHCP协议的部分类图。
图1DHCP的部分类图图2是实例中请求IP的顺序图。
图2请求IP的顺序图图3是DHCP中Server类的状态图。
图3DHCP-Server状态图
2UML顺序图的一个形式化定义为了能在测试中找出所有的场景,下面给出顺序图的形式化定义:
定义1顺序图SD可以表示为一个六元组:
SD=O,M,E,→,msg,obj,其中:
●O={O1,O2,…,Om},是对象的集合。
O1,O2,…,Om都是顺序图中的对象。
●Mguard´
message´
name´
parameter_list,是消息的集合。
顺序图中的每一个消息都形如:
“[卫士条件]消息名(参数)”。
●E=M{s,r},是事件集合。
事件是指消息的发送和接收。
对于消息msg,发送事件用msg,s表示,接收事件用msg,r表示。
顺序图中所有发送消息事件的集合记为S,所有接收消息事件的集合记为R。
SÇ
R=Æ
SÈ
R=E。
●→是消息集合M上的一个全序关系,表示顺序图中的消息在纵向时间轴上的先后关系。
●msg是从E到M的一个函数关系,msg(e)M表示事件e所对应的消息。
●Obj是从E到O的一个函数关系,obj(e)O表示时间e所对应的对象。
对象Oi上所有事件的集合记为Ei,Ei={e|eEÙ
obj(e)=Oi}。
在如图4所示的顺序图中:
O={obj1,obj2,obj3};
M={m1,m2,m3};
E={(m1,s),(m1,r),(m2,s),(m2,r),(m3,s),(m3,r)};
→=m1→m2→m3.图4一个简单的顺序图顺序图主要描述了对象间发送消息的时间顺序。
我们用符号‘’来表示事件间的先后关系,它满足如下三个性质:
1.对同一消息而言,发送事件先于接收事件。
2.在同一对象的生命线上,若事件e1出现在发送事件e2的上方,则e1先于e2。
3.在同一个对象的生命线上,如果接收事件e1出现在e2的上方,并且它们分别对应的发送事件也位于同一个对象的生命线上,则e1先于e2。
‘’顺序关系是强制顺序关系,那么即使它们在顺序图的时间轴上存在先后关系,这两个事件实际发生的先后顺序也是不确定的。
例如图4中,尽管在的上方,但是在系统实际运行中,由于m1,m2,m3都是异步消息,因此并不一定先于发生,这是由于图形表示的局限性造成的。
一个简单顺序图刻画了系统运行的一个场景,其运行过程表现为一个事件的序列,其中事件ei+1在事件ei后发生。
由于事件之间存在强制顺序关系‘’,因此并不是所有事件序列都是顺序图允许的。
而且,由于‘’并不是一个全序关系,所以一个顺序图的场景可能允许多个事件序列。
可以用一个有向无环图来表示‘’关系,对于任意两个事件ei,ei∈E,如果eiei,则画一条从ei指向ei的边,直到所有事件都在这个有向图上。
通过遍历所得的DAG图,可以很容易的得到顺序图中的每一个有效的事件序列。
在图4的例子中,(m1,s),(m2,s),(m2,r),(m3,s),(m3,r),(m1,r)和(m1,s),(m1,r),(m2,s),(m2,r),(m3,s),(m3,r)就是两个有效的事件序列。
定义2对于顺序图SD=O,M,E,→,msg,obj,场景定义为一个消息序列M1,M2,…,Mm,并且满足下面两个条件:
所有M中的事件在序列中出现且仅出现一次,也就是说{M1,M2,…,Mm}=M且对于所有的ij,MiMj。
对于任意两个消息序列Mi,MjÎ
M,如果(Mj,s),那么序列中Mi在Mj的前面。
根据场景的定义,通过所找到的合法的事件序列就可以确定与该事件序列相应的场景。
如图4,m1,m2,m3就是一个有效的场景。
3基于UML顺序图生成场景测试用例的方法顺序图中的场景设计可能与实现不一致,例如由于消息名的编码错误、不正确的或缺少输出等,那么通过执行顺序图中的所有可能场景,至少能在其中的一个场景的执行过程中达到该错误,因此只要从顺序图中生成覆盖所有场景的测试用例就能有效地找出存在的错误。
在测试用例的生成过程中,我们将环境条件与输入,方法调用序列和预期输出作为最终的测试用例,最后将系统测试后的实际输出和方法调用序列与预期的输出和方法调用序列进行比较,从整体上验证系统的最终实现是否与设计一致,从而完成顺序图的场景测试。
测试衡量方法测试的主要评测方法包括覆盖和质量,测试覆盖是对测试完全程度的评测,质量是对测试对象的可靠性、稳定性以及性能的评测。
对于顺序图的场景测试,最基本的评测方法就是测试覆盖,即要求针对每一个场景都至少生成一个测试用例。
但是顺序图本身并不能充分地对系统交互行为进行建模,仅通过顺序图并不能生成充分地场景测试用例。
所以我们将顺序图与交互对象的状态图相结合,生成更充分的测试用例。
为此,定义如下评测方法:
1)顺序图中的每个场景至少被测试一次。
2)如果顺序图中的对象存在状态图,那么与场景相关的每个状态至少要被测试一次。
顺序图场景测试用例生成方法的步骤第一步,检查顺序图中的每一个对象,如果其存在状态图,就将对象状态加入到顺序图中。
以DHCP-Server对象为例,其状态图如图3所示,HasfreeIPaddresses和HasnofreeIPaddresses是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,10C:
1,2,3,6,7,8,11,12 第三步,选定一个场景,根据其消息序列在顺序图中遍历该场景,记录场景的输入和最终输出。
以场景B为例:
输入:
用户调用connect操作。
预期输出:
返回“nak”消息,表示申请IP不成功。
第四步,确定每个场景的环境条件。
首先从顺序图中找出所有的测试单元,在顺序图中,每一个交互的对象就是一个测试单元。
本例中的DHCP_Client和DHCP_Server就是两个测试单元;
其次对每一个测试单元,从类图中导出相应的环境设置。
结果如表1所示。
表1DHCP的测试单元与环境测试单元DHCP-ServerDHCP-Client环境设置Offer:
BooleanhasFreeIP:
Boolean无找出环境设置之后,再为每一个场景找出相应的选择,从而确定其环境条件,如场景B中,Offer=true,hasFreeIP=false。
第五步,测试用例生成一个测试用例包括4个部分:
环境条件、输入、方法调用序列、预期输出。
对于场景B,所有这些信息已从前面的四步中生成,只要将它们组合在一起就可以了。
场景B的测试用例为:
环境条件:
DHCP-Server:
offer=true,hasFreeIP=false输入:
用户调用connect操作。
方法调用序列:
,,,, 预期输出:
返回”nak”消息,表示申请IP不成功。
在这个测试用例中,方法调用序列就是该场景中的消息序列。
可用同样的方法为所有场景生成测试用例。
4结束语文出现了一个基于UML顺序图设计的面向对象的软件的自动测试的概念和相应的实现工具SeDiTeC,该方法提出了一个可测试的顺序图的规则,并在SeDiTeC中实现了完整的测试过程,但是没有详细描述如何从顺序图中生成测试用例。
文指出了多态性对顺序图测试场景的影响,提出了相应的对策,有效地解决了测试消息序列中多态消息的测试问题,但没有说明测试用例如何生成。
文同样提出了一个顺序图生成测试用例的方法,但是该方法没有给出场景的分析,而且生成的用例数太多,工作量大。
本文提出的基于UML顺序图生成场景测试用例的方法,包括找出场景和生成测试用例,改进了这类方法生成测试用例数多、工作量大的缺点,减少了测试用例的重复生成。
参考文献[1]UMLSpecification:
///uml DynamicHostConfigurationProtocol(DHCP).http:
///rfc/March1997Hans-ErikEriksson着.余安萍等译.UML2工具箱.电子工业出版社,2004FraikiF,LeonhardtT,SeDiTec.TestingBasedonSequenceDiagrams.In:
the17IEEEInt1.Conf.onAutomatedSoftwareEngineering(ASE’02)Sep.2002.261267黄陇,于洪敏,陈致明.多态性在UML顺序图测试场景生成中的影响及对策.计算机工程与设计,2005江泽凡王林章等.基于UML顺序图的测试方法.计算机科学,2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 UML 顺序 场景 测试 生成 方法