首页/开发/软件测试速查/非法状态迁移用例
用例设计方法62 条

非法状态迁移用例

验证在错误状态下的操作被拒绝:如已取消订单再次支付、已发货订单取消;断言操作失败且状态、数据无变化。

软件测试速查开发更新于 2026-10-13

非法状态迁移用例

验证在错误状态下的操作被拒绝:已取消订单再支付、已发货订单申请取消、已关闭工单再回复。断言要覆盖三层:业务错误码明确、状态保持原样、数据层无副作用——部分实现会先写日志或冻结资金再报错,仅断言接口报错是不够的。

基本信息

目标非法迁移被拒绝且系统状态不被破坏
断面选择取消后、发货后、关闭后、过期后等关键断面
断言层次错误码、状态值、数据副作用
并发补充两个合法操作的并发组合单独设计
常见副作用日志、金额冻结、库存占用、消息投递
维护要求状态机变更时同步更新断面清单
时间边界过期瞬间、超时边缘的迁移单独构造用例

用例示例

用例示例
前置:订单状态 = 已取消
操作:调用支付接口
预期:业务错误码明确;订单状态仍为已取消;无支付流水生成
# 并发补充:两个合法操作并发时可能形成非法状态组合
# 断言顺序:先业务错误码,再核对数据层结果

典型使用场景

  • 订单系统:取消、关闭、完成后的操作拒绝验证。
  • 工单流转:已关闭工单的评论、改派、升级路径。
  • 账号生命周期:注销后登录、冻结后交易的拒绝。
  • 接口测试:绕过前端直接调接口的非法操作。
  • 回归资产:状态机变更后增补对应断面用例。
  • 事故复盘:脏数据事故反查缺失的非法迁移用例。
  • 边界状态:接近超时或过期瞬间的迁移,用时间边界构造用例。
  • 成对维护:非法迁移用例与合法流程用例成对更新。
非法迁移用例要验证无副作用:断言顺序先业务错误码,再核对数据层结果。
并发组合不能靠单线程用例覆盖:两个合法操作并发可能形成非法状态。
错误提示要能指导下一步:只说「操作失败」无法区分原因。

易错点

  • 只断言接口报错,不校验数据库状态未被修改。
  • 遗漏并发场景:两个合法操作在并发下形成非法状态组合。
  • 断面清单不随状态机更新,新状态的非法操作漏测。
  • 错误码与提示信息不明确,用户重复尝试放大影响。
  • 只覆盖典型断面,遗漏时间边界(过期瞬间)的迁移。

数据来源与参考

  • ISTQB CTFL 4.0 大纲(状态迁移测试)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