科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件基于UML顺序图的场景测试用例生成方法(2)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文提出了一个基于UML顺序图的场景测试方法,它以UML顺序图为主要测试模型,结合类图和状态图生成所有的测试场景,然后找到与每一场景相关的环境条件并将它与方法序列、输入、输出合理组合作为覆盖该场景的测试用例。

作者:逄瑞娟/李劲华 来源:计算机与信息技术 2007年8月31日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

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

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

3.1、测试衡量方法

测试的主要评测方法包括覆盖和质量,测试覆盖是对测试完全程度的评测,质量是对测试对象(系统或测试的应用程序)的可靠性、稳定性以及性能的评测。对于顺序图的场景测试,最基本的评测方法就是测试覆盖,即要求针对每一个场景都至少生成一个测试用例。但是顺序图本身并不能充分地对系统交互行为进行建模,仅通过顺序图并不能生成充分地场景测试用例。所以我们将顺序图与交互对象的状态图相结合,生成更充分的测试用例。为此,定义如下评测方法:

1) 顺序图中的每个场景至少被测试一次。

2) 如果顺序图中的对象存在状态图,那么与场景相关的每个状态至少要被测试一次。

3.2、顺序图场景测试用例生成方法的步骤

第一步,检查顺序图中的每一个对象,如果其存在状态图,就将对象状态加入到顺序图中。以DHCP-Server对象为例,其状态图如图3所示,Has free IP addresses和Has no free IP addresses是Server可能处于的两种状态,我们将这两个状态加入顺序图,加入状态信息后的最终结果如图5所示。

图5:加入状态信息后的顺序图

第二步,使用第3节介绍的方法通过遍历顺序图中的事件序列从而找出所有的场景。在图5中,消息4和消息7、消息10和消息12分别构成了分支,处理分支时,可以为顺序图构造多个DAG图,每个图包含其中一条分支。这样就将复杂顺序图化简成多个简单的顺序图来进行处理,遍历每个DAG图就可以得到所有场景。图5中,得到3个场景如下:

A: 1, 2, 3, 4, 5

B: 1, 2, 3, 6, 7, 8, 9, 10

C: 1, 2, 3, 6, 7, 8, 11, 12 

第三步,选定一个场景,根据其消息序列在顺序图中遍历该场景,记录场景的输入和最终输出。以场景B为例:

输入:用户调用connect操作。

预期输出:返回“nak”消息,表示申请IP不成功。

第四步,确定每个场景的环境条件。首先从顺序图中找出所有的测试单元,在顺序图中,每一个交互的对象就是一个测试单元。本例中的DHCP_Client和DHCP_Server就是两个测试单元;其次对每一个测试单元,从类图中导出相应的环境设置(包括对象属性、操作和消息中的参数)。结果如表1所示。

表1:DHCP的测试单元与环境

测试单元
DHCP-Server
DHCP-Client
环境设置
Offer:Boolean
hasFreeIP:Boolean

找出环境设置之后,再为每一个场景找出相应的选择,从而确定其环境条件,如场景B中,Offer=true,hasFreeIP =false。

第五步,测试用例生成 一个测试用例包括4个部分:环境条件、输入、方法调用序列、预期输出。对于场景B,所有这些信息已从前面的四步中生成,只要将它们组合在一起就可以了。场景B的测试用例为:

环境条件:DHCP-Server:offer=true,hasFreeIP=false

输入:用户调用connect操作。

方法调用序列:

Client.discover, Server.isServeroffer,

Client.request, Server.hasFreeIP,

Server.nak, user.notConnected

预期输出:返回”nak”消息,表示申请IP不成功。

在这个测试用例中,方法调用序列就是该场景中的消息序列。

可用同样的方法为所有场景生成测试用例。

4、结束语

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

本文提出的基于UML顺序图生成场景测试用例的方法,包括找出场景和生成测试用例,改进了这类方法生成测试用例数多、工作量大的缺点,减少了测试用例的重复生成。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章