测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵
1 引言
前面几篇文章为我们讲述了因果图、判定表、正交试验等几种方法,主要是针对于不同条件输入输出的组合进行测试,但在实际需求中,我们也常会遇到需要对被测对象的状态流转进行验证的情况,此时前面几种方法将不再适用,对于这种状态转换类问题,功能图法则可大展身手。
2 概念及原理
2.1 基本概念
功能图:也称状态图法,该方法是一种专门解决动态说明问题的测试用例设计方法 ,主要由状态迁移图和逻辑功能模型两部分构成。
2.1.1 状态迁移图
用于描述一个特定对象生命期中满足某些条件的所有状态,以及由于各种事件的发生而引起的状态之间的转移。关于状态迁移图,有如下几点需要注意:
1)一个状态迁移图中包含如下几种状态:
? 初态(即初始状态) ——实心圆
? 终态(即最终状态) ——一对同心圆(内圆为实心圆)
? 中间状态——圆角矩形
2)在一张状态图中只能有一个初态,而终态则可以有0至多个。
3)状态图既可以表示单程生命周期,也可以表示系统循环运行过程。
2.1.2 逻辑功能模型
用于描述静态说明,表示在状态中输入条件和输出条件之间的对应关系。
2.2 核心思想
功能图法的核心思想在于:抽象出待测系统的若干状态以及状态之间的转换条件和转换路径,然后从状态迁移路径覆盖的角度设计测试用例。
3 方法步骤
1)分析需求,明确状态节点,具体关注以下几个信息
? 存在的状态;
? 状态之间的转换关系;
? 状态变化的触发条件。
2)梳理不同状态的转换,输出状态-条件表;
3)画出状态迁移图;
? 定义初始状态;
? 为初始状态增加一次操作改变初始状态,增加新的状态;
? 为上一步步产生的新状态增加一次操作,再增加新的状态;
? 循环直到没有新状态产生为止。
4)转换为状态迁移树;
结合广度优先遍历+深度优先遍历算法,遍历状态迁移图的每一条路径,得到状态迁移树。
5)从状态迁移树导出测试路径。
状态迁移树中根节点到每个叶子节点的路径即为一条测试用例。
4 举个栗子
场景:针对客服系统事件状态流转过程设计测试用例
1)分析客服事件可能存在的所有状态。
? 已创建/待分配
? 已分派
? 处理中
? 已解决
? 已关闭
? 升级待分派
? 再次打开
2)梳理状态之间的转换关系和触发条件,得到状态-条件表。
| 当前状态 | 下一个状态 | 状态转换条件 |
| 已创建/待分配 | 已分派 | ①系统自动分派②手动领取 |
| 已分派 | 处理中 | ①客服操作事件/事件有更新 |
| 已创建/待分配 | 处理中 | ①事件转移 |
| 已创建/待分配 | 已解决 | ①系统解决事件(如小程序-用户取消服务) |
| 已创建/待分配 | 已关闭 | ①mq触发关闭(如上游取消异常) |
| 处理中 | 已解决 | ①客服手动解决事件②系统自动解决事件 |
| 已解决 | 已关闭 | ①归档 |
| 已解决 | 再次打开 | ①手动reopen②系统触发reopen |
| 处理中 | 升级待分派 | ①客服升级事件 |
| 处理中 | 已关闭 | ①合并 |
| 升级待分派 | 已分派 | ①系统自动分派②手动领取 |
| 升级待分派 | 处理中 | ①事件转移 |
| 再次打开 | 升级待分派 | ①客服升级事件 |
| 再次打开 | 已解决 | ①客服手动解决事件②系统自动解决事件 |
| - | 已创建/待分配 | ①fxm/小程序等生成事件 |
| - | 已分派 | ①客服手动创建②电话/咚咚等方式进线 |
| - | 升级待分派 | ①系统升级事件(如邮政投诉事件) |
3)根据状态-条件表,画出功能图/状态图。
4)根据功能图输出状态迁移树。
5)输出测试用例,下表举例输出前5条,其余类似不做赘述。
5 总结
通过本节讲述的功能图测试用例设计方法,我们可以轻松设计存在对象状态转移变换需求的测试用例,从而清楚的掌握整个系统的交互过程,但如果我们面对的需求中更多描述复杂的业务处理流程,我们又该使用哪种方法呢?一起看看下一节的场景法吧~
作者:京东物流 陈雨婷
来源:京东云开发者社区 自猿其说Tech 转载请注明来源
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!