霍格沃兹测试开发学社

《Python测试开发进阶训练营》(随到随学!)
2023年第2期《Python全栈开发与自动化测试班》(开班在即)
报名联系weixin/qq:2314507862

我把Claude Code接进测试仓库的第一天,它自动补齐了80%的单测缺口,覆盖率从41%跳到78%

关注 霍格沃兹软件测试开发 公众号,回复「资料」, 领取人工智能测试开发技术合集

你不需要手写几千行测试代码,你只需要会“指挥它干活”

大家好,我是某互联网公司的测试架构师。

上个月我们接手了一个历史遗留项目,后端代码将近35万行,测试覆盖率只有41%。业务方催着上线新功能,开发说“改完心里没底”,测试说“回归范围太大测不过来”——谁都难受。

我们试过让开发自己补单测,两天补了不到3%。测试团队手工写,一天能写10条就算快的。按这个速度,覆盖率提到80%需要写将近4000条测试——不现实。

后来我们做了一个决定:把Claude Code接进测试仓库,让它批量补齐单测。

第一天结束的时候,覆盖率从41%跳到了78%,自动生成了1200多条测试,全部通过。

不是标题党。下面我把整个过程拆开来讲。

一、为什么传统方式补单测永远补不完?
很多测试团队的真实状态是:知道应该写测试但没时间,写测试太慢,维护成本比写功能还高。

拿我们接手的这个项目来说,35万行代码,只有41%的覆盖率。意味着将近20万行代码没有测试保护。开发改一行代码,不知道会影响到哪里。测试做回归,靠人工点页面——效率低、覆盖不全、心里没底。

让开发自己补单测?他们嘴上说“有空就补”,实际上永远没有空。

让测试写单测?测试同学熟悉业务逻辑,但写代码的速度摆在那里,一天10-15条是上限。

传统的“人肉补单测”模式,在大型历史遗留项目面前基本失效。

二、核心思路:把Claude Code当成“批量补单测的外包团队”
当时我们想了个办法——让AI批量干这个活。

Claude Code是Anthropic推出的命令行AI编程助手,核心能力是在本地代码仓库中直接对话式开发、理解项目结构、自动生成和修改代码。它可以以整个代码目录为上下文,批量扫描未覆盖的方法并生成测试。最大的优势是上下文窗口大,能理解跨文件的依赖关系,生成的测试Mock策略相对合理。

我决定把它接进测试仓库试试。

你要做的事情很简单:告诉它“要测什么、用什么框架、达到什么目标”。它负责分析代码、生成测试、运行验证。

整个过程你不需要手写一行测试代码。你只需要当一个“指挥官”——提需求、审结果、做决策。

三、实操过程:从41%到78%,我们做了四轮
第一轮:先跑通流程(失败了一次)
第一轮我们犯了个错误——想一口气搞定整个项目。

我们给Claude Code的Prompt是:“为解决方案中所有项目写单元测试,目标达到90%行覆盖率。”

Claude开始逐项目生成测试,跑了几个小时,生成了几千条测试。但最终覆盖率只涨了不到2%。

分析后发现两个问题:第一,Claude没有识别哪些代码路径已被现有测试覆盖,它大量重复测试了已经覆盖的场景。第二,上下文太大了——让AI一次性处理35万行代码,它既抓不住全局,也写不准单类测试。

教训:不能让AI一口气测整个仓库,要分模块、分批次。

第二轮:用覆盖率报告精准定位缺口
第二轮我们换了个策略——先让Claude读覆盖率报告,找出缺口,再精准生成。

这个思路来自Claude Guide上的一篇实操指南:把覆盖率报告直接粘贴给Claude,让它为每一个未覆盖的行和分支生成测试。Claude能解析Jest、Vitest、pytest-cov的输出,精确定位哪些代码路径没有被测试覆盖。

具体做法:

