你可能正在走一条错路
过去一年,测试团队拥抱 AI 的方式大多是这样的:用 AI 生成测试用例、用CC等写自动化脚本、让 LLM 帮忙分析 bug。
这没有错,但这只是把旧的工作方式装了个更强的引擎。工作流没变,组织结构没变,信息流动方式没变。你只是多了一个更聪明的助手。
AI 不是工具,是操作系统。测试开发团队如果只是在现有流程里加 AI,就像罗马军团装备了步枪,但还是按百人队的方式打仗——火力提升了,但组织的根本瓶颈没有解决。
真正的转型是:让测试体系变成一个自我改进的闭环。
先理解闭环是什么
闭环结构放到测试开发场景里,长这样:
传感层 → 决策层 → 工具层 → 质量关卡 → 学习机制 ↑ ↓ └──────────────── 反馈回路 ────────────────────┘传感层:测试执行结果、线上 bug 报告、用户反馈、代码变更记录、CI/CD 流水线日志。这些是你的"传感数据",告诉你系统的真实状态。
决策层:哪些失败需要立即阻断发布?哪些是已知的 flaky test?哪些 bug 需要人工介入?这是规则和策略。
工具层:你的自动化测试框架、测试数据生成脚本、环境管理工具。这些是 AI 可以调用的确定性 API。
质量关卡:覆盖率阈值、性能基线、安全扫描。这是系统的"出口检查"。
学习机制:这是大多数团队缺失的部分。测试失败了,修了,但没有人问:为什么这个测试之前没有覆盖到这个场景?下次怎么避免同样的盲区?
传统团队的测试体系是开环的:执行 → 报告 → 人工分析 → 手动修复。信息在每个环节都有损耗,而且不会自动流回去改进系统本身。
让组织对 AI 可读:测试知识的显性化
有一个原则值得记住:如果它没有被记录,对 AI 来说它就没有发生过。
测试团队有大量隐性知识:
• 为什么这个接口要测这三个边界值?(因为三年前有个线上事故) • 这个模块的测试为什么总是 flaky?(因为依赖了一个不稳定的第三方服务) • 这个功能的测试优先级为什么这么高?(因为它是核心付费路径)
这些知识活在老员工的脑子里、散落在群消息里、埋在关闭的 Jira ticket 里。新人来了要花三个月才能搞清楚。AI 永远不知道。
具体要做的事:
1. 把测试决策变成制品
每一个测试用例的背后,都应该有一个可查询的"为什么"。比如"验证金额为0时的边界行为"、"覆盖并发写入的竞态场景"。
这不是给人看的,是给 AI 看的。当 AI 分析测试覆盖盲区时,它需要知道哪些场景是有意为之,哪些是真正的遗漏。
2. 把 Code Review 的讨论沉淀下来
测试 PR 的 review 评论里藏着大量领域知识。"这里应该加个并发测试"、"这个 mock 太重了,考虑用 stub"——这些讨论现在消失在 PR 历史里,没有人系统性地提取。
建立一个简单的机制:每周让 AI 扫描本周相关 PR 的 review 评论,提取出可复用的测试规范,追加到团队的测试指南文档里。文档变成活的,而不是写完就过时。
3. 记录测试失败的根因,不只是修复
现在大多数团队的流程是:CI 红了 → 找原因 → 修复 → 绿了 → 继续。根因分析的结论没有地方落。
加一个简单的步骤:每次修复非 flaky 的测试失败,在 commit message 或 ticket 里写一行根因标签,比如 [root-cause: missing-boundary-test] 或 [root-cause: env-dependency]。积累三个月之后,你就有了一份真实的"测试盲区分布图",AI 可以基于这个给你生成针对性的测试策略。
构建自我改进的测试闭环
测试开发领域有一个可以直接落地的场景:Flaky Test 的自动治理。
第一阶段:让 flaky test 可查询
建一个简单的 flaky test 数据库,记录每个测试的历史通过率、失败模式、最近修复记录。不需要复杂系统,一个 SQLite 数据库就够。
test_id | pass_rate_7d | last_failure_reason | last_fixed_by | fix_count--------|--------------|---------------------|---------------|----------test_001| 0.73 | timeout in step 3 | @zhangsan | 4test_002| 0.91 | assertion mismatch | @lisi | 1第二阶段:加上分析 Agent
每天跑一个 Agent,分析 flaky test 数据库,对 pass_rate 低于阈值的测试:
• 拉取最近五次失败的日志 • 对比代码变更历史 • 生成一份"可能原因 + 建议修复方向"的报告,发到团队群
这个 Agent 不需要自动修复,只需要把分析结果送到人面前。人的工作从"找问题"变成"判断和决策"。
第三阶段(有了信心之后):让部分修复自动化
对于有明确模式的 flaky test——比如超时类失败,原因通常是 timeout 值设置过小——Agent 可以直接提 PR,把 timeout 从 3s 改到 10s,附上数据支撑,等人 approve。
这就是一个小型的自我改进闭环:失败数据 → AI 分析 → 自动提修复 → 人工审核 → 合并 → 数据更新。
重新定义测试工程师的工作
人定义"什么是正确",AI 生成"如何验证正确"。
这意味着测试工程师的核心价值不再是写测试脚本,而是:
• 定义测试策略:这个功能的风险点在哪里?什么场景必须覆盖?什么场景可以接受风险? • 设计测试规格:用自然语言或结构化格式描述测试意图,而不是直接写代码。 • 评判 AI 的输出:AI 生成的测试用例是否覆盖了真正的风险?有没有遗漏的边界?
工作流的变化:
旧方式: 需求评审 → 读需求 → 手写测试用例 → 手写自动化脚本 → 提交
新方式: 需求评审 → 定义测试策略文档(风险点、覆盖范围、优先级)→ AI 基于策略文档生成测试用例和脚本 → review 和补充 → 提交
策略文档是有价值的制品,沉淀了测试工程师的领域判断。脚本是短暂的,可以随时重新生成。
组织层面:两个角色,去掉中间层
如果测试数据是可查询的——测试进度、覆盖率、风险分布,任何人随时都能看到——就不需要一个人专门去收集和汇报。
团队里只需要两种人:
IC(个人贡献者):直接构建和运营测试体系。写测试策略、review AI 生成的用例、维护测试基础设施、分析失败根因。每个人都是构建者。
DRI(直接责任人):对某个产品模块或某个质量目标负责的人。不是管理者,是对结果负责的人。"支付模块的测试覆盖率和线上 bug 率,我来负责。"一个人,一个结果。
责任清晰,信息不需要通过人来路由,AI 承担协调和汇总的工作。
最后
如果你今天重新设计你的测试体系,你还会用同样的方式组织它吗?
你不需要推倒重来。但需要开始把每一个流程都问一遍:这里有没有一个闭环?这里的信息有没有被记录下来?这里有没有一个人在做本来可以由 AI 做的协调工作?
测试开发的未来不是"更快地写更多测试",而是构建一个持续自我改进的质量保障系统。这个系统在你睡觉的时候也在变得更好。
夜雨聆风