Skills + MCP + Playwright:AI 自动化测试的“假通过”怎么治?

简介: AI生成UI自动化脚本易现“假通过”:页面提示成功,但业务实际失败。根源在于仅断言前端Toast,忽略接口响应与业务状态校验。本文提出构建“UI-接口-业务状态一致性”Skill,推动AI从“跑通流程”转向验证真实业务结果,让AI成为可控的质量协作者。

上周帮一个团队看 AI 生成的 UI 自动化脚本。

脚本跑得很漂亮:打开页面、填表、点击提交,最后页面弹出“提交成功”,报告里一片绿色。

但测试同学顺手去后台查了一下——这笔申请根本没有创建成功。

原因并不复杂:前端 Toast 提示先出来了,接口实际返回异常;而 AI 生成的脚本把“看见成功提示”当成了唯一断言。

这类问题在研发团队接入 Coding Agent、AI 自动化之后,会越来越常见。

AI 很会“把流程跑完”,但不天然知道:

页面完成一次点击,和业务真正成功,不是一回事。

01 AI 写出了脚本,为什么还会出现假通过?
现在用 Codex、Claude Code 这类工具补一条 Playwright 脚本,已经很方便。

给它一个页面、一段需求描述,通常几十秒就能生成这样的代码:

def test_apply_refund(page):
page.goto("https://test.example.com/refund/apply")

page.get_by_label("订单号").fill("A20260831001")
page.get_by_label("退款原因").select_option("重复下单")
page.get_by_role("button", name="提交申请").click()

expect(page.get_by_text("提交成功")).to_be_visible()

它的问题在于:这段代码只验证了页面说自己成功了。

但在真实业务中,至少还可能出现几种情况:

点击后前端乐观更新,接口其实返回 500;
接口返回成功,但退款单没有正确落库;
落库成功,但状态机流转错误,例如本应是 PENDING,却直接进入了 CLOSED;
测试环境里残留旧数据,页面展示的是上一轮的结果。
所以,AI 自动化最危险的不是“脚本不会写”。

而是:脚本把错误的结果,当成了正确的验证标准。

02 给 AI 一个“UI—接口—业务状态一致性”Skill
解决这件事,不是每次都重新提醒 AI:

“不要只断言页面提示,还要校验接口和数据。”

更好的做法,是把这条测试原则固化成一个项目级 Skill。

例如,在仓库里放一个 ui-api-consistency/SKILL.md:


name: ui-api-consistency

description: 用于涉及创建、提交、支付、审批等关键业务操作的 UI 自动化测试

测试规则

  1. 不允许只用 Toast、弹窗或按钮状态作为成功断言。
  2. 必须捕获关键请求,并校验 HTTP 状态码和响应体关键字段。
  3. 对创建类操作,必须通过业务查询接口验证最终状态。
  4. 断言应覆盖:请求参数、接口响应、业务实体状态。
  5. 测试失败时,输出 requestId、响应体和页面截图,便于定位。
    它的价值不在于多写了一个 Markdown 文件。

而在于以后无论是 Codex、Claude Code,还是团队里其他人调用 Agent 补脚本,都能沿用同一套质量规则。

Prompt 是一次性对话。 Skill 是可复用、可审查、可跟随项目演进的测试经验。

03 Playwright 负责操作,MCP 负责让 Agent 看见真实系统
有了规则,还要让 Agent 真正拿到验证业务结果的能力。

这时可以把能力拆开:

能力
在测试中的作用
Playwright
操作页面、监听网络请求、获取页面状态
MCP
连接 Swagger、测试数据服务、缺陷平台、业务查询接口等工具
Skills
固化什么时候必须做多层校验、失败后输出什么信息
Coding Agent
理解任务并组合调用这些能力,生成或维护测试代码
下面把刚才那条“假通过”脚本,改成真正能校验退款申请状态的版本:

import pytest
from playwright.sync_api import expect

@pytest.mark.e2e
def test_apply_refund_should_create_pending_refund(page, api_client):
order_no = "A20260831001"

page.goto("https://test.example.com/refund/apply")
page.get_by_label("订单号").fill(order_no)
page.get_by_label("退款原因").select_option("重复下单")

# 1. 点击动作和关键接口请求必须绑定
with page.expect_response(
    lambda response: "/api/refunds" in response.url
    and response.request.method == "POST"
) as response_info:
    page.get_by_role("button", name="提交申请").click()

response = response_info.value

# 2. 校验接口真正成功,而不是只看页面提示
assert response.status == 201
payload = response.json()
refund_id = payload["data"]["refundId"]
assert payload["data"]["status"] == "PENDING"

# 3. 通过业务查询接口确认最终状态
refund = api_client.get(f"/api/refunds/{refund_id}").json()["data"]
assert refund["orderNo"] == order_no
assert refund["status"] == "PENDING"

# 4. 页面反馈只作为体验层补充校验
expect(page.get_by_text("退款申请已提交")).to_be_visible()

这段代码的核心不是“多写了几个断言”。

而是把一次业务提交,拆成了三个层次:

