# 模块 5:异常态与防御性逻辑
复杂业务不能只测正常流。权限不足、接口失败、重复提交、非法状态流转都必须有明确处理。
空数据
接口失败
权限不足
重复提交
非法流转
工单不存在
--- # 异常态清单
| 场景 | 触发条件 | 前端表现 | 后端响应 | 验收 | |---|---|---|---|---| | 空列表 | 查询无结果 | 显示空状态 | 返回空数组 | 不显示报错 | | 接口失败 | 服务异常 | 提示重试 | 5xx 或业务错误 | 页面不崩溃 | | 权限不足 | 无权限操作 | 按钮不可见或提示无权限 | 403 | 不完成操作 | | 重复提交 | 连续点击提交 | 按钮禁用或 loading | 拒绝重复请求 | 只生成一条记录 | | 非法流转 | closed -> processing | 提示非法状态 | 业务错误码 | 状态不变 | | 工单不存在 | 错误 ID | 显示不存在 | 404 或业务错误 | 页面不崩溃 |
--- # 最小测试集
| 编号 | 场景 | 操作 | 预期 | |---|---|---|---| | E01 | 无权限删除 | 研发账号请求删除接口 | 返回拒绝 | | E02 | 非法状态流转 | closed -> processing | 状态不变 | | E03 | 重复提交验证 | 连续点击提交验证 | 只成功一次 | | E04 | 工单不存在 | 查询错误 ID | 页面不崩 | | E05 | 驳回缺少原因 | remark 为空 | 返回参数错误 | | E06 | 看板无数据 | 无数据范围 | 显示空态 |
--- # 防御性修改边界
| 层级 | 修改重点 | |---|---| | 前端 | loading、禁用按钮、空态、错误提示 | | 后端 Controller | 参数校验、权限校验 | | Service | 状态校验、幂等、防重复、事务 | | 审计日志 | 避免重复有效记录 |
不要为了一个工单异常态,重写全局请求库或无关业务模块。
--- # 可直接复制到 rules:异常态测试
```md ## 核心逻辑必须有测试或豁免说明 - 级别:待确认约束 - 适用场景:权限校验、状态流转、审计、看板指标、异常态修复。 - 必须:优先补自动化测试;无法测试时说明原因、风险和手工验收方式。 - 禁止:只说“已验证”但没有命令、样例、截图、接口响应或手工步骤。 ## 权限必须做正反角色验证 - 必须:至少验证一个授权角色和一个未授权角色;涉及数据范围时验证越权数据。 - 禁止:只用管理员账号验证。 ## 状态流转必须覆盖合法和非法路径 - 必须:每个关键动作至少覆盖一条合法路径和一条非法路径。 - 禁止:只测试从初始状态到成功终态的主链路。 ```