AI 不该替 QA 点按钮:它该先学会找茬

13 分钟4,256 字Microboat

AI 摘要

  • AI 用在 QA 里,第一件有价值的事不是写脚本,而是提前把需求里的风险点摊开:边界、权限、幂等、异常、审计、通知、回滚。
  • 真正的测试资产不是一堆步骤,而是需求、测试点、用例、脚本、执行证据、缺陷和回归范围之间的可追踪关系。
  • AI 可以生成候选测试用例、测试数据和自动化脚本草稿,但“什么才算对”必须由 QA、产品和开发确认。测试的灵魂是 oracle,不是 prompt。
  • 系统测试和 E2E 测试里,AI 更适合把手工流程翻译成可维护脚本、把失败日志整理成归因线索、把变更 diff 转成回归建议。
  • 最务实的落地方式,是从一个高风险流程开始,把 AI 接到现有 Jira、用例库、Playwright/API 测试、CI 和缺陷系统里,而不是另起一个聊天框。

周五下午六点,产品经理把需求里的“支持退款”改成了“支持批量退款”。

开发看到的是接口多接一个数组。产品看到的是用户少点几次按钮。老板看到的是“体验优化”。

QA 看到的是另一张清单。

100 笔里 3 笔失败怎么办?重复点击会不会退两次?部分成功要不要通知用户?审计日志按一批记,还是按每笔记?退款权限只校验发起人,还是每笔订单都要校验?如果支付渠道返回超时,系统应该重试、挂起,还是回滚?

这些问题,比“帮我生成 20 条测试用例”值钱。

AI 用在测试里,真正有价值的第一步,不是替 QA 点按钮,也不是替工程师写单测,而是变成一个不知疲倦的找茬同事。它读需求、读接口、读历史 bug、读最近改动,然后把那些人容易漏掉、但线上最容易出事的缝隙提前摆出来。

一张三段式说明图:左侧是需求文档,中间是 AI 把需求拆成待确认问题,右侧是 QA checklist,表示 AI 先帮助测试团队找出风险点,而不是直接替人下结论。

先别让 AI 当测试专家

很多团队第一次谈 AI 测试,会自然滑向一个很诱人的问题:

能不能让 AI 自动生成测试用例?

可以。但这个问题太小,也太危险。

太小,是因为 QA 的工作不只是写用例。需求评审、风险识别、测试设计、测试数据、环境准备、脚本维护、缺陷归因、回归选择、发布准入,全都在测试流程里。只盯着“生成用例”,很容易把 AI 用成一个更快的文档助手。

太危险,是因为生成更多用例不等于质量更高。一个模型很容易写出十几条看起来完整、格式漂亮、步骤清楚的测试用例,但它们可能全都绕开真正的风险点。更糟的是,它们会让团队误以为“已经覆盖了”。

测试里最难的不是多写几行步骤,而是回答三个问题:

这次改动真正危险在哪里?

什么结果才算对?

失败以后,我们怎么知道是谁的问题?

所以更务实的起点,是先把 AI 降级。

不要先让它当测试专家。让它先当一个找茬同事。

第一步:让 AI 读需求,产出测试点

QA 拿到需求后,最有价值的不是马上写用例,而是先拆测试点。

一个好的 AI 辅助流程,输入不应该只有一句“帮我写测试用例”。它至少应该看到几类材料:

产品需求、用户故事、验收标准。

接口文档、状态机、权限规则。

历史缺陷、线上事故、客服反馈。

最近几个版本里相似功能踩过的坑。

然后它输出的第一版,不是测试用例,而是测试点矩阵。

以“批量退款”为例,它可以先拆出这些测试点:

测试维度AI 应该先抛出的问题产出形态
边界0 笔、1 笔、100 笔、超过上限怎么办?边界测试点
幂等用户重复提交、浏览器重试、网关重放会怎样?幂等测试点
部分失败100 笔里 3 笔失败,页面、通知、账务怎么展示?异常路径
权限发起人是否有每笔订单的退款权限?权限测试点
审计一次批量操作如何记录责任人和每笔结果?审计测试点
回滚支付渠道超时后,系统状态是否可恢复?恢复测试点

这一步很像把 QA 的经验拆开。

资深 QA 平时脑子里会自动过这些问题。新人不一定会。AI 的用处,就是把这套“找茬清单”稳定地摆到每个需求面前。

这不是只适用于互联网业务的小技巧。Bosch 在 ACL Industry 2025 的一篇论文里,讨论的是汽车这类系统级需求如何生成测试规格:先把自然语言需求整理成 test purpose,再展开成 test scenario 和 test specification。作者在用户研究里报告,测试开发工作量降低了 30%-40%。

这个例子有意思的地方在于,它没有把 AI 放在“最后写脚本”的位置,而是放在更靠前的地方:把需求变成可测试结构。对 QA 来说,这一步往往比脚本本身更早,也更关键。

第二步:QA 必须拿住 oracle

