用 AI 写测试用例和自动化脚本
相关搜索
这篇用到的 skill(3)
主力。测试驱动工作流,先写测试再实现,红-绿-重构。
npx skills add affaan-m/ECC -gPlaywright 端到端测试,覆盖关键用户路径。
npx skills add affaan-m/ECC -g测试驱动开发原则与示例,适合入门对齐。
npx skills add mattpocock/skills -g
测试最大的价值不是"覆盖率高",是"抓住会真出事的路径"。让 AI 生成测试的核心是:先给它已实现的代码或明确的行为约定,再让它补边界用例——别让它凭空造被测对象,造出来的测试再绿也没意义。
这篇适合谁 / 不适合谁
适合:
- 要给已有函数 / 接口补单测、边界用例
- 想用 TDD 但不知道先写哪条测试
- 要给关键用户路径补端到端(E2E)测试
不适合:
- 代码本身逻辑都没定(先定行为再测)
- 要求 AI 替你决定"什么算正确"(正确性由你定义)
- 把测试覆盖率当 KPI 刷量(绿了不等于对了)
开始前准备什么
- 被测代码:要测的函数 / 模块 / 接口定义。
- 行为约定:输入输出的边界、异常分支、期望。
- 测试框架:单测用项目的(Vitest/Jest/pytest),E2E 用 Playwright。
操作步骤
1. 装 skill
tdd-workflow 是测试驱动工作流技能包,复制目录到客户端技能目录(与一般 Agent Skill 装法一致):
| 客户端 | 目录 |
|---|---|
| Claude Code | ~/.claude/skills/ |
| Codex | ~/.codex/skills/ |
| Cursor | ~/.cursor/skills/ |
| Trae | ~/.trae/skills/ |
| CodeBuddy | ~/.codebuddy/skills/ |
| 通义灵码 | ~/.lingma/skills/ |
2. 先给行为,再让 AI 写测试
基于下面这个函数,用 Vitest 写测试:
- 覆盖:正常输入、空值、越界、类型错误各一条
- 每条测试只断言一个行为,命名说清预期
- 不要改函数实现,只补测试文件
先列出你觉得最容易翻车的 3 个边界,再写。3. TDD:先红后绿
想练 TDD,让 AI 先写失败测试(红),你实现到通过(绿),再重构:
用 tdd-workflow:先为"购物车结算"写一条会失败的测试(红),
描述清楚期望行为;等我实现后跑通(绿),再提议一处安全的重构。4. 补 E2E 关键路径
用户路径用 e2e-testing 写 Playwright 脚本,只覆盖"出错代价最高"的 2-3 条,而不是全点一遍:
用 Playwright 写一条 E2E:从登录到下单成功。
只断言关键状态(下单成功提示、订单号生成),不要逐元素比对。会踩的坑
| 坑 | 现象 | 怎么绕 |
|---|---|---|
| 测假对象 | AI 造了不存在的函数 | 给真实代码,别让它凭空造被测对象 |
| 只测正常流 | 边界全漏 | 强制覆盖空值/越界/异常 |
| 一条断言太多 | 挂了不知哪错 | 一条测试一个行为 |
| 绿了当对 | 断言写错方向 | 你定义"什么算正确" |
| E2E 太宽 | 脆、跑得慢 | 只覆盖关键路径 |
FAQ
没有测试框架也能写吗?
能,让 AI 按你项目的框架写;没框架就先定一个再写。
AI 写的测试能直接信吗?
先跑一遍确认真的失败过(红),再实现到绿,避免"假绿"。
TDD 一定要先写测试吗?
推荐。先红后绿能让行为先被定义,实现只为通过测试。
E2E 要覆盖多少?
只覆盖出错代价最高的关键路径,全点一遍又脆又慢。
覆盖率低怎么办?
先补边界和异常分支,比堆正常流用例有用。
相关指南
顺着这些场景接着看:
相关源码
- affaan-m/ECC · tdd-workflow 源码
- affaan-m/ECC · e2e-testing 源码
- mattpocock/skills · tdd 源码
- Agent Skill 开放格式规范
一句话结论
结论:测试的价值在"抓住真会出事的路径"——给 AI 真实代码或行为约定,让它补边界用例,别让它凭空造被测对象。
参考来源
相关场景
AI 辅助下的代码质量守门(译编)
AI 写代码飞快,但"质量门"反而更要紧。社区共识三点:**反向 TDD**(先让 AI 出测试再写实现)、**零警告门禁**(`--max-warnings=0`,警告会悄悄变成新基线)、**审查作为关卡**(每次改动都过同一道闸)。核心是让 AI 产出可验证、可守门,而不是又快又野。
让 AI 做一次像样的代码评审
AI 代码评审有个典型毛病:**它会给你 20 条"建议",其中 18 条是风格偏好**。真正有用的评审只有两类信息——哪里会坏、哪里别人看不懂。所以这套流程的重点不是"让 AI 多说",而是**先限定它只能报这两类问题**。