先在项目里跑一次覆盖率报告
把报告(未覆盖的行号和分支)粘贴给Claude
告诉它:“列出每个覆盖率低于80%的文件,显示未覆盖的分支范围,为每个文件生成测试文件”
这一次效果完全不一样。Claude不再是“盲目地写测试”,而是精准地瞄准缺口。它读懂了覆盖率报告,交叉引用了源文件,按项目现有的测试风格生成了测试。

一轮下来,覆盖率从41%涨到了52%。

第三轮:按模块拆分,逐个击破
有了第二轮的经验,我们把项目按模块拆开,逐个处理。

选了一个完全没有测试的模块作为起点。给它明确的指令:“为src/payment目录下所有未覆盖的public方法生成JUnit 5单元测试,使用Mockito,遵循AAA结构,覆盖正常路径、边界条件和异常路径”。

Claude开始干活了——分析函数签名、识别依赖、生成测试、运行验证。每个模块20-30分钟,产出50-100条测试。

关键是要给Claude一个“锚点” ——让它参考已有的测试风格和框架,而不是从零发明一套。我们在项目根目录的CLAUDE.md里写清楚了测试框架(JUnit 5 + Mockito)、断言风格、目录结构。Claude每次生成测试前都会先读这个文件,风格保持一致。

三轮下来,覆盖率涨到了67%。

第四轮:针对性补分支覆盖
覆盖率到了67%之后,再往上爬就变慢了。剩下的33%大多是分支覆盖的缺口——if语句的某个分支、catch块、早期返回分支没有被测到。

这时候我们换了个更精细的指令:把具体的未覆盖分支告诉Claude,让它生成专门触发这些分支的测试。

比如:

“这个函数有3个未覆盖分支:第24行的if (user.role == 'admin') false分支、第31行的catch块、第45行的early return。为这三个分支生成Jest测试。”

Claude为每个未覆盖分支生成一个describe块,包含验证该分支返回值和副作用的断言。

第四轮结束,覆盖率到了78%。

人工智能技术学习交流群
伙伴们,对AI测试、大模型评测、质量保障感兴趣吗?我们建了一个 「人工智能测试开发交流群」,专门用来探讨相关技术、分享资料、互通有无。无论你是正在实践还是好奇探索,都欢迎扫码加入,一起抱团成长!期待与你交流!👇

image

四、四个可以直接复制用的Prompt模板
下面是我们实际用过的四个Prompt模板,你可以直接复制使用:

模板一:基于覆盖率报告精准生成
这是当前项目的覆盖率报告:
[paste coverage report]

请帮我完成以下任务:

  1. 列出所有覆盖率低于80%的文件
  2. 显示每个文件中未覆盖的分支范围
  3. 为每个文件生成对应的测试文件,覆盖所有未覆盖的行和分支
  4. 使用项目现有的测试风格和框架

输出格式:每个文件一个测试类,每个未覆盖分支一个测试方法。
模板二:指定模块批量生成
为 [模块路径] 目录下所有 public 方法生成单元测试。

要求:

  • 使用 [测试框架,如JUnit 5/Mockito/pytest]
  • 遵循AAA(Arrange-Act-Assert)结构
  • 覆盖正常路径、边界条件、异常路径
  • 参考现有测试的写法保持风格一致

生成到对应的测试目录下。
模板三:针对特定分支补测
这个函数的以下分支未被覆盖:

  • 第 [行号] 行:if (condition) 的 false 分支
  • 第 [行号] 行:catch 块
  • 第 [行号] 行:早期返回分支

请为每个未覆盖分支生成对应的测试,确保触发该分支并验证返回值。
源文件:[粘贴函数代码]
模板四:运行验证闭环
运行测试,定位失败原因并修复。

如果测试失败:

  1. 分析失败原因——是代码Bug还是测试写错了
  2. 如果是Bug,修复代码
  3. 如果是测试写错了,修复测试
  4. 重新运行直到全部通过
    五、避坑指南
    坑一:上下文太大,AI写不准
    我们第一轮就踩了这个坑。让Claude一次性处理整个项目——35万行代码——结果它既没抓住全局,也没写准单类测试。

解法:按模块拆分,每次只处理一个子目录或一个功能模块。

