测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵 | 京东物流技术团队

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.梳理状态之间的转换关系和触发条件,得到状态-条件表。

3.根据状态-条件表,画出功能图/状态图。

4.根据功能图输出状态迁移树。

5.输出测试用例,下表举例输出前5条,其余类似不做赘述。

5 总结

通过本节讲述的功能图测试用例设计方法,我们可以轻松设计存在对象状态转移变换需求的测试用例,从而清楚的掌握整个系统的交互过程,但如果我们面对的需求中更多描述复杂的业务处理流程,我们又该使用哪种方法呢?一起看看下一节的场景法吧~

作者:京东物流 张苑

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

相关推荐
我是陈泽2 小时前
一行 Python 代码能实现什么丧心病狂的功能?圣诞树源代码
开发语言·python·程序员·编程·python教程·python学习·python教学
肖哥弹架构1 天前
Spring 全家桶使用教程
java·后端·程序员
帅得不敢出门2 天前
安卓使用memtester进行内存压力测试
android·压力测试·测试·硬件测试
IT杨秀才4 天前
自己动手写了一个协程池
后端·程序员·go
程序员麻辣烫6 天前
像AI一样思考
程序员
一颗苹果OMG7 天前
关于进游戏公司实习的第一周
前端·程序员
万少8 天前
你会了吗 HarmonyOS Next 项目级别的注释规范
前端·程序员·harmonyos
每周都想吃火锅8 天前
如何在postman中传入文件参数
postman·测试
楽码8 天前
彻底理解时间?在编程中使用原子钟
后端·算法·程序员
江南一点雨9 天前
又一家培训机构即将倒闭!打工人讨薪无果,想报名的小伙伴擦亮眼睛~
java·程序员