用 AI 为遗留代码自动生成单元测试:从零到上线实战
为什么遗留代码最适合先做单元测试
遗留代码最大的痛点通常不是“没有功能”,而是“没人敢改”。逻辑分散、依赖复杂、缺少文档,导致每次重构都像拆炸弹。AI 很适合在这个阶段帮你快速补测试,因为它擅长从现有代码中识别输入、输出、边界条件和潜在副作用,先把最危险的地方保护起来,再逐步推进重构。
但要记住,AI 不是替你“理解业务”的魔法按钮。正确做法是:用 AI 提升产出速度,同时保留工程师对测试意图、断言质量和边界覆盖的最终判断。
第一步:先选一个最值得下手的文件
不要一上来就让 AI 给整个仓库补测试。先找一个“高风险、低耦合、可验证”的目标文件,例如订单计算、日期处理、权限判断、字符串解析这类纯逻辑模块。判断标准很简单:
- 函数输入输出明确
- 依赖外部系统少
- 手工跑起来能看出预期结果
- 历史上经常被改动或出过 bug
你可以先把目标文件连同相关依赖片段贴给 AI,要求它先总结业务规则,再生成测试,而不是直接写代码。这样更容易暴露 AI 对上下文的误解。
第二步:让 AI 先读代码,再写测试计划
高质量提示词的关键不是“生成测试”,而是“先分析,再计划,再实现”。你可以这样要求 AI:
- 总结该模块的核心职责
- 列出可测试的函数和分支
- 区分正常路径、异常路径和边界值
- 指出需要 mock 的依赖
这一步的价值在于把模糊需求变成测试清单。对于遗留代码,很多问题不是测试写不出来,而是你根本不知道应该测什么。AI 很擅长把散乱代码整理成结构化的测试目标。
第三步:用 59API 接入你熟悉的开发工具链
如果你已经在用 Claude Code、Codex 或任何 OpenAI SDK,接入 AI 来生成测试并不复杂。59API 提供与这些工具兼容的 API 入口,基础地址是 https://api.59api.com。这意味着你不需要为了补测试额外改造工作流,可以直接在现有编辑器、脚本或 CI 辅助工具里调用模型。
对团队来说,59API 的优势很实际:按量付费、成本低、可直接使用 Claude 和 GPT 系列官方质量模型,不需要接受“降配版”输出。对于遗留项目这种需要反复试错、迭代提示词、重新生成测试的场景,低成本非常重要,因为你会频繁调用模型来修正断言和补边界用例。再加上推荐返利机制,长期跑测试生成和维护时,成本会更友好。
第四步:让 AI 生成第一版测试代码
当你拿到测试计划后,再让 AI 生成具体测试。建议明确测试框架、语言和风格,例如 Jest、PyTest、JUnit、Vitest 或 Go test。提示词里最好包含这些约束:
- 只使用当前项目已有的测试框架
- 保持命名风格与仓库一致
- 优先写可读性高的测试,不要追求花哨技巧
- 所有外部依赖都要 mock
第一版代码通常不会直接可用,常见问题包括:路径导入错误、mock 方式不匹配、断言过宽或过窄、测试数据不符合真实业务。不要急着人工重写,先让 AI 根据报错迭代修正,效率通常更高。
第五步:用失败测试反推边界条件
遗留代码最有价值的地方是隐藏边界。你可以故意让 AI 补一些“应该失败”的测试,例如空值、超长字符串、时区切换、重复提交、非法状态迁移。这样做有两个好处:
- 帮助你发现当前逻辑没覆盖的异常分支
- 为后续重构建立安全网
如果测试结果与预期不一致,不一定是测试错了,也可能是代码里的真实业务规则和你想象的不一样。此时要回到代码和产品规则,确认“应该如何表现”,再让 AI 调整断言。
第六步:把生成测试纳入 CI
当测试逐步稳定后,把它们接入 CI,作为每次提交的门禁。对于老项目,建议先从只读的验证开始,再慢慢提高门槛,例如:
- 先保证新生成测试可稳定通过
- 再要求关键模块覆盖率不下降
- 最后把核心路径纳入阻断式检查
如果你正在批量为多个模块补测试,59API 的低成本和兼容性会很有帮助:你可以在 CI 辅助脚本、内部工具或开发者工作台中按需调用,持续优化测试,而不是因为成本过高而停止迭代。
一个可执行的落地流程
最推荐的路径是:先选一个纯逻辑文件,先让 AI 总结业务规则,再生成测试计划,然后生成测试代码,修正报错,补边界案例,最后接入 CI。整个过程不需要一次做完,但每一步都应该留下可验证的成果。
如果你正在维护老系统,想用更低成本的方式把 AI 接入测试工作流,可以试试 59API。注册后用你现有的 Claude Code、Codex 或 OpenAI SDK 直接开始,先从一个文件的测试生成做起,很快就能看到收益。
真正有效的 AI 测试生成,不是替代工程师,而是让工程师更快建立可维护性。
शुरू करने के लिए तैयार?
कुछ ही मिनटों में Claude और GPT जोड़ें, सबसे कम कीमत पर। साइन अप करें और API key पाएं।
मुफ़्त साइन अप