文章末尾给大家留下了大量的福利

前言

今天笔者想和大家来聊聊状态迁移,详细的讲解笔者就放在正文中了,废话不多说咱们直接进入正题。

1、概念

状态迁移法主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导致状态迁移的事件,来测试状态之间的转换。

2、 应用范围

状态迁移法的思想是提供将多个状态的转换串起来进行测试的思路。该方法适合功能的状态比较多的情况下,需测试各种状态的转换,且这些状态转换的测试在实际工作中容易被遗漏。比如播放器、遥控按键等。

3、状态迁移法的步骤

  1. 分析需求,整理所有状态;
  2. 画出状态迁移图;
  3. 列出状态-事件表;
  4. 得到状态转换树(测试路径);
  5. 根据状态转换树得到测试用例

4、案例:

需求:通过某购票系统,顾客可以提前购买火车票,去到某地。

  1. 用户登录购票系统,选择出发地、目的地、出发日期,选择某趟车次点击”预定“,且填好订票人信息,点击提交订单;当前订单状态为”未支付“;
  2. 用户手动取消订单,车票状态更新为“已取消”;
  3. 45分钟内未支付,订单自动取消,车票状态为“已取消”;
  4. 用户支付车票,车票状态变为“已支付”;
  5. 用户到达车站通过自动取票机或售票窗口取票,车票状态为“已出票”;
  6. 在开车半小时前,可进行改签,改签成功,车票状态为“改签成功”;
  7. 已出票/已改签的车票检票登上火车后,车票状态变为“已使用”;
  8. 在开车半小时前,可进行退票,退票成功,车票状态为“退票成功”。

a、整理车票订单的所有状态:

未支付、已取消、已支付、已出票、退票成功、改签成功、已使用

b、画出状态迁移图:

c、列出状态-事件表:

此项不是必须项,可依据实际情况跳过该步骤,直接得到状态转换树;

d、得到状态转换树(测试路径):

通过以上得到测试路径:

  1. 未支付-->已取消
  2. 未支付-->已支付-->已出票-->改签成功-->退票成功
  3. 未支付-->已支付-->已出票-->改签成功-->已使用
  4. 未支付-->已支付-->已出票-->退票成功
  5. 未支付-->已支付-->已出票-->已使用
  6. 未支付-->已支付-->改签成功-->退票成功
  7. 未支付-->已支付-->改签成功-->已使用
  8. 未支付-->已支付-->退票成功
  9. 未支付-->已支付-->已使用

e、根据状态转换树得到测试用例

以上每条测试路径则为1条测试用例,把每条路径进行覆盖测试即可。对于状态转换有存在多个事件触发,覆盖多个事件的操作,比如“未支付-->已取消”这条测试路径,需要测试2种情况:1)用户手动取消车票订单 2)超过45分钟用户未支付,自动取消车票订单

5、总结

实际工作中,对于业务流程复杂的产品,不能很好地通过场景覆盖的方法进行用例设计时,可应用状态迁移法的思路,从业务的各种状态出发,并通过这些状态之间的切换条件串联起来进行测试覆盖,以此保证用例的高覆盖率。

下面是我给大家留下的一些福利,有需要的小伙伴可以私信关键字“资料”获取哟。

项目实战

app项目,银行项目,医药项目,电商,金融

大型电商项目

​全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

​全套软件测试自动化测试大厂面经

python自动化测试++全套模板+性能测试

