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

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 转载请注明来源

相关推荐
狂师4 小时前
2026 性能测试工具大盘点:13 款主流压测工具,测试工程师必备!
程序员·测试·ab测试
程序员cxuan19 小时前
GPT-6 Astra 的提示词泄露了,里面居然藏着个保安?
人工智能·后端·程序员
一拳不是超人1 天前
一个没测暗色模式的 Bug,吃掉了我一半 谷歌扩展用户
前端·javascript·程序员
敲代码的嘎仔1 天前
28届后端开发-百人小厂面试题
java·后端·面试·程序员·秋招·实习·转正
爱勇宝1 天前
程序员都开始懂业务了,产品经理还剩下什么价值?
程序员·产品经理
程序员20071 天前
“这需求用 AI 也就十分钟吧?”——周五深夜十一点,我在工位给 Cursor 擦屁股
程序员
狂师1 天前
最近火爆出圈的,FDE 到底是个什么岗位?
人工智能·程序员·全栈
guwentian2 天前
端侧大模型上线 8 个月,给我们上了 4 课
大模型·测试
demo007x2 天前
让大模型活在你的鼠标旁:我用 Tauri 2 + Rust 打造了一款“反直觉”的 AI 全局划词效率神器
macos·程序员·llm
程序员海军2 天前
AI 越来越强,为什么打工人反而越来越累、越来越内耗了?
前端·程序员·aigc