Claude Code 在 QA 工作流中能做什么
- 按照项目现有的风格和框架,为模块生成单元测试。
- 将缺陷报告转化为失败的回归测试,然后修复代码,直到测试通过。
- 为现有测试套件补充缺失的边界情况(空输入、Unicode、超时、并发)。
- 编写 Playwright 或 Cypress 端到端测试,并借助浏览器 MCP 服务器,在运行中的应用上执行这些测试。
- 排查失败的 CI 运行:读取日志、查找原因、提出或应用修复。
- 审查拉取请求中未经测试的路径,并发布发现的问题。
它无法决定哪些事情重要。它很乐意用没有任何有用断言的测试,将行覆盖率提升到 100%。输出质量取决于指令质量,因此下方的配置从记忆文件开始,而不是从提示词开始。
配置:告诉它如何运行测试
# CLAUDE.md
## Testing
- Unit tests: `npm test` (vitest). Files live next to the source as `*.test.ts`.
- E2E: `npx playwright test`, specs in `e2e/`. Needs the dev server: `npm run dev`.
- Always run the relevant test file after editing it. Do not mark a test `.skip` to make the suite pass.
- Prefer table-driven tests; one behaviour per `it()`; no snapshot tests for logic.
这段内容决定了智能体是靠猜测行事,还是像读过贡献指南的同事一样工作。加入你希望采用的断言风格,以及绝不希望它做的事情(模拟数据库、跳过测试、修改测试数据以匹配错误输出)。
根据规格说明或缺陷报告生成测试
> Read src/billing/prorate.ts. Write vitest tests covering the documented behaviour in
docs/billing.md, including month boundaries, leap years and a zero-day period.
Run them; if any fail, tell me whether the code or the doc is wrong before changing code.
> Bug #412: uploading a 0-byte file returns 500 instead of 400. Write a failing test that
reproduces it, then fix the handler so the test passes. Do not touch other tests.
每个提示词的最后一句话都很重要。“告诉我是代码错了还是文档错了”,可以防止它悄悄改变行为,以匹配刚刚自行编写的测试;“不要改动其他测试”,可以避免一种常见失败模式:为了让测试通过而修改无关的断言。
运行与修复循环
要求它在编写测试后运行测试。它会读取失败输出、进行调整并重新运行——通常需要两三次迭代。留意权限提示:允许 Bash(npm test*) 和 Bash(npx playwright test*) 一次,并使用 /permissions 以免循环被打断,同时让破坏性命令保持每次询问。如果它在同一个测试上循环超过四五次,就停止它;该测试很可能在断言错误的内容,需要人工检查。
在 CI 中以无头模式运行
# generate regression tests for whatever changed, non-interactively
git diff --name-only origin/main...HEAD | grep -E 'src/.*\.ts$' > changed.txt
claude -p "For each file in changed.txt, add or extend tests for the changed behaviour. Run them." \
--allowedTools "Read,Edit,Write,Bash(npm test*),Bash(git diff*)" \
--max-turns 25 --output-format json > claude-qa.json
打印模式不会提出任何问题,因此它可能执行的所有操作都必须预先通过以下方式授权: --allowedTools,以及 --max-turns 限制循环次数。将 ANTHROPIC_BASE_URL=https://aiprimetech.io 和网关密钥设为 CI 密钥变量,运行费用就会从你的网关余额或无限量套餐中扣除。将结果提交到分支,让人工审查——不要自动合并生成的测试。
在每个拉取请求上运行:GitHub Action
当有人发表评论时,Claude Code GitHub Action 会运行相同的循环 @claude 在拉取请求中触发,或在创建时自动触发。在工作流中加入面向 QA 的指令——“检查此 PR 中未测试的分支,并为其添加测试”——即可在审阅者查看之前,对每个 PR 进行初步检查。GitHub 指南介绍了应用安装、工作流文件和费用。
使用 Playwright 进行端到端测试
有两种方式。不使用浏览器时,它会根据页面结构和你的描述编写 Playwright 测试用例,再由你运行。连接 Playwright MCP 服务器后(/mcp),它可以打开应用、点击并走完整个流程、读取 DOM,然后根据实际看到的内容编写测试——选择器会可靠得多,但会话也会更长。每个浏览器会话只处理一个流程,并在会话之间 /clear ;截图和 DOM 转储体积很大,而且每一轮都会重新发送。
降低 QA 运行成本
- 使用 Sonnet 档位;生成测试很少需要 Opus。Haiku 档位足以用于日志问题分类。
- 每次只让它处理一个模块或一个缺陷。“为整个仓库添加测试”是成本最高的提示。
/compact在每个测试文件落地后执行;它读取过的失败日志已不再有用。- 在 CI 中,使用以下选项设置上限
--max-turns,并且只针对已更改的文件运行。 - 对于每天运行这些任务的团队,固定费率的不限量套餐可以彻底消除按 token 计费的顾虑。
| 计划 | 时长 | 价格 |
|---|---|---|
| 1 小时不限量 | 1 小时 | $1 |
| 24 小时不限量 | 24 小时 | $10 |
| 1 周不限量 | 1 周 | $49 |
| 15 天不限量 | 15 天 | $89 |
先免费试用
新账户可获得 $5 免费 API 额度 使用优惠码 CLAUDECODE — 足够用 Sonnet 运行 Claude Code 一晚,之后可获得面值 7.69231 倍的额度。
export ANTHROPIC_BASE_URL=https://aiprimetech.io
export ANTHROPIC_API_KEY=your_key常见问题
Claude Code 能编写单元测试吗?
可以——如果 CLAUDE.md 说明了项目现有的框架和风格,它就会按这些要求编写。让它在编写后运行测试,以便自行修正错误。
Claude Code 能运行 Playwright 测试吗?
可以。它可以独立编写测试用例,连接 Playwright MCP 服务器后,还能操控真实浏览器来构建和验证测试。
Claude Code 适合 QA 自动化吗?
在生成测试、完成编写—运行—修复闭环,以及对 CI 失败进行分类排查方面,它非常适合。它不能替你决定哪些内容需要测试,而且生成的测试在合并前仍需人工审查。
如何在 CI 中运行 Claude Code 来进行测试?
使用 claude -p,并配置 --allowedTools 和 --max-turns,将网关或 Anthropic 凭据作为密钥保存,再将输出提交到分支供审查。GitHub Action 为拉取请求封装了同样的流程。
通过网关运行 Claude Code
相同的模型,两个环境变量,面值 7.69231 倍的额度,或固定费率不限量方案。 新账户:使用优惠码 CLAUDECODE 可获得 $5 免费 API 额度。
获取 API 密钥 查看不限量方案AI Prime Tech 是独立的 API 网关,与 Anthropic 无关联,也未获得其认可或赞助。“Claude”和“Claude Code”是 Anthropic 的商标。此处介绍的 Claude Code 功能以撰写时 Anthropic 的公开文档为依据,且经常发生变化;本页面的价格和模型列表读取自此网关的实时设置。