用 Prompt 生成测试用例,为什么在真实项目里常常“越用越累”?
摘要: Treeify团队聚焦测试设计的工程化,指出当前AI生成测试用例的六大问题:幻觉(虚构逻辑)、漏测(忽略高风险场景)、不可评审(黑盒输出)、不可精准修改(牵一发动全身)、多轮无效(反复补漏)、缺乏私有知识(无法复用历史经验)。团队主张结构化方法——先拆解需求为测试对象和场景,再生成高覆盖用例,确保结果可评审、可维护。建议用户通过强制结构化输出、覆盖清单驱动生成等方式止损,并提供了评审检查清
你是不是也遇到:需求一长就漏测、AI 一生成就幻觉、用例一多就根本评不动?
Treeify 专注把测试设计变成可建模、可评审、可持续迭代的过程——用结构化方法把问题空间拆开,再生成更少但更有覆盖的用例。
想一起把测试设计做得更工程化,欢迎来共创/内测。
添加 V:【TreeifyAI】进内测共创群,获得 Treeify 内测资格 / 免费 credits / MCP Server 试用
- 微信公众号:Treeify - AI测试用例生成
- 联系微信:TreeifyAI
Treeify 是一支专注“测试设计过程工程化”的团队。我们不做“让 AI 一口气吐出 100 条黑盒用例”的捷径,而是把测试设计拆成需求 → 测试对象 → 测试场景的结构化过程,让结果可评审、可追溯、可精准修改、可持续维护。
如果你也正在经历“生成很快、评审很慢、改动很痛、最后还得人工返工”,这篇文章会把问题讲透:Prompt 生成测试用例到底哪里不靠谱、为什么难修、怎么止损,以及怎样走向可控的测试设计。
一、先说结论:生成不难,难的是“可控 + 可维护”
很多团队第一次用 Prompt 生成测试用例都很兴奋:给它一段 PRD、几分钟就出几十上百条用例。问题是,真实项目里测试用例不是“交付一次就结束”,而是一个会反复被使用、被评审、被修改、被回归的长期资产。
在团队协作里,一套测试用例是否“能用”,关键不是它能不能生成出来,而是它是否满足三条硬指标:
1)可 Review:评审时能快速判断覆盖是否充分、规则是否正确、风险是否被关注。
2)可精准修改:只改错的那一条,不影响其他正确内容,不引入新混乱。
3)可持续维护:需求变化后,更新成本可控,不会变成“文档债”。
对话式 Prompt 生成的问题在于:它本质是黑盒输出。你得到了一堆结果,但你看不到依据、没有结构,更难以局部编辑与长期维护。于是出现一种非常常见的现象——“生成很快,落地很慢;越改越乱,最后返工”。
下面我们用“六宗罪”把这些问题拆开讲,并且每条都用真实项目里高频出现的示例说明:它具体怎么坑你、怎么浪费时间、怎么造成漏测与事故。
二、罪 1:幻觉——它敢编,你敢信吗?
所谓幻觉,不是“瞎说八道”那么简单,而是它在需求缺失和描述模糊时,会非常自然地补齐它认为合理的逻辑。写文案、写总结时这是优点;写测试用例时,这是隐形炸弹。
示例 1:PRD 没写权限,AI 自动脑补“管理员逻辑”
假设你的 PRD 只写了:
“用户可以在订单详情页申请退款。退款申请成功后,订单状态进入退款中。退款结果会通过站内信通知用户。”
PRD 没提任何“角色与权限”。你让 AI 生成测试用例,它很可能给出一条看起来“很专业”的用例:
用例:管理员可在后台直接审批退款并强制通过
步骤:后台进入退款列表 → 选择订单 → 点击强制通过
预期:退款立即成功,用户收到通知
问题在哪里?
这条用例并不是“测试覆盖更全”,而是把“未定义需求”当成“已定义需求”。如果你把它加入用例库,评审时就会出现争论:产品有没有后台?有没有管理员审批?是不是仅用户端申请、系统自动处理?最后你浪费时间在对齐“AI 编出来的需求”。
更糟的是,如果团队默认“AI 生成的都挺靠谱”,你甚至可能拿它去验证不存在的功能。测试资源就这样被消耗掉,而真正应该补齐的是:权限模型、审批流是否存在、自动退款还是人工审核、触发条件是什么。
示例 2:PRD 没写“异常与边界”,AI 给出“默认正确”的预期
假设 PRD 写:
“优惠券面额 0-100,订单金额满 100 可用。”
你问 AI:生成测试用例。它通常会给出大量“正常使用”的用例,但当你追问边界,它可能说:
用例:输入优惠金额为 100,成功创建优惠券
用例:输入优惠金额为 0,成功创建优惠券
看似没问题,但很多系统对 0 的处理是“无意义券”或“禁止创建”。PRD 没写清楚时,AI 会选择一种默认解释。测试用例看起来完整,实际是把歧义掩盖掉了。有歧义时,正确做法是暴露歧义:需要补充规则,而不是替产品做决定。
幻觉的真实后果:
1)评审会上大量时间用来“查证 AI 编没编”;
2)用例库掺入假逻辑,长期污染质量体系;
3)你无法追溯这条用例到底基于哪条需求或规则。
三、罪 2:漏测——漏掉的 bug,谁来负责?
Prompt 生成最危险的不是写错,而是漏掉“事故高发点”。因为模型更擅长生成主流程,对并发、状态、异常、权限、数据一致性这些“高赔付维度”很容易漏。
示例 1:订单“待支付”场景,漏掉重复提交与并发扣库存
PRD 常见一句话:
“用户提交订单后进入待支付状态,支付成功后进入已支付。”
AI 生成的用例一般是:
提交订单 → 待支付
支付成功 → 已支付
支付失败 → 提示失败
但线上事故最常见的不是这些,而是:
场景 A:用户连续点两次“提交订单”(或网络抖动导致请求重发)
你要验证:
是否生成两笔订单?还是同一订单 idempotent?
库存是否扣了两次?优惠券是否占用两次?
重复请求返回什么?是否可恢复/可追踪?
场景 B:两个人同时买最后一件库存
你要验证:
第二个人是下单失败还是支付失败?
失败提示是否准确?
库存扣减发生在下单还是支付?是否有超卖?
Prompt 生成如果没有“覆盖模型”驱动,它往往不会主动把这些高风险拆出来。最终你得到 100 条“看起来很多”的用例,却漏掉几条“最可能出事故”的场景。
示例 2:退款状态机,漏掉非法跳转与中间态
PRD:
“申请退款后状态为退款中,退款成功状态为已退款。”
AI 生成:
申请退款 → 退款中
退款成功 → 已退款
现实系统可能有更多状态:退款中、退款失败、退款关闭、退款中途取消、客服介入、部分退款。真正容易出 bug 的是非法跳转:
-
已退款后再次申请退款(是否拒绝/幂等)
-
退款中再次申请退款(是否合并/更新原因/拒绝)
-
退款失败后是否允许重试
-
退款中订单是否允许发货/确认收货
Prompt 不会“自带状态模型”,没有结构约束就很难覆盖完整的状态机。
漏测的真实后果:
你以为 AI 帮你“补全覆盖”,实际它在用大量低价值主流程用例掩盖盲区。漏掉的 bug 上线后,责任还是落在测试团队,因为“用例库看起来很满”。
四、罪 3:不可 Review——黑盒输出,你敢用吗?
很多团队说:“没关系,AI 生成后我们 Review 一遍。”问题是:非结构化黑盒输出,让评审成本极高、且评审质量不稳定。
示例 1:100 条用例混在一起,你根本审不动
假设 AI 输出这样一段:
用例 1:测试登录功能
- 步骤:打开登录页…
- 预期:登录成功…
用例 2:测试注册功能
- 步骤:填写表单…
- 预期:注册成功…
……(还有 95 条)
问题不是“它写得不像用例”,而是你无法快速回答评审真正关心的问题:
-
这些用例覆盖了哪些测试对象?哪些对象根本没提?
-
有哪些规则被覆盖?哪些边界漏了?
-
并发/异常/权限/一致性这些维度覆盖了吗?
-
是否重复?是否重叠?维护成本会不会爆炸?
非结构化文本迫使你用“人肉读全文”的方式评审。读到第 40 条,注意力就开始下降;读到第 80 条,基本只剩扫字。评审质量严重依赖个人状态,团队无法规模化。
示例 2:缺少“需求映射”,你无法证明覆盖
如果用例没有关联需求点(或验收标准 AC),你无法证明“这个需求被测了”。更糟糕的是:出现线上缺陷时,你也无法快速回溯:这条缺陷对应的需求点有没有用例?没测还是测漏了?
这就是为什么很多团队 AI 用例“堆了很多”,但依然缺乏覆盖的可证明性。
五、罪 4:不可精准修改——改不准,急不急?
对话式修改的最大坑:你只想改一条,AI 会“顺便”改很多条。因为它不是在编辑文档,而是在重新生成一段更像的文本。
示例:你只想改“用例 3 的预期结果”,结果它把一串都改乱了
你对 AI 说:
“把用例 3 的预期结果从‘登录成功’改成‘提示密码错误’。”
AI 可能输出:
用例 3 改了(看起来正确)
但同时:用例 5 的步骤也被重写了
用例 8 消失了
甚至用例顺序全乱了
这在工程上等价于:你每次做局部改动,都要重新对全文件做回归审查。于是“修改成本”比“写一遍”更高。到最后你会发现:AI 不是减轻维护工作,而是在制造维护工作。
六、罪 5:多轮无效——对话再多,也是白搭?
多数团队的真实使用轨迹是这样的:
第一轮:AI 生成 100 条(看起来很开心)
第二轮:你发现漏了状态机/并发/边界,让它补
第三轮:补了但重复了,顺序也乱了,再让它去重
第四轮:去重后缺了关键一条,再让它补
第五轮:补完格式不符合规范,再让它按模板改写
第 N 轮:还在改……
示例:优惠券规则的“补洞循环”
当业务规则比较复杂(例如:新客券不可与店铺券叠加、指定类目可用、部分商品不可用、退款后券是否返还、多张券优先级…),Prompt 生成几乎一定会进入“补洞循环”。每补一次,就引入新的重复、新的假设、新的遗漏。你会觉得自己像在把一个不停流动的沙堆捏成砖。
多轮无效的本质原因:缺少中间产物。
你没有测试对象清单,没有规则表/决策表,没有状态模型,没有覆盖维度清单。你只是跟一个模型聊天,想让它在纯文本里完成工程化收敛,这几乎不可能稳定。
七、罪 6:无私有知识——你的场景,它懂吗?
企业落地最大的坎:通用 AI 不懂你的组织规范与历史经验。
示例 1:团队强制模板与字段要求,AI 永远不合规
很多团队要求用例必须包含:
-
用例 ID(项目前缀)
-
优先级(P0-P3 或 5 级)
-
类型(功能/接口/兼容/安全…)
-
前置条件、数据准备
-
关联需求(用户故事/AC)
-
风险标签
你让 AI 按模板输出,第一轮能勉强像样。第二轮你补充需求,模板又漂移;第三轮你让它改一个字段,它把其他字段也改了。最终你还是要人工整理成你们的规范格式。
示例 2:历史缺陷经验无法复用,导致“重复踩坑”
比如你们历史上最常出事故的是:
-
订单状态与库存一致性
-
支付回调幂等
-
取消订单的补偿逻辑
-
订阅续费的时区问题
-
缓存与数据库不一致导致的展示错误
这些经验如果不注入,Prompt 生成永远只能泛泛而谈,无法把你们真正的风险点系统性拉进测试设计。这也是为什么很多团队用 AI 生成,仍然挡不住线上事故:它不懂你的“坑”。
八、总结:Prompt 生成的“快”,建立在三个不可接受的假设上
把六宗罪合起来,你会发现对话式 Prompt 生成的效率,往往建立在三种假设上:
1)默认它不会幻觉(但它会)
2)默认它不会漏测(但它会)
3)默认它可维护(但它很难)
因此它在 Demo 里很香,在交付里很苦。
九、如果你现在仍然要用 Prompt:三步止损(建议团队立刻执行)
我们不是反对用 AI,而是反对“黑盒一次性生成”。如果你现在的团队已经把 Prompt 用在用例生成上,建议至少做三步止损,把风险降到可控。
止损 1:强制结构化输出,让评审可执行
不要让它输出大段文本。要求每条用例最少包含:
-
用例标题(对象 + 行为 + 期望)
-
关联需求点/验收标准(Trace)
-
场景类型(主/替代/异常)
-
覆盖维度标签(状态/权限/异常/边界/并发/一致性)
-
前置条件、步骤、预期、断言点(UI/API/DB/Log/MQ)
示例(对登录功能):
-
标题:登录-密码错误-提示错误且不生成会话
-
Trace:AC-LOGIN-03
-
类型:异常
-
维度:输入校验
-
断言点:接口返回码 + 页面提示文案 + session 未创建
止损 2:强制“缺失即提示”,禁止脑补
在 Prompt 规则里写死:
-
未明确说明的权限/规则/校验禁止补齐
-
必须列出“需要补充”的信息列表
-
必须输出“假设清单”,评审逐条确认
示例(对退款规则):
需要补充:是否存在人工审核/客服介入?退款失败是否可重试?退款中是否允许发货?
假设清单:默认退款为自动处理;退款中禁止发货(需产品确认)
止损 3:用覆盖清单驱动生成,避免一口气 100 条
不要一次生成 100 条把自己淹死。先生成“覆盖骨架”,再生成用例细节。
建议顺序:
第一步:生成测试对象清单(模块/规则/状态/接口)
第二步:为每个对象生成场景集合(主/支/异常)
第三步:对高风险对象补覆盖维度(状态/并发/异常/权限/一致性/边界)
第四步:最后再输出用例
这至少能显著降低漏测与评审崩溃的概率。
十、附:一份可直接贴进评审流程的检查清单(对 Prompt 生成的用例)
A. 幻觉检查
-
是否出现 PRD 未定义但被补齐的规则/权限/流程?
-
是否有假设清单?假设是否被确认?
-
缺失信息是否以“需要补充”明确列出?
B. 漏测检查(高风险维度)
-
状态机:合法/非法跳转是否覆盖?
-
并发:重复提交/竞态/幂等是否覆盖?
-
异常:超时/重试/降级/补偿是否覆盖?
-
权限:角色×资源×操作边界是否覆盖?
-
一致性:缓存/消息/最终一致是否覆盖?
-
边界:空值/超长/精度/时间窗是否覆盖?
C. 可 Review 检查
-
是否按对象/场景分组?
-
每条是否关联需求点/AC?
-
是否有维度标签与断言点?
-
是否明显重复/重叠?
D. 可维护检查
-
需求变更时能否定位影响范围?
-
是否能局部修改而不影响其他用例?
-
是否每次都要重新生成并全量重审?
十一、写在最后:你要的不是更多用例,而是更少返工
Prompt 生成测试用例不是完全不能用,它的问题在于:很多团队把它当终点——“生成出来就算完成”。真实项目里,测试设计的核心是可控与可维护:覆盖可证明、评审可执行、变更可收敛。
如果你愿意把 AI 真正用在“工程化测试设计”里,一个更可行的方向是:先把测试设计结构化(需求→对象→场景),让每一步都有中间产物可审可改,再让 AI 在结构约束下生成用例细节。否则你会不断遇到:生成很快,落地很慢;越改越乱,最终返工。
更多推荐

所有评论(0)