非法状态迁移用例
验证在错误状态下的操作被拒绝:已取消订单再支付、已发货订单申请取消、已关闭工单再回复。断言要覆盖三层:业务错误码明确、状态保持原样、数据层无副作用——部分实现会先写日志或冻结资金再报错,仅断言接口报错是不够的。
基本信息
| 目标 | 非法迁移被拒绝且系统状态不被破坏 |
|---|---|
| 断面选择 | 取消后、发货后、关闭后、过期后等关键断面 |
| 断言层次 | 错误码、状态值、数据副作用 |
| 并发补充 | 两个合法操作的并发组合单独设计 |
| 常见副作用 | 日志、金额冻结、库存占用、消息投递 |
| 维护要求 | 状态机变更时同步更新断面清单 |
| 时间边界 | 过期瞬间、超时边缘的迁移单独构造用例 |
用例示例
用例示例
前置:订单状态 = 已取消
操作:调用支付接口
预期:业务错误码明确;订单状态仍为已取消;无支付流水生成
# 并发补充:两个合法操作并发时可能形成非法状态组合
# 断言顺序:先业务错误码,再核对数据层结果典型使用场景
- 订单系统:取消、关闭、完成后的操作拒绝验证。
- 工单流转:已关闭工单的评论、改派、升级路径。
- 账号生命周期:注销后登录、冻结后交易的拒绝。
- 接口测试:绕过前端直接调接口的非法操作。
- 回归资产:状态机变更后增补对应断面用例。
- 事故复盘:脏数据事故反查缺失的非法迁移用例。
- 边界状态:接近超时或过期瞬间的迁移,用时间边界构造用例。
- 成对维护:非法迁移用例与合法流程用例成对更新。
非法迁移用例要验证无副作用:断言顺序先业务错误码,再核对数据层结果。
并发组合不能靠单线程用例覆盖:两个合法操作并发可能形成非法状态。
错误提示要能指导下一步:只说「操作失败」无法区分原因。