用 AI 为遗留代码生成单元测试:15 个任务控制在 2 美元内
先算清楚:遗留代码测试的成本主要浪费在哪里
为遗留代码补单元测试时,最贵的通常不是模型本身,而是把整个仓库、所有日志和无关依赖反复塞进上下文。假设一个服务有 50 个源文件、现有覆盖率仅 18%,如果每次让 AI 阅读 10 万 Token 的仓库上下文,再生成 4,000 Token 测试,做 15 次任务就会消耗约 150 万输入 Token 和 6 万输出 Token。按输入每百万 Token 3 美元、输出每百万 Token 15 美元的示例价格计算,费用约为 5.4 美元;而大部分输入其实与当前测试无关。
更经济的做法是把同样的工作拆成 15 个独立任务:每次只提供 1 个目标类、直接依赖接口、相关测试样例和失败日志,将输入控制在 18,000 Token、输出控制在 3,000 Token。总消耗降至约 27 万输入 Token与 4.5 万输出 Token,示例成本约 1.49 美元。即使再预留 6 次修复调用,每次 6,000 输入 Token和 1,000 输出 Token,总预算也只约 1.60 美元。
第一步:用便宜模型做代码侦察,不要直接生成测试
先让低成本模型完成结构化分析,再让能力更强的模型写测试。对于每个目标文件,第一轮只要求输出:公开方法列表、外部副作用、可替换依赖、异常分支、建议 Mock 点以及最值得覆盖的 3 个场景。把输出限制为 800 Token,避免模型长篇复述代码。
例如,支付模块中的 calculateRefund 方法,侦察结果应明确指出金额为零、原订单不存在、部分退款超过剩余额度、币种不一致等边界,而不是笼统建议“测试正常和异常情况”。这一轮可以优先使用 Claude Haiku、Fable 等低成本模型;只有在复杂业务规则、泛型推断或并发逻辑上,再升级到 Sonnet、Opus 或 GPT 高阶模型。
第二步:按可验证切片生成测试
每次请求只生成一个测试文件或一个测试类,目标是新增 3 至 6 个可执行断言。上下文应包含目标源码、接口定义、构建命令、现有测试风格和第一步的分析结果;不要附带整个仓库。建议在提示词中明确写出:不得修改生产代码;优先使用现有 Mock 框架;覆盖正常路径、一个边界路径和一个异常路径;输出前检查导入、测试命名和断言是否可编译。
还应要求 AI 区分“可测试行为”和“当前实现细节”。例如,不要断言私有字段名称或日志文本,而应断言返回值、异常类型、依赖调用次数及持久化结果。这样即使后续重构,测试也不容易变成维护负担。
第三步:设置自动停止线,防止修复循环烧钱
把 AI 生成测试接入 CI 后,建议设置三条硬规则:单个任务最多 2 次修复;每次修复仅传递编译错误或失败测试的前 80 行;连续两次失败就转人工处理。假设一次完整修复平均消耗 8,000 输入 Token和 1,200 输出 Token,在上述示例价格下约为 0.04 美元。限制为两次,15 个任务的额外修复预算可控制在约 1.20 美元以内。
同时记录四个指标:新增通过测试数、实际新增覆盖行数、每个通过测试的 Token 成本、人工审查分钟数。若某类任务的“每新增 1 个通过测试成本”连续高于其他任务 3 倍,通常说明上下文切分不够好,或该模块需要先做依赖注入、拆分静态调用等小型可测试性改造。
用 59API 统一模型入口并压低试错成本
59API 提供按量付费的 Claude 与 GPT 模型访问,兼容 Claude Code、Codex 以及 OpenAI SDK,可将 API Base URL 配置为 https://api.59api.com。对于遗留代码测试这类需要多轮分析、生成、编译和修复的任务,统一入口的价值在于:可以按任务难度灵活切换 Haiku、Fable、Sonnet、Opus 或 GPT,而不必为每一种模型维护不同接入方式。
实践中可将代码侦察和失败摘要交给低成本模型,把复杂测试生成留给更强模型,并以账户实时价格为准设置每任务 Token 上限。59API 使用原生官方质量模型、不降级,适合在保障测试质量的同时降低批量补测的试错成本;还可通过推荐返利进一步摊薄团队长期用量。若准备为遗留项目建立这套流程,可以注册 59API 后先选 3 个高风险类做小规模成本验证。
¿Listo para empezar?
Conecta Claude y GPT en minutos a los precios más bajos, sin recortes. Regístrate para obtener tu clave API.
Registro gratis