Files
TARE-Learn/slidev/pages/day4/m5-exception-defensive.md
T
smart 67837df8d0 docs: 更新TRA编程培训课程材料、课件与AI技能交付包
- 新增全套考试卷、评估卷、参考答案与考试培训包模板
- 修正slidev培训课件:调整模块标题、链路图缩放,替换工单示例为通用业务对象
- 修正课堂红线表述为证据红线,将小组作业调整为个人作业要求
- 新增权限、状态流转、审计日志、看板指标四类可复用业务规则块
- 整理AI工程技能交付包,迁移旧资产至客户专属交付包并统一术语
- 新增考试输出模板与TRAE使用记录文档
2026-08-08 11:00:36 +08:00

121 lines
4.2 KiB
Markdown

# 模块 5:异常态与防御性逻辑
<div class="mt-6 text-sm">
复杂业务不能只测正常流。权限不足、接口失败、重复提交、非法状态流转都必须有明确处理。
</div>
<div class="grid grid-cols-3 gap-4 mt-8 text-sm">
<div class="p-3 rounded-xl bg-blue-500/10 border border-blue-500/30 text-center">空数据</div>
<div class="p-3 rounded-xl bg-red-500/10 border border-red-500/30 text-center">接口失败</div>
<div class="p-3 rounded-xl bg-amber-500/10 border border-amber-500/30 text-center">权限不足</div>
<div class="p-3 rounded-xl bg-purple-500/10 border border-purple-500/30 text-center">重复提交</div>
<div class="p-3 rounded-xl bg-emerald-500/10 border border-emerald-500/30 text-center">非法流转</div>
<div class="p-3 rounded-xl bg-gray-500/10 border border-gray-500/30 text-center">工单不存在</div>
</div>
<!--
第三天已经验证基础页面能打开。
第四天要进一步补异常态和防御性逻辑。
真实问题往往发生在异常流,不在正常流。
-->
---
# 异常态清单
<div class="mt-5 text-xs">
| 场景 | 触发条件 | 前端表现 | 后端响应 | 验收 |
|---|---|---|---|---|
| 空列表 | 查询无结果 | 显示空状态 | 返回空数组 | 不显示报错 |
| 接口失败 | 服务异常 | 提示重试 | 5xx 或业务错误 | 页面不崩溃 |
| 权限不足 | 无权限操作 | 按钮不可见或提示无权限 | 403 | 不完成操作 |
| 重复提交 | 连续点击提交 | 按钮禁用或 loading | 拒绝重复请求 | 只生成一条记录 |
| 非法流转 | closed -> processing | 提示非法状态 | 业务错误码 | 状态不变 |
| 工单不存在 | 错误 ID | 显示不存在 | 404 或业务错误 | 页面不崩溃 |
</div>
<!--
异常态要写成表。
每个场景都要区分前端表现、后端响应和验收方式。
-->
---
# 最小测试集
<div class="mt-5 text-sm">
| 编号 | 场景 | 操作 | 预期 |
|---|---|---|---|
| E01 | 无权限删除 | 研发账号请求删除接口 | 返回拒绝 |
| E02 | 非法状态流转 | closed -> processing | 状态不变 |
| E03 | 重复提交验证 | 连续点击提交验证 | 只成功一次 |
| E04 | 工单不存在 | 查询错误 ID | 页面不崩 |
| E05 | 驳回缺少原因 | remark 为空 | 返回参数错误 |
| E06 | 看板无数据 | 无数据范围 | 显示空态 |
</div>
<!--
课堂时间有限,所以至少覆盖这个最小测试集。
它覆盖权限、状态、参数、重复提交、页面异常和看板空态。
-->
---
# 防御性修改边界
<div class="mt-6 text-sm">
| 层级 | 修改重点 |
|---|---|
| 前端 | loading、禁用按钮、空态、错误提示 |
| 后端 Controller | 参数校验、权限校验 |
| Service | 状态校验、幂等、防重复、事务 |
| 审计日志 | 避免重复有效记录 |
</div>
<div class="mt-4 p-3 rounded-xl bg-amber-500/10 border border-amber-500/30 text-sm">
不要为了一个工单异常态,重写全局请求库或无关业务模块。
</div>
<!--
异常态修复很容易扩散。
课堂里要控制边界:只补工单模块相关前端状态、后端校验、Service 状态保护和审计日志。
-->
---
# 可直接复制到 rules:异常态测试
<div class="mt-5 text-xs">
```md
## 核心逻辑必须有测试或豁免说明
- 级别:待确认约束
- 适用场景:权限校验、状态流转、审计、看板指标、异常态修复。
- 必须:优先补自动化测试;无法测试时说明原因、风险和手工验收方式。
- 禁止:只说“已验证”但没有命令、样例、截图、接口响应或手工步骤。
## 权限必须做正反角色验证
- 必须:至少验证一个授权角色和一个未授权角色;涉及数据范围时验证越权数据。
- 禁止:只用管理员账号验证。
## 状态流转必须覆盖合法和非法路径
- 必须:每个关键动作至少覆盖一条合法路径和一条非法路径。
- 禁止:只测试从初始状态到成功终态的主链路。
```
</div>
<!--
异常态规则放在这里,是因为很多团队会把“测试”理解成正常流程跑通。
第四天必须把测试规则写进 rules:权限要正反角色,状态要合法非法路径,不能只用管理员账号看页面。
如果没有自动化测试,也必须给出手工验收证据。
-->