测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵| 京东物流技术团队
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条,其余类似不做赘述。
用例编号 | 测试项 | 标题 | 预置条件 | 操作步骤 | 预期结果 |
Test_01 | 改变事件状态 | 事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【已关闭】 | 可正常操作事件 | 1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、事件15天无操作,系统归档事件。 | 事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【已关闭】 |
Test_02 | 改变事件状态 | 事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【已解决】--【已关闭】 | 可正常操作事件 | 1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、客服reopen事件;6、客服点击解决事件;7、事件15天无操作,系统归档事件。 | 事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【已解决】--【已关闭】 |
Test_03 | 改变事件状态 | 事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】 | 可正常操作事件 | 1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、客服reopen事件;6、客服点击升级事件;7、事件分派至其他客服;8、客服操作更新事件信息;9、客服解决事件;10、事件15天无操作,系统归档事件。 | 事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】 |
Test_04 | 改变事件状态 | 事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【处理中】--【已解决】--【已关闭】 | 可正常操作事件 | 1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、客服reopen事件;6、客服点击升级事件;7、主管转移事件;8、客服处理并解决事件;9、事件15天无操作,系统归档事件。 | 事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【处理中】--【已解决】--【已关闭】 |
Test_05 | 改变事件状态 | 事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】 | 可正常操作事件 | 1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击升级事件;5、事件分派至其他客服;6、客服操作更新事件信息;7、客服解决事件;8、事件15天无操作,系统归档事件。 | 事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】 |
... | ... | ... | ... | ... | ... |
5 总结
功能图/状态图方法 | |
适用场景 | 1、由于某种条件成立导致发生状态改变的情况。2、主要关注状态转移的正确性。 |
优点 | 1、通过状态图可以清晰掌握系统的整个交互过程;2、可保证每一个状态的所有可达状态都覆盖到;3、通过验证给定条件内是否能够产生需要的状态变化,可检验出是否存在不可达的状态、不必要的状态或其他非法状态,以及非法的状态迁移。 |
缺点 | 针对有效输入输出进行设计,所以无法覆盖无效路径和非法输入。 |
注意事项 | 1、每种状态至少需要访问一次;2、重点测试最常见、最普遍的状态转换;3、其次测试最不常用的状态转换路径;4、单个状态之间的转换可通过结合其他用例设计方法保证覆盖全面;5、添加非法测试路径进行测试。(异常输入、状态和条件的非法组合) |
通过本节讲述的功能图测试用例设计方法,我们可以轻松设计存在对象状态转移变换需求的测试用例,从而清楚的掌握整个系统的交互过程,但如果我们面对的需求中更多描述复杂的业务处理流程,我们又该使用哪种方法呢?一起看看下一节的场景法吧~
作者:京东物流 陈雨婷
来源:京东云开发者社区 自猿其说Tech 转载请注明来源
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
百度搜索展现服务重构:进步与优化
作者 |瞭东 导读 本文将简单介绍搜索展现服务发展过程,以及当前其面临的三大挑战:研发难度高、架构能力欠缺、可复用性低,最后提出核心解决思路和具体落地方案,期望大家能有所收货和借鉴。 全文4736字,预计阅读时间12分钟。 01 背景 百度搜索展现服务的主要职责是请求检索系统获取结果,并依次进行模板选择、实时摘要补充、数据适配和结果渲染,将检索结果能以丰富多样的形式精准地展示给用户。在初期,这项服务基于C语言进行开发,迭代效率不尽人意。随着产品的迅速迭代和业务的不断拓展,研发效率问题逐渐凸显,为了解决这一瓶颈,搜索展现服务进化为由PHP开发、HHVM运行的服务。目前,搜索展现服务由数十个产品线、上百个研发RD共同参与研发,承载了数百个精细化的业务展现策略。然而,随着搜索业务的日益复杂化和生成式大模型的崛起,搜索展现服务也开始面临研发难度增大、架构能力不足和复用性低等多重挑战。具体表现如下: 【研发难度高】:搜索展现服务基于过程管理,逻辑复杂,多个策略框架分布于代码的各个阶段,不能满足多业务对于简化管理、易于扩展的效率诉求 【架构能力欠缺】:hhvm基础设施已经停止维护,对于异步/多线程...
- 下一篇
日志服务 SLS 深度解析:拥抱云原生和 AI,基于 SLS 的可观测分析创新
10 月 31 日,杭州云栖大会上,日志服务 SLS 研发负责人简志和产品经理孟威等发表了《日志服务 SLS 深度解析:拥抱云原生和 AI,基于 SLS 的可观测分析创新》的主题演讲,对阿里云日志服务 SLS 产品服务创新以及背后的技术积累进行了深度解读。 日志服务 SLS 是云原生观测与分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升您在开发、运维、运营、安全等场景的数字化能力。 SLS 近一年持续进行技术创新 近期迎来稳定、性能、易用、智能、成本五个方面的全新升级!包括: 稳定可靠:同城冗余存储 高性能:查询分析引擎升级 开放易用:兼容 ES/Kafka,统一易用的 SPL 语法,开箱即用的日志应用 AI 加持:智能运维基础模型,自动标注人工辅助微调,Copilot 智能问答 低成本:按写入数据量计费,热存/低频/归档存储规格 稳定可靠 稳定可靠:同城冗余存储,构建云上同城容灾服务能力 提供机房级容灾能力:当服务终端或者灾难事件导致某个机房不可用时,仍然...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果