当前位置:网站首页>都3年测试经验了,用例设计还不知道状态迁移法?
都3年测试经验了,用例设计还不知道状态迁移法?
2022-06-29 15:55:00 【TEST_二 黑】
1、概念
状态迁移法主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导致状态迁移的事件,来测试状态之间的转换。
2、 应用范围
状态迁移法的思想是提供将多个状态的转换串起来进行测试的思路。该方法适合功能的状态比较多的情况下,需测试各种状态的转换,且这些状态转换的测试在实际工作中容易被遗漏。比如播放器、遥控按键等。
3、状态迁移法的步骤
分析需求,整理所有状态;
画出状态迁移图;
列出状态-事件表;
得到状态转换树(测试路径);
根据状态转换树得到测试用例
4、案例:
需求:通过某购票系统,顾客可以提前购买火车票,去到某地。
- 用户登录购票系统,选择出发地、目的地、出发日期,选择某趟车次点击”预订“,且填好订票人信息,点击提交订单;当前订单状态为”未支付“;
- 用户手动取消订单,车票状态更新为“已取消”;
- 45 分钟内未支付,订单自动取消,车票状态为“已取消”;
- 用户支付车票,车票状态变为“已支付”;
- 用户到达车站通过自动取票机或售票窗口取票,车票状态为“已出票”;
- 在开车半小时前,可进行改签,改签成功,车票状态为“改签成功”;
- 已出票/已改签的车票检票登上火车后,车票状态变为“已使用”;
- 在开车半小时前,可进行退票,退票成功,车票状态为“退票成功”。
a、整理车票订单的所有状态:
未支付、已取消、已支付、已出票、退票成功、改签成功、已使用
b、画出状态迁移图:

c、列出状态-事件表:
此项不是必须项,可依据实际情况跳过该步骤,直接得到状态转换树;

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

通过以上得到测试路径:
- 未支付–> 已取消
- 未支付–> 已支付–> 已出票–> 改签成功–> 退票成功
- 未支付–> 已支付–> 已出票–> 改签成功–> 已使用
- 未支付–> 已支付–> 已出票–> 退票成功
- 未支付–> 已支付–> 已出票–> 已使用
- 未支付–> 已支付–> 改签成功–> 退票成功
- 未支付–> 已支付–> 改签成功–> 已使用
- 未支付–> 已支付–> 退票成功
- 未支付–> 已支付–> 已使用
e、根据状态转换树得到测试用例
以上每条测试路径则为 1 条测试用例,把每条路径进行覆盖测试即可。对于状态转换有存在多个事件触发,覆盖多个事件的操作,比如“未支付–> 已取消”这条测试路径,需要测试 2 种情况:1)用户手动取消车票订单 2)超过 45 分钟用户未支付,自动取消车票订单
5、总结
实际工作中,对于业务流程复杂的产品,不能很好地通过场景覆盖的方法进行用例设计时,可应用状态迁移法的思路,从业务的各种状态出发,并通过这些状态之间的切换条件串联起来进行测试覆盖,以此保证用例的高覆盖率。
最后:学习资源送上

这些资料,还很多录制的视频教程,对于做软件测试的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。
边栏推荐
猜你喜欢

事件相关电位ERP的皮层溯源分析

Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)

【大家的项目】 Rbatis ORM官网上线

The third sprint of Wei long La Tiao: the growth rate of performance declined, and Liu Weiping and Liu Fuping cashed out in advance
![leetcode:232. Realize queue with stack [two stacks, one auxiliary and one simulated queue]](/img/be/844772e761c0ea6002c25483be93c0.png)
leetcode:232. Realize queue with stack [two stacks, one auxiliary and one simulated queue]

作为开发人员,无代码开发平台 iVX 你有必要了解一下

面试官:说一下MySQL事务隔离级别?

Sophon AutoCV:助力AI工业化生产,实现视觉智能感知

自学编程能看得懂代码,但是自己写不出来怎么办

隐私计算助力数据的安全流通与共享
随机推荐
如何在 WordPress 中创建联系表格?
Aleph Farms聘请监管事务主管,提前为全球商业化做好准备
MySQL基础——事务
隐私计算助力数据的安全流通与共享
元数据管理Apache Atlas编译集成部署及测试
为Golang项目编写Makefile
稳定币风险状况:USDT 和 USDC 安全吗?
The third sprint of Wei long La Tiao: the growth rate of performance declined, and Liu Weiping and Liu Fuping cashed out in advance
如何在网站上安装 WordPress
Sophon base 3.1 launches mlops function to provide wings for enterprise AI capability operation
【第28天】给定一个字符串S,请你判断它是否为回文字符串 | 回文的判断
[proteus simulation] nixie tube +4x4 keyboard matrix key simple calculator
小程序在产业互联网有「大」作为
[proteus simulation] 8-bit nixie tube dynamic scanning display change data
同样是做测试,为什么别人年薪30W+?
Summary of common MySQL statements and commands
基础 | 在物理引擎中画圆弧
新股民如何网上开户?究竟网上开户是否安全么?
Alipay "security lock" was selected as an excellent case in the "child care program" of the ICT Institute: more than 330000 users have opened game protection
How do I create a contact form in WordPress?