测试用例里最重要的不是步骤,而是期望结果。

这件事经常被低估。

“点击批量退款按钮,选择三笔订单,点击确认。”这只是动作。真正的测试价值在后半句:成功后订单状态应该是什么,账户余额什么时候变化,失败订单是否能再次发起,用户通知如何展示,审计日志如何记录。

这些期望结果,不能完全交给模型猜。

AI 可以生成候选 oracle。比如它可以建议:

部分成功时,成功订单进入“已退款”,失败订单保持原状态,并展示每笔失败原因。

重复提交时,同一退款请求只应生效一次。

权限不足时,不应该先执行部分订单再报错,而应该在提交前拦截。

但最终要不要这样设计,必须由产品、开发和 QA 确认。因为这不是语言问题,是业务规则问题。

所以流程上,AI 生成的是候选用例,QA 审核的是测试意图。

这也是为什么“AI 自动写测试”这个说法容易误导。它好像把测试变成了文档生成。实际上,成熟流程应该是:

AI 负责扩散可能性。

QA 负责确认风险和期望。

自动化框架负责确定性执行。

CI 负责持续反馈。

这样分工,AI 才不会越位。

第三步:手工流程可以变成自动化脚本

系统测试和 E2E 测试里,很多团队最痛的不是不知道测什么,而是自动化成本太高。

QA 已经知道要测“用户从商品页下单、支付、退款、收到通知”这条路径。但要把这条路径写成稳定的 Playwright、Cypress 或 Selenium 脚本,需要定位元素、处理等待、准备数据、清理环境、接 CI。业务变化一点,脚本又要修。

这里 AI 的位置很清楚。

不要让 QA 对着聊天框用自然语言描述半天。更好的方式,是让 QA 像平时一样在浏览器里点一遍,录下流程。然后 AI 和测试框架把这次操作翻译成脚本草稿,再按项目已有的 page object、helper、fixture、测试数据规范整理。

这比“请 AI 写一个登录到退款的测试”可靠得多。

因为真实操作里有上下文:页面长什么样,按钮在哪里,哪些接口被调用,哪些状态会变化,项目里已有测试怎么写。

一张四段式流程图:需求和用例进入手工 QA 流程,QA 在浏览器中操作真实用户路径,AI 把流程翻译成自动化脚本,最后进入 CI 回归看板。

Microsoft 在 Power Platform 的 Playwright 示例里,给出的就是这种很接地气的流程:先用 Playwright codegen 录制手工操作,再用 Copilot 按项目规范重构测试代码,最后人工 review。这个流程朴素,但正因为朴素,才像真正能进团队的东西。

这种焦虑在工程师社区里也很常见。Hacker News 上有人问,为什么 AI coding 总是“需求 → 代码 → 坏了再修”,而不是“需求 → 测试 → 代码 → 跑测试”。也有人尝试做“录制手工 QA 流程,再生成 E2E 测试代码”的工具。它们背后的共同判断是:AI 生成代码越来越快,但 E2E 测试覆盖没有同步变快。

这正是 QA 的机会。

当代码生产速度上来以后,测试不是变得不重要,而是变成瓶颈。AI 如果只帮开发写更多代码,会把这个瓶颈放大。AI 如果能帮 QA 把手工流程变成可运行、可维护、可回归的测试资产,才算真正改变软件交付。

第四步:失败以后,让 AI 看现场

测试失败时,最烦人的不是红了。

最烦人的是不知道为什么红。

是产品真有 bug?是接口环境挂了?是测试数据被别人改了?是脚本等待太短?是页面文案改了但业务没错?是最近一个 PR 改坏了?还是第三方服务抽风?

这时不要让 AI 当裁判。更好的位置,是让它当失败现场的整理员。

它可以把一堆证据放到一起看:

测试步骤。

浏览器截图和 trace。

console log。

网络请求和响应。

后端日志。

最近代码 diff。

测试数据状态。

然后它给出一个归因草案:更像产品 bug、脚本老化、环境问题、数据问题,还是上游依赖问题。

一张测试失败归因图:中心是失败的浏览器测试,周围有日志、网络请求、代码 diff 和测试数据,AI 把证据归到产品 bug、环境问题和脚本老化三类。

Google 内部也在把 AI 放到这个位置上。2026 年的一篇论文介绍了一个用于诊断集成测试失败的系统:它不替测试框架判断 pass/fail,而是读取失败日志和相关上下文,生成根因摘要,并指出关键日志行。研究团队在 71 个真实失败上做了人工评估,根因诊断准确率达到 90.14%;部署后,这套系统覆盖了 52,635 个失败测试。

这个方向比“让 AI 判断测试通过没通过”靠谱。

通过和失败,应该由测试框架判断。AI 该做的是读失败现场,帮人更快定位下一步该看哪里。

这也符合 QA 的真实工作。

