用 AI 生成测试用例怎么避免漏测边界?避开这三类坑

编程狮(w3cschool.cn) 2026-11-10 07:06:37 浏览数 (22)
反馈

用 AI 生成测试用例时,最容易出的问题是它把 happy path 写得满满当当,却漏掉边界、异常和等价类。避免漏测边界的核心做法是:先给它明确的覆盖清单,再让它按边界值、异常输入、等价划分三类补齐,最后人工复核关键路径。本文基于 DeepSeek 与 OpenClaw 的实际用法,讲清怎么让 AI 出的用例真正覆盖该覆盖的地方。你会看到三类典型漏测长什么样、对应的 Prompt 怎么写、以及一张可复用的人工复核清单。看完你既能用 AI 把用例量提上去,也知道哪里必须自己把关,而不是盲目信任生成结果。今天这篇文章,编程狮就把这块讲透。

用 AI 生成测试用例怎么不漏边界?

一、为什么 AI 生成的用例爱漏边界

AI 生成测试用例这件事,难点不在"写得快",而在"写得全"。模型天然倾向于生成最顺手的常规输入样例,因为训练数据里正常用法远多于异常用法。理解了这点,才明白为什么要给覆盖清单、要按方法学补齐。先过一遍 软件测试教程 的用例设计章节,能更好理解下面的边界值法。

1.1 触发条件

只要你是让 AI 一次性产出一批测试用例,而不是针对单个函数逐步追问,就存在漏测边界的风险。尤其当被测逻辑里有数值范围、字符串长度、空值、并发这些分支时,AI 常常只覆盖中间值。

⚠️ 注意:不要让 AI 同时充当"出题人"和"判卷人"。它生成的用例如果自己再校验一遍,很容易互相迁就,漏掉的边界永远不会被发现。

1.2 常见误解

很多人以为"让 AI 生成测试用例就能提高覆盖率"。但覆盖率工具只统计被执行到的代码行,AI 写的用例若全是同类输入,分支覆盖依然很低。真正稳妥的做法是用方法学约束输出,而不是指望模型自觉。

二、方案一:用边界值清单约束输出(最推荐)

这是避免漏测边界的第一道做法,适合所有场景,代价只是多写一段 Prompt,并在测试配置里固定这三类约束。这是 Prompt 工程里最基础也最有效的一段约束。

  1. 先把被测函数的输入维度列出来,例如数值区间、字符串长度、是否可为空;
  2. 要求 AI 严格按"边界值、异常值、等价类"三类分别产出,每类至少三条;3. 让它标注每条用例覆盖的是哪一类,便于你核对有没有缺类。

请为下面的函数生成测试用例,必须包含三类:
1) 边界值:最小值、最小值-1、最大值、最大值+1;
2) 异常值:空、超长、类型错误;
3) 等价类:典型有效值、无效值代表。
每条标注所属类别。

上面这段 Prompt 做的是把"写全"这件事变成显式约束。执行后你应该拿到一份按类分好的用例表,并运行这些用例检查是否真能跑通,而不是一大堆看起来很像的正常输入。预期每条用例都标明了覆盖类别,再用覆盖率工具验证三类是否齐全。边界值测试是最容易被 AI 跳过的部分,必须单独点名。

如果 AI 仍然只给正常用例,回到 Prompt 里补一句"先只输出异常类和边界类,不要输出正常类",逼它换思路。

三、方案二:用等价划分加异常注入

光有边界还不够,你还得证明覆盖是系统的。这一道做法的关键是:先按等价类把输入空间切成几块,再对每块注入一个异常,让测试覆盖率在统计上更稳。相关能力可以参考 DeepSeek 中文教程 的提示词写法。

# 等价类示例:年龄输入,合理区间 0-120
cases = [
    ("边界", 0), ("边界", 120), ("异常", -1),
    ("异常", 121), ("等价有效", 30), ("异常", None),
]

上面这段把输入空间显式分块,AI 生成测试用例时按块补齐,就不会只盯着中间值。如果某块没有对应用例,测试覆盖率立刻能看出来缺了哪类。

💡 小提示:要求 AI 在产出末尾给出"未覆盖的输入维度"列表。肯承认没覆盖哪里的模型,反而更可信。

四、方案三与横向对比

把三类补齐做法摆在一起看,选择很清楚:

做法 适用场景 优点 代价
边界值清单 数值/长度类输入 直接命中易漏点 要手动列维度
等价划分 复杂输入空间 覆盖系统 前期建模慢
人工复核 关键路径 兜底保质量 费人力

AI 生成测试用例三类漏测决策树

五、踩坑清单

把读者最容易卡住的三个点列出来:

  1. AI 只给正常用例:现象是覆盖率虚高但分支没覆盖。原因是 Prompt 没约束类别。解决办法是强制三类分别产出。
  2. 用例互相迁就:现象是 AI 自己生成的断言永远通过。解决办法是分开出题与执行,或人工写断言。
  3. 忽略并发与边界组合:现象是单测过了集成出错。解决办法是把"边界组合"单独列一类,参考 OpenClaw 中文教程 的上下文管理写法,避免上下文被截断导致漏测。

AI 测试用例缺边界类导致漏测的终端对照

总结

AI 生成测试用例不可怕,可怕的是只信不核。给覆盖清单、按边界值异常等价类补齐、再人工复核关键路径,三件事叠起来,你就能把用例量提上去又不漏关键分支。要点带走:边界值清单是第一道墙;等价划分是第二道墙;人工复核是最后的兜底。让 AI 出的用例真正服务于回归测试,而不是只让覆盖率数字好看。下一步,去把你项目里覆盖率最低的那个模块,按今天的三类法让 AI 补一轮。

延伸学习

想把测试这块系统补齐,可以按这个顺序来:

  1. 先过一遍 TRAE AI 开发 Django 课程,把 AI 开发流程练熟;
  2. 用 Pytest 落地用例,参考 Pytest 测试用例执行 的实操;
  3. 画测试关系图时,Mermaid 流程图 能直接帮你出图。

常见问题

Q:AI 生成的用例能直接进 CI 吗?

A:可以,但断言最好由人写或由另一轮单独生成。让同一个 AI 既出题又写断言,容易出现互相迁就导致漏测。分开之后,CI 跑的是你认可的预期,才真正起到回归保护作用。

Q:小项目没人手做人工复核怎么办?

A:至少对核心函数和对外接口做人工复核。AI 生成测试用例的价值在量,而量里最容易丢的正是边界,这部分恰恰是线上事故的高发区,值得花十分钟自己看一眼。

Q:覆盖率上去了为什么还出 bug?

A:覆盖率只统计执行到的代码,不代表分支都被正确断言。如果 AI 写的用例都是同类输入,分支虽被执行却没有被校验,漏测依旧存在。按今天的三类法补齐,比单纯追覆盖率数字更有用。

0 人点赞