AI 测试用例翻车现场:这些“看起来合理”的预期,都是错的
AI 测试用例翻车现场:这些“看起来合理”的预期,都是错的
最近我用 AI 根据一份报销审批 PRD 生成测试用例。
第一眼看,输出挺完整:
- 金额边界有了;
- 审批路由有了;
- 撤回、驳回、重提交有了;
- PC、H5 都覆盖了;
- 导出也考虑了;
- 甚至还补了异常场景和兼容回归。
如果只是粗略看一眼,很容易觉得:
这不就可以直接拿去评审,甚至入库了吗?
但我仔细看了一遍后,发现真正危险的地方不在于 AI 漏了多少用例,而在于:
它偷偷帮 PRD 补了不少“看起来合理、但实际没有需求依据”的规则。
这些规则如果直接进入正式用例,就不是测试了,而是测试工程师替产品编需求。
这篇文章不讲概念,直接看一次 AI 测试用例翻车现场。
一、先看这份 PRD
这是一个很常见的报销审批规则优化需求:
1. 普通员工可提交本人报销申请。
2. 报销金额 ≤ 5000 元时,仅直属上级审批。
3. 5000 元 < 报销金额 ≤ 20000 元时,需部门负责人审批。
4. 报销金额 > 20000 元时,需财务复审。
5. 提交后申请状态变为“审批中”。
6. 审批中可撤回,撤回后状态回到“草稿”。
7. 任一节点驳回后,状态变为“已驳回”,申请人可修改后重新提交。
8. 是否支持批量导入报销单,待产品确认。
9. 本次改动影响 PC 端、H5 端和报销数据导出。
这个 PRD 看起来不复杂。
AI 第一次生成时,也确实给出了很多测试点:
- 金额 = 3000;
- 金额 = 5000;
- 金额 = 10000;
- 金额 = 20000;
- 金额 = 25000;
- 审批中撤回;
- 驳回后重提交;
- PC 端流程;
- H5 端流程;
- 导出校验;
- 批量导入;
- 审批人异常;
- 历史数据兼容。
但问题也就藏在这些“完整”里面。
二、翻车点 1:把“需财务复审”理解成完整审批链
PRD 原文是:
报销金额 > 20000 元时,需财务复审。
AI 生成的测试点里出现过类似表达:
金额 > 20000 元时,验证审批链包含部门负责人 + 财务复审两层。
乍一看,这很合理。
因为很多公司确实可能是:
直属上级 → 部门负责人 → 财务复审
或者:
部门负责人 → 财务复审
但问题是,PRD 没写。
PRD 只明确了一件事:
大于 20000 元时,需要财务复审。
它没有说:
- 是否还需要直属上级;
- 是否还需要部门负责人;
- 财务复审是不是终审;
- 财务复审前后是否还有其他节点。
所以,AI 这条用例的问题不是“业务上不合理”,而是“没有需求依据”。
错误写法
金额 25000 元时,审批链包含部门负责人和财务复审。
修正写法
金额 25000 元时,提交后状态为“审批中”;
审批链中包含财务复审节点;
仅验证财务复审节点存在,不假设其前是否有其他审批节点。
这条规则很重要:
“需某节点审批”不等于“完整审批链已定义”。
三、翻车点 2:把“导出受影响”理解成“新增字段”
PRD 原文是:
本次改动影响 PC 端、H5 端和报销数据导出。
AI 很容易继续补充:
导出文件包含审批状态、审批人、审批时间、当前审批节点字段。
这也是一个很典型的“合理推断”。
因为审批规则改了,导出里好像确实应该有这些字段。
但 PRD 没写字段清单。
它只说:
报销数据导出受影响。
“受影响”可能代表很多事情:
- 导出范围变化;
- 导出权限变化;
- 导出字段变化;
- 导出性能变化;
- 导出数据口径变化;
- 只是需要回归验证已有导出能力。
如果产品没有给字段清单,测试不能擅自写字段级预期。
错误写法
导出文件中包含审批状态字段,且状态值正确。
导出文件中包含审批人、审批时间字段。
修正写法
导出文件可正常生成、下载和打开;
导出文件非空、未损坏;
导出记录数量与筛选范围内页面记录数量一致;
导出字段清单及字段取值规则待产品确认后补充字段级用例。
这条规则也很常见:
“导出受影响”不等于“新增字段已确认”。
四、翻车点 3:把“影响 PC/H5”理解成“两端一致”
PRD 原文是:
本次改动影响 PC 端、H5 端。
AI 生成 H5 用例时,一度写出:
H5 端状态展示与 PC 端一致。
这个表述也很容易被忽略,因为它看起来很正常。
但实际上,PRD 只说两个端受影响,没有说:
- 两端功能完全一致;
- 两端交互完全一致;
- 两端字段展示完全一致;
- 两端状态文案完全一致。
尤其是 H5 和 PC 经常会有端差异。
比如 PC 端可能展示完整审批链,H5 端可能只展示当前状态;PC 端可能有导出入口,H5 端没有;PC 端可能展示更多字段,H5 端做了简化。
所以,测试预期不能写“与 PC 一致”。
错误写法
H5 端状态展示与 PC 端一致。
修正写法
H5 端提交、撤回、驳回重提交操作均可正常执行;
状态正确展示为“审批中”“草稿”“已驳回”。
这条规则可以总结为:
“影响多个端”不等于“多个端完全一致”。
五、翻车点 4:把未定义终态写成“流程结束”
PRD 中定义了这些状态:
提交后状态变为“审批中”。
审批中可撤回,撤回后状态回到“草稿”。
任一节点驳回后,状态变为“已驳回”。
但它没有定义:
审批通过后的状态是什么?
没有说是:
- 已通过;
- 已完成;
- 待付款;
- 已付款;
- 审批完成;
- 流程结束。
AI 在生成完整审批通过场景时,很容易写:
审批通过后流程结束。
或者:
财务复审通过后状态变为已完成。
这就是典型的状态机补全。
错误写法
财务复审通过后流程结束,无更多待审批节点。
修正写法
审批通过后的终态 PRD 未定义,需产品确认。
本轮正式用例不生成审批通过后终态场景。
这条规则是:
终态未定义时,不得写“流程结束”。
六、翻车点 5:把“待确认”功能写成正式用例
PRD 原文写得很清楚:
是否支持批量导入报销单,待产品确认。
这种内容最简单,也最容易被忽视。
如果 AI 生成:
批量导入报销单成功。
批量导入失败后提示错误原因。
批量导入超过上限时拦截。
那就是明显错误。
因为“是否支持”都还没确认。
这里不应该生成任何正式用例,只能进入待确认清单。
错误写法
批量导入报销单成功。
修正写法
批量导入是否纳入本期,待产品确认;
确认纳入后再补充导入模板、字段校验、失败处理、条数上限等用例。
这条规则最简单:
待确认项不得入库。
七、真正危险的不是 AI 漏测,而是 AI 偷偷补规则
以前我们担心 AI 写测试用例时漏场景。
但这次实践后,我觉得更危险的是:
AI 写得太像真的了。
它补出来的东西往往非常合理:
- 大额报销走部门负责人 + 财务复审;
- 导出包含审批字段;
- H5 与 PC 一致;
- 审批通过后流程结束;
- 批量导入有成功和失败场景。
这些内容都符合常识。
但测试用例不能只符合常识,更要符合 PRD 或评审确认结果。
如果没有依据,就应该是待确认,而不是正式用例。
这也是 AI 测试最大的风险之一:
它不是胡说八道,而是一本正经地替需求补全。
八、我给 AI 加了 5 条硬规则
为了修正这些问题,我给 AI 加了 5 条硬规则。
规则 1:PRD 没写的,不得写成预期
只要 PRD 没定义,就不能进入正式用例。
包括:
- 终态;
- 审批链;
- 字段清单;
- 端一致性;
- UI 交互方式;
- 权限范围;
- 异常处理策略。
规则 2:“需某节点审批”不等于完整审批链
如果 PRD 只写“需财务复审”,只能验证财务复审节点存在。
不能自动补:
直属上级 → 部门负责人 → 财务复审
规则 3:“导出受影响”不等于新增字段
字段清单未确认前,只能做基础导出回归:
- 文件可生成;
- 文件可下载;
- 文件可打开;
- 文件非空;
- 记录数量一致。
字段级校验必须等待字段清单确认。
规则 4:“影响 PC/H5”不等于两端一致
如果 PRD 没说两端一致,不要写:
与 PC 端一致。
应该写本端可验证结果:
状态展示为“审批中”“草稿”“已驳回”。
规则 5:“待确认”不得生成正式用例
只要 PRD 中出现:
- 待确认;
- 需产品确认;
- 暂未明确;
- 是否支持待定;
- 后续补充;
对应内容不能入库。
只能进入待确认清单。
九、加规则后,输出发生了什么变化?
我没有让 AI 一次性直接生成最终用例,而是按流程拆开:
需求评审问题
→ 评审问题收敛
→ 测试点设计
→ 测试点收敛
→ 可入库用例筛选
→ 正式用例生成
→ 用例自检
→ 修正版输出
最后结果是:
| 阶段 | 数量 |
|---|---|
| 原始评审问题 | 23 个 |
| 原始测试点 | 52 条 |
| 收敛后测试点 | 33 条 |
| 核心已确认测试点 | 10 条 |
| 核心待确认测试点 | 14 条 |
| 扩展风险 | 9 条 |
| 最终正式用例 | 15 条 |
| 待产品确认问题 | 15 个 |
这组数字很重要。
因为它说明:
AI 不是生成越多越好,而是要经过筛选后留下能真正入库的部分。
原始 52 条测试点看起来很多,但最后真正可入库的是 15 条用例。
其余很多内容不是没价值,而是需要先确认、后补充。
十、修正后的正式用例长什么样?
下面看几条最终保留下来的用例。
用例 1:金额 5000 边界
| 项目 | 内容 |
|---|---|
| 用例标题 | ≤5000 元报销,边界值 5000 元仍触发直属上级审批 |
| 前置条件 | 普通员工账号存在直属上级 |
| 操作步骤 | 填写报销金额 5000 元并提交 |
| 预期结果 | 提交成功,状态为“审批中”;直属上级待办中出现该报销单;仅直属上级一个审批节点 |
| 优先级 | P0 |
这条用例是可以入库的。
因为 PRD 明确写了:
报销金额 ≤5000 元时,仅直属上级审批。
5000 的边界归属清楚。
用例 2:金额 20000 边界
| 项目 | 内容 |
|---|---|
| 用例标题 | 5000<金额≤20000 元报销,边界值 20000 元触发部门负责人审批 |
| 前置条件 | 普通员工所属部门有部门负责人 |
| 操作步骤 | 填写报销金额 20000 元并提交 |
| 预期结果 | 提交成功,状态为“审批中”;部门负责人待办中出现该报销单 |
| 优先级 | P0 |
注意标题最好写成:
5000<金额≤20000 元
不要写成:
5000~20000 元
因为后者容易让人误解 5000 也属于中档。
用例 3:金额 25000 高档审批
| 项目 | 内容 |
|---|---|
| 用例标题 | >20000 元报销,审批链包含财务复审节点 |
| 前置条件 | 系统中存在财务复审角色或人员 |
| 操作步骤 | 填写报销金额 25000 元并提交,查看财务复审人员待办 |
| 预期结果 | 提交成功,状态为“审批中”;财务复审人员待办中存在该报销单;仅验证财务复审节点存在,不假设其前是否有其他审批节点 |
| 优先级 | P0 |
这条用例的关键是克制。
它没有写:
部门负责人 + 财务复审
也没有写:
财务复审通过后流程结束
用例 4:导出基础回归
| 项目 | 内容 |
|---|---|
| 用例标题 | 报销数据导出功能可用性验证 |
| 前置条件 | 存在若干条报销记录;账号有导出权限 |
| 操作步骤 | 设置导出筛选条件,执行导出,下载文件并打开 |
| 预期结果 | 导出操作可正常执行;导出文件可成功下载并正常打开;文件非空、未损坏 |
| 优先级 | P1 |
这条用例没有写字段明细。
因为字段清单没有确认。
用例 5:导出数量一致性
| 项目 | 内容 |
|---|---|
| 用例标题 | 导出记录数量与筛选范围一致性验证 |
| 前置条件 | 当前筛选条件下列表记录总数为 N |
| 操作步骤 | 执行导出,打开导出文件,统计文件内记录条数 M |
| 预期结果 | M 与页面筛选结果总数 N 一致 |
| 优先级 | P1 |
这条可以入库,因为它不依赖字段清单。
十一、AI 自检也发现了问题
正式用例生成后,我又让 AI 做了一次自检。
自检发现了 3 个问题:
| 问题 | 为什么有问题 | 修正 |
|---|---|---|
| H5 用例写“状态展示与 PC 端一致” | PRD 未明确端一致性 | 改为“状态正确展示为审批中、草稿、已驳回” |
| PC 用例写“页面跳转” | PRD 未定义 UI 交互方式 | 改为“提交后状态展示为审批中” |
| 驳回用例写“查看驳回信息” | PRD 未定义驳回字段 | 改为“查看状态是否为已驳回” |
这说明自检很有必要。
如果没有自检,这些“很像正常需求”的内容很可能就进入正式用例了。
十二、这套检查 Prompt 可以直接复用
如果你也在用 AI 生成测试用例,可以直接在生成后追加这段:
请检查刚才生成的测试用例是否存在以下问题:
1. 是否把 PRD 未说明的内容写成了确定性预期;
2. 是否把待确认项写成了正式用例;
3. 是否把“需某节点审批”推断成完整审批链;
4. 是否把“导出受影响”推断成具体字段;
5. 是否把“影响 PC/H5”推断成两端一致;
6. 是否写了“流程结束”“终审”“已完成”等未确认终态;
7. 是否写了页面跳转、弹窗、Toast 等 PRD 未定义交互;
8. 是否存在“正常”“正确”“符合预期”等不可验证预期;
9. 是否遗漏待确认问题清单;
10. 是否存在可以合并的重复用例。
请输出:
一、问题总览;
二、需要删除或转为待确认的用例;
三、需要修改的用例;
四、建议保留的用例;
五、仍需产品确认的问题;
六、最终是否可以入库。
这段 Prompt 不一定让 AI 完全不犯错,但能挡住不少明显问题。
尤其是:
- PRD 外推断;
- 待确认误入库;
- 不可验证预期;
- 多端机械复制;
- 导出字段乱写。
十三、我的结论:AI 生成用例前后都要“过筛”
这次实践后,我不建议直接让 AI 从 PRD 生成正式测试用例。
更稳的流程应该是:
PRD
→ 需求评审问题
→ 测试点
→ 测试点收敛
→ 可入库筛选
→ 正式用例
→ 用例自检
→ 修正版用例
这比一句“帮我生成测试用例”麻烦一点,但质量明显更稳。
原因很简单:
测试设计不是生成内容,而是筛选依据。
AI 生成 50 条测试点并不难。
难的是判断:
- 哪些能入库;
- 哪些要待确认;
- 哪些只是扩展风险;
- 哪些是 AI 偷偷补出来的;
- 哪些预期不可验证;
- 哪些用例应该删掉或合并。
这才是测试工程师真正应该把关的地方。
十四、写在最后
AI 生成测试用例,真正危险的不是它写得少,而是它写得太像真的。
很多错误不是离谱错误,而是“看起来非常合理”的错误。
比如:
- 大额报销应该走多级审批;
- 导出应该有审批字段;
- H5 应该和 PC 一致;
- 审批通过后应该流程结束;
- 批量导入应该有成功和失败用例。
这些都符合常识。
但测试用例不能只符合常识。
它必须符合 PRD,或者符合产品/研发确认结果。
所以我现在使用 AI 生成测试用例时,会先问自己三个问题:
这条预期 PRD 里写了吗?
这条规则有人确认了吗?
这条结果测试人员能验证吗?
如果答案是否定的,它就不应该进入正式用例。
一句话总结:
AI 可以帮我们生成测试内容,但不能替我们确认需求规则。
真正能入库的,不是 AI 写出来的内容,而是经过规则筛选和自检后留下来的内容。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)