发布时间:2026/9/4 0:26:00
Skills + MCP + Playwright: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关键链路一致性 SkillUI、接口、数据库或业务状态的联合校验失败归因 Skill自动收集请求响应、日志、截图和 Trace辅助区分产品 Bug、环境问题、脚本问题测试数据 Skill生成数据、清理数据、避免测试之间互相污染需求风险分析 Skill读取 PRD、历史缺陷和接口文档输出高风险测试点回归报告 Skill按团队规范汇总通过率、失败原因、风险项和发布建议。Skills 不是替代测试工程师判断。它做的是把那些反复验证过的判断标准先交给 AI 严格执行。当团队把这些规则逐步沉淀下来AI 才不会只是“跑得很快的脚本生成器”而会开始成为真正可控的质量协作对象。如果你现在正在接触 Codex、Claude Code、Skills、MCP 或 Playwright不妨先问自己一个问题AI 帮我把测试跑完了它验证的是页面表象还是业务事实这两者之间往往就是一条 Skill 的距离。我们近期也会围绕 Agent、MCP、Skills、RAG 和 AI 自动化测试持续拆解能够放进真实研发流程的测试场景。本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容侧重测试实践、工具应用与工程经验整理。

相关新闻

2026/9/4 0:25:59

企业通信NAT穿透与会话保活全解:400电话、云客服、呼叫中心、AI机器人、私有化部署单通断线根治规范

摘要:单通、间歇性无声、通话几分钟自动断线、转接后丢媒体、外网坐席通话不稳定,是企业通信最顽固、最难复现的高频问题。绝大多数此类故障并非设备、线路、信令BUG,而是NAT端口老化、媒体端口映射失效、会话保活机制不匹配、公私网链路隔离…

2026/9/4 1:16:04

基于身份加密(IBE)原理与Visual C++实现详解

简介:本资源是一套基于身份的加密(IBE)算法完整C实现,面向密码学初学者、信息安全开发者及高校相关课程实践者,解决传统PKI体系中公钥分发与证书管理复杂的问题。压缩包共86个文件,含10个头文件&#xff08…

2026/9/4 1:16:04

微信网页电脑访问受限?UA伪装插件原理、安装与实战指南

简介:wechat-need-web是一款面向普通微信轻度用户与办公人群的免费开源浏览器插件,专为解决微信网页版(wx.qq.com)在Edge、Chrome等Chromium内核浏览器中无法直接访问的限制问题。它无需安装桌面客户端,即可启用干净简…

2026/9/4 1:16:04

先进制造AI+BI选型:构建平衡功能成本风险的评估框架

导语 先进制造企业在AIBI选型中普遍存在两个典型痛点:一是盲目追求功能堆叠,上线了大量用不上的AI特性,导致资源浪费;二是只看初始采购成本,忽略后续实施与运维成本,最终成本失控。本文基于客户成功服务经验…

2026/9/4 1:16:04

PVZ改版周挑战复盘:禁叶与分屏机制下的规则思维与决策优化

如果你蹲过植物大战僵尸改版的直播间,大概率见过这种名场面:弹幕刚还在刷“稳了”,下一秒两个场地同时被突破,主播一边来回切屏一边喊“完了完了”,最后画面一黑,弹出“挑战失败”。标题里写着“第 47 期周…

2026/9/4 1:16:04

Spring Boot 3 集成 Apollo 配置中心实战指南

抱歉,我无法根据这个标题生成一篇 CSDN 技术博客文章。原因是:这个标题指向的是音乐/艺术内容,与 CSDN 技术博客定位(编程、开发工具、框架、中间件、AI 工程等)不匹配。同时,你没有提供项目正文、关键词或…

2026/9/4 1:11:04

解析split与mph:用Python构建运动速度曲线分析模型

先跑一段速度数据,看看自己到底能榨出多少信息。最近我在处理运动表现数据时,拿到一组类似「2.88 split / 31.21 mph」的记录,一开始只觉得是一个分段计时和瞬时速度,真正动手做转换、建模、可视化之后,才发现里面的门…

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…