状态迁移法你还不会?看看这篇文章相关推荐

  1. 查看防火墙状态_干货 | 华为防火墙配置,这篇文章强烈推荐收藏学习

    1.命令行界面密码:Admin@123 [ ]web-manager enable 开启web 界面管理 2.web界面:默认 admin   Admin@123 3.区域 默认区域:trust   ...

  2. 专门学了三个月爆款标题写作,还不如看完这篇文章后思路清晰,值得收藏的技巧合集。

    如何通过三个层面提升个人主页的品质.其中关键一点讲到封面图要写上抖音内容的主标题,让用户看到封面就能知道视频的大概内容,这对于进入个人主页的用户来说感觉更好.之所以我们会点开一篇作品,大多是因为标题足 ...

  3. 都3年测试经验了,用例设计还不知道状态迁移法?

    1.概念 状态迁移法主要关注在测试状态转移的正确性上面.对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等.通过构 ...

  4. 编写测试用例基本要求、非功能性测试和状态迁移法介绍

    编写测试用例基本要求 1.项目测试流程 (1)需求评审 (2)编写测试计划与测试方案 (3)测试用例设计与评审 (4)测试执行与BUG跟踪 (5)编写测试报告 2.测试用例需求来源 (1)需求说明书, ...

  5. 功能测试---状态迁移法

    前言:通过状态能否迁移,从而设计测试用例的方法 状态迁移法主要关注在测试状态转移的正确性上面 实例: MP3播放器功能状态-事件表如下,请用状态迁移法设计用例. 并且当MP3曲目在起点时不能按R键,当 ...

  6. 3年测试经验,用例设计竟然不知道状态迁移法?

    1.概念 状态迁移法主要关注在测试状态转移的正确性上面.对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等.通过构 ...

  7. 一文自测中级门槛:用例设计状态迁移法

    1.概念 状态迁移法主要关注在测试状态转移的正确性上面.对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等.通过构 ...

  8. 状态迁移法——测试权限审批功能

    运用状态迁移法来设计测试用例,关键是划出有限状态机,再根据状态之间转换的条件来设计测试用例. 比如说,我们测试一个权限审批的功能.用户在登录系统之前需要申请权限,管理员审批通过后,用户才能正常登录.在 ...

  9. pandas 第一行_Pandas进阶,从0到100你还差这篇文章!

    /作者:youerning//来源:51CTO博客/今天分享的这篇文章,是关于pandas的一个串讲,很适合查漏补缺.一.数据对象pandas主要有两种数据对象:Series.DataFrame注:  ...

最新文章

  1. 妙用SQL Server聚合函数和子查询迭代求和
  2. python贪吃蛇小游戏_python开发贪吃蛇小游戏
  3. 小米登录协议分析_小米回应小米11充电头兼容问题
  4. [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE 原创陈本峰2009-02
  5. python excelwriter保存路径_Python和Excel 终于可以互通了!!
  6. oracle数据泵导出csv文件,数据泵expdp导出遇到ORA-01555和ORA-22924问题的分析和处理...
  7. Linux用户与用户组
  8. docker 容器数据卷
  9. 辗转相除求最大公约数,最大公倍数
  10. python执行过程_Python threading模块condition原理及运行流程详解
  11. redhat 添加ssh端口_Centos以及Redhat修改ssh端口
  12. 段错误 php,如何解决php扩展出现段错误的问题
  13. implode - of an array
  14. linux 进程意外关闭,Webdriver异常:进程意外关闭,状态为1
  15. 算法:动态规划解决爬楼梯Climbing Stairs python3
  16. web前端面试题讲解-网站重构的理解
  17. 怎么给PDF插入一个文本框写注释?PDF添加注释文本框教程
  18. android 阻尼函数,数学的 H5 应用:拖动阻尼
  19. thinkadmin按配置上传文件至本地,七牛云或阿里oss
  20. 上善若水,水利万物而不争

热门文章

  1. 学习笔记 | LeetCode 460. LFU缓存
  2. c语言5个人3课成绩,一道c语言排序题【问题描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高...
  3. 元件基础知识——零欧电阻
  4. OPPOR6007_官方线刷包_救砖包_解账户锁
  5. Xilinx JESD204B IP使用
  6. 基于LoRa低功耗无线通信技术的水表数据采集方法
  7. 手把手教你安装vue脚手架
  8. Virtio Over MMIO
  9. 再说曾头市史文恭只 水浒
  10. 千元“性能小霸王”国产旗舰手机,性价比超高,手机炸开花!