页面层:用户是否完成操作;
接口层:服务是否真正成功处理请求;
业务层:最终数据和状态是否符合规则。
这才是 AI 自动化在关键链路上应该有的测试思维。

04 这类 Skill,恰恰是团队接入 AI 后最该先沉淀的
很多团队一上来就让 AI 做“自动生成测试用例”“自动写脚本”。

真正跑一段时间才发现,难的不是生成,而是控制生成结果的质量。

建议优先沉淀这几类测试 Skills:

关键链路一致性 Skill:UI、接口、数据库或业务状态的联合校验;
失败归因 Skill:自动收集请求响应、日志、截图和 Trace,辅助区分产品 Bug、环境问题、脚本问题;
测试数据 Skill:生成数据、清理数据、避免测试之间互相污染;
需求风险分析 Skill:读取 PRD、历史缺陷和接口文档,输出高风险测试点;
回归报告 Skill:按团队规范汇总通过率、失败原因、风险项和发布建议。
Skills 不是替代测试工程师判断。

它做的是把那些反复验证过的判断标准,先交给 AI 严格执行。

当团队把这些规则逐步沉淀下来,AI 才不会只是“跑得很快的脚本生成器”,而会开始成为真正可控的质量协作对象。

如果你现在正在接触 Codex、Claude Code、Skills、MCP 或 Playwright,不妨先问自己一个问题:

AI 帮我把测试跑完了,它验证的是页面表象,还是业务事实?

这两者之间,往往就是一条 Skill 的距离。

我们近期也会围绕 Agent、MCP、Skills、RAG 和 AI 自动化测试,持续拆解能够放进真实研发流程的测试场景。

相关文章
|
19天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
13102 84
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
7天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
2天前
|
缓存 人工智能 API
阿里云Qwen3.8‑Flash完整能力解析:模型特性、API调用实操与计费规则深度拆解
在AI应用快速落地的当下,开发者与企业选型大模型API,不再只单纯关注评测榜单分数,推理速度、上下文长度、多模态能力、工具调用稳定性以及实际调用成本,共同决定项目能否平稳上线。Qwen3.8‑Flash作为新一代多模态混合专家模型,主打高性能推理与低成本开销,面向编程开发、智能Agent工作流、超长文档解析、图文混合理解等高频场景,提供托管API服务,权重同时开放可供本地部署,兼容主流接口协议,能够无缝接入各类开发工具链。很多开发者在接入过程中,容易混淆普通按量Token计费、缓存计费、各类订阅计划之间的差异,造成实际账单超出预估。本文从模型底层架构、核心功能能力、适用场景、API调用实操、完
678 0
|
12天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1734 4
|
13天前
|
人工智能 Java BI
【AI】DeepSeek Harness 安装、运行、管理插件
本文介绍了如何运行DeepSeek开源的Agent框架DeepSeek Harness(dsh)。主要内容包括:使用nvm安装适配的Node版本;通过代理加速克隆GitHub源码;使用pnpm安装依赖并启动项目;配置DeepSeek API Token;安装扩展功能的插件。该框架自带Web界面,支持模型适配、文件编辑等插件化功能
1908 1
|
人工智能 JavaScript 开发工具
DeepSeek Harness 本地安装与使用指南
DeepSeek Harness(DSH)是DeepSeek AI开源的Agent运行框架,支持本地文件操作、命令执行与工具调用。基于Cordis插件架构,具备高扩展性与强可控性,适合开发者搭建可控Agent环境或开展模型基准测试。当前为开发者预览版,需Node.js环境,推荐先用`npx @deepseek-ai/dsh web`快速体验。
5145 0
|
15天前
|
人工智能 JavaScript 测试技术
保姆级教程:DeepSeek Harness从安装到跑通测试,30分钟上手
DeepSeek Harness是DeepSeek开源的AI Agent运行时,主打“一行命令安装、5分钟跑通”。它让模型真正动手干活——读代码、跑测试、分析失败、生成修复方案。本文手把手教你30分钟从零上手,覆盖安装、配置、实测及避坑指南,助你快速掌握下一代AI编程范式。
|
8天前
|
人工智能 Linux iOS开发
Ollama使用教程:Ollama官网下载、Ollama本地部署大模型(2026最新)
Ollama 是一款免费开源的本地大模型运行工具,支持在 Windows/macOS/Linux 上离线运行 Qwen、DeepSeek、Llama 等主流开源模型,数据不出本机、隐私安全。提供 OpenAI 兼容 API,命令行一键拉取/运行/管理模型,无需联网,无调用限制,是开发者与 AI 爱好者部署本地 AI 助手的理想选择。(239 字)
|
14天前
|
人工智能 JavaScript 测试技术
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!
DeepSeek Harness是DeepSeek推出的开源Agent运行框架,秉持“一切皆插件”理念,支持模型、工具、技能、工作流等全模块自由替换与扩展。其核心Cordis内核实现动态插件管理,赋能Agent自进化。已成GitHub史上增速最快开源项目(15w+ Star),标志着国内大模型从拼价格转向重架构与生态的新拐点。
1344 6
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!