坑二:AI不知道哪些已经覆盖了
Claude没有自动识别“哪些代码路径已被现有测试覆盖”的能力。如果不给它覆盖率报告,它会大量重复测试已经覆盖的场景。

解法:每次生成前先跑覆盖率报告,把报告喂给Claude,让它精准瞄准缺口。

坑三:AI生成的测试风格不统一
如果你不给它“参考样本”,Claude每次生成的测试风格可能都不一样——有的用AAA,有的用Given-When-Then,有的断言写得很随意。

解法:在项目根目录放一个CLAUDE.md,写清楚测试框架、断言风格、目录结构。Claude每次生成前会先读这个文件。

坑四:AI生成的测试没人审就直接用
覆盖率数字漂亮,但测试可能没有真正触到业务逻辑。AI可能会Mock一堆东西、断言写得很满,但实际上测的是一个被完全隔离的代理方法。

解法:所有AI生成的测试必须经过人工审核。 不是逐行看,而是看“它在测什么、有没有真正覆盖业务逻辑”。我们团队的做法是:AI生成初稿→测试同学快速审阅(每条10-20秒)→确认无误后合入。

坑五:只追覆盖率数字,不追测试质量
覆盖率从41%涨到78%确实漂亮。但如果只看数字不看质量,AI可能会生成一堆“为了通过而通过”的测试——Mock了所有依赖、断言写得很满、但实际没有验证任何有意义的业务逻辑。

解法:定期抽查AI生成的测试,看它是否真正覆盖了业务规则和边界条件,而不仅仅是语法路径。

六、效果总结
指标
接入前
第一天结束
行覆盖率
41%
78%
测试总数
6,646条
7,800+条
新增测试

1,200+条
人工投入
2人天/周补单测
0.5人天审核
最关键的变化:测试团队从“手写单测”变成了“审核AI生成的单测” 。效率的提升不是一点点——原来补1200条测试至少需要2-3个月,现在一天就搞定了。

七、给测试同行的几点建议
第一,先让AI读覆盖率报告,再让它写测试。 盲写效率低、重复多。有报告指引,生成精准得多。

第二,分模块、分批处理,别一上来就让AI处理整个项目。 从一个小模块开始,跑通流程再扩展。

第三,在项目根目录放一个CLAUDE.md,写清楚测试规范和风格。 一次配置、长期复用。

第四,所有AI生成的测试必须经过人工审核。 覆盖率数字漂亮不等于测试质量高。

第五,把Claude Code集成进CI流程。 每次PR提交时自动检查覆盖率,低于阈值就自动触发Claude Code补齐测试,PR通过前必须达标。

最后
测试小白做单测补全,过去的路径是这样的:

学JUnit/pytest → 理解Mock框架 → 分析代码依赖 → 手写测试用例 → 调试运行——一个方法至少半小时。

现在的路径是这样的:

跑覆盖率报告 → 粘贴给Claude → 说一句“为所有未覆盖的分支生成测试”——几百个方法,一天搞定。

这中间差的不只是时间,差的是“敢不敢开始”的门槛。

Claude Code从来不是让测试工程师失业的工具——它是让测试团队从“手写几千条测试”这种不可能完成的任务中解放出来的加速器。

下次你拿到一个覆盖率不到50%的历史项目,别让团队通宵写单测了。把Claude Code接进仓库,把覆盖率报告喂给它,说一句:

“帮我把所有未覆盖的分支补齐。”

一天后,你会看到结果。

推荐学习
Workbuddy智能体与智能化测试落地实战公开课,解密桌面 AI Agent 在测试中的提效路径:办公自动化、提示词工程、Agent Harness 循环机制、Dify/n8n 全自动工作流,更有 Claude Code、Openclaw 等多智能体协作,帮你打造测试效能平台。不只是技术提升,还能构建个人壁垒,甚至副业创收!

👉 扫码进群,报名学习!

image

关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。

学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。

我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。

在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。

同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。

posted @ 2026-08-15 18:35  霍格沃兹测试开发学社  阅读(6)  评论(0)    收藏  举报