教程中心实战
实战

用 AI 测试 Agent 自动写单测、跑回归、抓 Bug(质量保障实战)

2026.07.22· 6 个步骤 · 18 分钟阅读· 🧪 测试 Agent

测试是软件里最该做、却最常被砍的一环——因为写测试又慢又枯燥,但线上 Bug 的代价最高。2026 年「AI 测试 Agent」成熟了:它能自动补单元测试、跑回归、定位失败、给修复建议,把人从重复劳动里解放出来。本教程用开源/通用方案,手把手搭一条「会自己测自己」的质量保障流水线。

🧪 本教程适合:开发者、技术负责人、独立开发者。会一点命令行即可,不需要测试专家背景。

先搞懂:Agent 测试 vs 手工测试

手工测试AI 测试 Agent
人写用例,慢且易漏读代码自动生成用例,覆盖边界
回归要人肉跑提交即自动跑,失败即时告警
Bug 靠肉眼定位失败即给定位 + 修复建议
覆盖率靠自觉覆盖率门禁卡住低质量合并

Agent 是「放大器」不是「免死金牌」:它生成的测试要人审,关键业务仍要人工把关。把 Agent 当「资深测试同事」,而不是「替你背锅的人」。

Step 1:选测试 Agent 思路

1 按团队现状挑方案
方案 A(零配置):GitHub Copilot / Cursor Agent
  → 在编辑器里让它「给这个函数写 pytest 单测」
方案 B(全自动 PR):Devin / Augment Code
  → 派任务,Agent 自己写测试+跑+提 PR 等你审
方案 C(通用 API Agent):用 OpenAI Agents SDK
  / Claude Code 自建测试流水线(可控性最高)

新手从方案 A 起步,最快见到效果。
💡 小团队先上方案 A 验证价值,再考虑 B/C 做自动化。别一上来就搭复杂 CI,容易卡在配置。

Step 2:让 Agent 给函数写单测

2 一句话,补上缺失的测试
对 Copilot / Cursor Agent 说:
「给 src/calc.py 的 add / divide 写 pytest 单测,
覆盖:正常值、除零异常、负数、边界 0。」

Agent 会生成类似:
def test_divide_zero():
    with pytest.raises(ZeroDivisionError):
        divide(1, 0)

你跑:pytest src/test_calc.py -v

务必看一眼生成的断言:Agent 偶尔会写「永远通过的假测试」。确认它在测真逻辑,而不是在凑覆盖率。

Step 3:跑回归 + 失败定位

3 改完代码,让 Agent 帮你查谁挂了
改了一处公共函数后:
「跑全量测试,哪些失败了?定位是哪个改动导致的,
并给修复建议。」

Agent 会:
· 执行 pytest 并汇总失败用例
· 对照改动定位根因
· 给出最小修复 diff 供你确认
💡 把「跑测试」变成每次提交前的默认动作,而不是月底集中补。越早跑,Bug 越便宜。

Step 4:接 CI 自动触发(GitHub Actions)

4 提交即测,不靠人记
# .github/workflows/test.yml
name: test
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.11" }
      - run: pip install pytest && pytest -q

CI 是 Agent 测试的「安全带」:本地跑过不代表别人环境能跑。CI 保证每次合并都经过同一套测试,避免「在我机器上是好的」。

Step 5:视觉 / 端到端测试(Playwright + Agent)

5 不只测逻辑,也测「点得动吗」
让 Agent 用 Playwright 写端到端用例:
「写一个 e2e 测试:打开首页 → 点『登录』→
 输入错误密码 → 应出现错误提示。」

运行:pytest e2e/test_login.py
Agent 还能在测试失败时截图,帮你快速看现场。
💡 端到端测试贵(慢、脆),只覆盖核心用户路径(登录、下单、支付),别什么都 e2e。分层测试才健康。

Step 6:覆盖率门禁 + 报告

6 用门槛拦住低质量合并
# 生成覆盖率并卡 80%
pytest --cov=src --cov-fail-under=80

# 接 Allure / pytest-html 出可视化报告
pytest --html=report.html

把报告挂到 CI 产物,每次 PR 都能看到覆盖率变化。
🎉 恭喜!你已搭出「Agent 写测试 → 提交即 CI 跑 → 失败定位 → 覆盖率门禁」的闭环。想进一步做质量度量,看本中心《AI Agent 可观测性》《Agent 评测 Evals》两篇。

常见问题速查

你遇到的现象大概率原因 & 解决
Agent 写假测试断言没测真逻辑,人工核对断言
CI 跑不过本地能过环境/依赖不一致,锁版本、用相同 Python
e2e 经常随机挂覆盖太宽,只留核心路径 + 加等待
覆盖率上不去先补核心模块单测,别追求 100%