您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵
自猿其说Tech
2022-06-02
IP归属:未知
18440浏览
测试
### 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.梳理状态之间的转换关系和触发条件,得到状态-条件表。 ![](//img1.jcloudcs.com/developer.jdcloud.com/d02e769e-d606-4720-ba77-0888d1ae5bde20220602145647.png) 3.根据状态-条件表,画出功能图/状态图。 ![](//img1.jcloudcs.com/developer.jdcloud.com/8a1f991c-aa60-42a7-bd08-5e70e1ce34ba20220602145659.png) 4.根据功能图输出状态迁移树。 ![](//img1.jcloudcs.com/developer.jdcloud.com/3c4e5ad8-eb28-49fc-ab0a-bfa7d3c492e520220602145710.png) 5.输出测试用例,下表举例输出前5条,其余类似不做赘述。 ![](//img1.jcloudcs.com/developer.jdcloud.com/1edcc951-763b-4e18-b709-e2d87ffe71d120220602145726.png) ### 5 总结 ![](//img1.jcloudcs.com/developer.jdcloud.com/e6b57eb3-e252-485f-8aa0-37638da41cb320220602145742.png) 通过本节讲述的功能图测试用例设计方法,我们可以轻松设计存在对象状态转移变换需求的测试用例,从而清楚的掌握整个系统的交互过程,但如果我们面对的需求中更多描述复杂的业务处理流程,我们又该使用哪种方法呢?一起看看下一节的场景法吧~ ------------ ###### 自猿其说Tech-JDL京东物流技术与数据智能部 ###### 作者:张苑(西安CS测试小分队)
原创文章,需联系作者,授权转载
上一篇:源码学习之Spring AOP
下一篇:基于Raft算法的DLedger-Library分析(一)
相关文章
安全测试之探索windows游戏扫雷
Jmeter压测实战:Jmeter二次开发之JSF采样器实现
Laputa自动化测试框架介绍
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号