很多时候 QA 不只是发现问题,还要判断问题归谁、是否阻塞发布、要不要回滚、能不能降级上线、是否需要补回归用例。AI 如果能把这些证据先整理好,QA 的判断就会快很多。

第五步:回归测试不是全跑一遍

很多团队的回归测试,表面上是流程问题,本质上是选择问题。

时间永远不够。环境永远紧张。测试数据永远脏。发布窗口永远快关了。

所以真正难的问题不是“能不能生成更多测试”,而是:

这次改动,最该跑哪些测试?

哪些用例必须手工确认?

哪些自动化用例可以覆盖?

哪些历史缺陷最可能复发?

哪些模块虽然没改,但被依赖链碰到了?

AI 可以在这里做变更影响分析。

输入一次 PR diff、关联需求、接口变更、数据库迁移、历史缺陷和用例库,它输出一份回归建议:

必须跑:支付、退款、账务、通知。

建议跑:订单详情、客服后台、对账导出。

可跳过:只读报表、营销配置。

需要手工确认:批量操作的异常展示、审计记录。

需要补自动化:部分成功、重复提交、渠道超时。

这比“帮我再生成 50 条用例”更有价值。

因为成熟 QA 团队缺的不是无限用例,而是有限时间里的风险排序。

工程师社区里已经有人在沿着这条线试。Hacker News 上一个关于“从 GitHub PR 生成测试”的讨论提到,AI coding 工具让代码变多,但真实用户场景和 E2E 覆盖没有同步增长;他们设想的系统会读 PR、Jira 需求和依赖图,生成缺失测试和覆盖报告。这个想法未必成熟,但痛点很真实:AI 加速开发以后,测试选择必须跟着自动化。

一条真正能落地的小流程

如果一个团队想试这件事,不需要先买一套大平台。

可以从一个高风险流程开始。比如退款、登录、权限、订单、支付、发票、审批、数据导出。

第一周,只做需求到测试点。

每个需求评审前,把 PRD、接口草案、历史 bug 喂给 AI,让它产出测试点和待确认问题。QA 在评审会上逐条确认,最后形成测试点矩阵。

第二周,做测试点到用例。

AI 生成候选用例,QA 只保留高风险和高频路径。每条用例必须绑定需求 ID、风险类型、期望结果和优先级。

第三周,做用例到脚本。

挑 3-5 条最稳定、最关键的路径,用 Playwright codegen 或现有录制工具录一遍,再让 AI 按项目规范整理成自动化脚本。脚本必须跑在 CI 里,不能停在本地 demo。

第四周,做失败归因。

CI 失败后,让 AI 读取 trace、截图、日志、网络请求和最近 diff,生成归因草案。QA 记录它的判断是否有用,慢慢沉淀成团队自己的失败分类。

第五周,做回归推荐。

每次发布前,让 AI 根据变更列表、需求和历史缺陷推荐回归范围。QA 不直接照单全收,而是看它有没有漏掉关键风险。

这条路看起来慢,但它比“全公司上线 AI 测试助手”稳得多。

因为它不是在替换 QA,而是在把 QA 的判断变成可复用的工作流。

不要做成新的聊天框

AI 测试最容易失败的形态,是又多一个聊天框。

QA 要把需求复制进去,让它写用例。开发要把日志复制进去,让它分析失败。测试负责人要把发布说明复制进去,让它推荐回归。最后每个人得到一堆互不相连的文本。

这不叫流程改造。这叫把复制粘贴外包给模型。

真正有用的 AI 测试系统,应该尽量接在已有工具上:

需求在 Jira、飞书、多维表格或 Linear 里。

用例在测试管理系统里。

自动化脚本在 Git 仓库里。

测试执行在 CI 里。

日志和 trace 在可观测系统里。

缺陷在 issue 系统里。

AI 只是把这些东西连起来:从需求找到测试,从测试找到脚本,从失败找到证据,从缺陷找到回归。

换句话说,AI 不应该成为测试流程旁边的另一个入口。它应该钻进测试流程里面,帮每一个环节少一点手工整理,多一点可追踪关系。

最后,QA 不会消失

AI 会让测试用例变便宜,测试脚本变便宜,失败摘要变便宜。

但它不会让测试判断变便宜。

什么风险值得测,什么结果才算对,什么失败必须挡发布,什么问题可以带着上线,什么历史事故绝不能重演,这些仍然是人的判断。

所以更好的说法不是“AI 替代 QA”。

更准确的说法是:

AI 让 QA 的判断更容易落到流程里。

需求评审时,它帮你多问几句。写用例时,它帮你补路径。写脚本时,它帮你翻译手工操作。测试失败时,它帮你整理证据。做回归时,它帮你缩小范围。

如果这些环节都连起来,测试就不再是一堆发布前才开始补的表格和脚本,而是一条持续积累的质量反馈链。

那时 AI 真正帮到的,不是“点按钮”。

它帮团队把每一次找茬,变成下一次不必重新找的测试资产。

资料来源

相关文章