UML状态机 测试用例生成实例

本文介绍了如何使用OneLogic工具生成UML状态机的测试用例,包括状态覆盖、迁移覆盖等目标。通过实例展示了并发结构、层次结构、历史状态和时间事件等复杂情况的处理,并比较了广度优先和深度优先模式下用例生成的差异。
摘要由CSDN通过智能技术生成

1 背景

UML状态机(State machine)可以直观的进行系统建模,描述系统对事件的响应行为。根据使用目的不同,UML状态机图既可以作为设计阶段的输出,也可以用于开发阶段,将状态机作为一种功能实现手段,通过代码生成将状态机图转换为实现代码。

UML状态机是一种扩展有限自动机,支持并发、层次、事件、历史等特性,可以对复杂系统行为进行建模。UML状态机蕴含的复杂性,使得对状态机的测试成为一个问题,其关键是如何获得满足覆盖目标测试用例集。

OneLogic支持结构化自然语言需求用例生成、UML活动图用例生成,也具备一定的UML状态机图用例生成能力。本文给出OneLogic针对一个具体状态机的用例生成实例。

2 状态机的覆盖目标

状态机有不同的覆盖目标,带来不同的用例生成复杂度。

(1)状态覆盖:状态机中的每个状态至少访问一次;状态覆盖是最基本的覆盖目标。

(2)迁移覆盖:状态机中的每个迁移至少触发一次;迁移覆盖包含状态覆盖,实现迁移覆盖则必然实现了状态覆盖。

(3)状态格局覆盖:由于UML状态机包含层次、并发结构,在状态机运行的某个时刻,可能有多个状态处于激活状态,它们构成一个状态格局(state configuration)。实现状态格局覆盖,意味着被测系统所有可能的状态组合被覆盖。实现状态格局覆盖,必然实现了状态覆盖。

(4)状态格局迁移覆盖:即状态格局之间所有迁移至少触发一次。

除上述状态机覆盖目标外,还可进一步对迁移守卫条件(guard)进行覆盖,包括对guard的判定覆盖、MC/DC覆盖等。

3 实例

本文对上述UML状态机进行用例生成。该状态机具有如下特点。

3.1 含有并发结构

状态机中,顶层状态washer包含如上图所示的3个正交区域(orthogonal region)。同一个父状态下的多个区域是并发执行的。当父状态washer开始执行时,三个区域都开始执行。

3.2 含有层次结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值