测试工程师用 Claude :它修得了选择器,修不了你的需求理解

news2026/5/23 14:26:15
测试架构这行有个一直没解决的尴尬:开发一周能写完的功能,QA 写测试要追两周。 你越想把覆盖率补齐,这个口子张得越大。所以当 Claude Code 加上 Playwright 这套东西开始能自己写测试的时候, QA 圈子是真的盯着看。但我想先泼一句:它确实改变了一些事, 但改变的不是你想的那部分。这篇我就把半年用下来, 真省事的、被吹过头的、和压根没动的,分开说清楚。先看 QA 的时间都花哪了第一张图那三个数字,是这事的起点。回归测试吃掉 QA 差不多一半工时; 手写测试用例占了 IT 预算里近 40% 的重复劳动; 团队花在修选择器、改定位器上的时间能占到 sprint 的三到四成。这三件事的共同点很明显——重复、机械、按既定模式走。 凡是有这个特征的活,AI 工具都能啃。这也是为什么 QA 是最早被 AI 编码工具规模化盯上的工种之一,不是因为 QA 简单, 是因为 QA 的工作量里有一大块是已知模式的重复执行。但你注意这张图里没有什么:测试策略、风险评估、 这个版本到底放不放行。这些不在图里,因为这些不是重复劳动, 是判断。判断这部分,后面会说,AI 接不了。考虑到国内订阅Claude确实有点困难参考一下靠谱的网站claudemax.shopPlaywright 那三个 Agent,各管一段现在 QA 用 Claude 的主流方式,不是直接跟 Claude 聊天让它写测试, 而是 Claude Code 配 Playwright 官方那三个内置 Agent。 第二张图画的就是它们的分工。Planner实时探查你的应用,产出一份人能读的 Markdown 测试计划。 注意它的输出是计划不是代码。这一步你应该看一眼—— 它对 UI 结构理解得不错,但经常漏业务规则,因为业务规则不在 DOM 里。Generator把那份 Markdown 计划转成可执行的.spec.ts。 它有个我挺看重的特性:边写边对着运行中的应用验证选择器和断言, 不是凭空编 Playwright 的 API。早期的 AI 测试生成器最烦人的就是 幻觉出一个根本不存在的断言方法,Generator 这点改进是实在的。Healer跑测试套件,挂了就重放失败步骤、看当前 UI、定位等价的新元素、 给个补丁。这个争议最大,单独开一节讲。装这套 Agent 用 Playwright 的init-agents命令:​bash给项目生成三个 Agent 的定义文件npx playwright init-agents --loopclaude​--loop后面跟你用的 AI 工具。具体可选值和 flag 以 playwright.dev/docs/test-agents 的当前文档为准——这个 CLI 还在迭代, 我不想让你抄一个过时的参数。还有一条官方提醒值得记:每次升级 Playwright,这些 Agent 定义都要重新生成一遍, 因为新版会带新的工具和指令。VS Code 里要用这套 agentic 体验,需要 VS Code v1.105 以上 (那个版本去年 10 月 9 号发的),低于这个版本跑不起来。Healer 到底能修什么——这是全文最该看的一张图第三张图是我特意做的,因为自愈测试这个词被用得太飘了。微软自己的基准数据:Healer 在选择器型失败上大概 75% 出头的成功率。 听起来很美。但请把选择器型失败这五个字看清楚。测试失败有好几种。UI 改版了、按钮挪了位置、class 名变了—— 这类是选择器失效,Healer 能修四分之三左右,这是它的主场。但还有几类:等待没设对导致的竞态、真正的逻辑 bug、后端返回的数据变了。 后两类,Healer 基本不碰,成功率个位数。而且这件事你得想明白——逻辑 bug 导致的测试失败, 那个失败本来就是测试在干正事。它失败,是因为你的产品真的坏了。 你要是让 AI 把这种失败修绿,那不叫自愈,那叫掩盖事故。所以 Healer 的准确定位是:它省的是维护工时,不是测试创建, 更不是测试本身的价值判断。行业里有句话我觉得说得对—— 真正从 Agent 受益最大的,是那些原本花三四成 sprint 在修选择器上的团队。 如果你的 UI 很稳定、测试套件也不大,这套东西的搭建和管理成本 可能还不值当。配置上有个细节能省你不少麻烦。playwright.config.ts里:​typescript import { defineConfig } from playwright/test;export default defineConfig({ testDir: ./tests, // 先让 Playwright 自己重试,处理真·flaky,再轮到 Healer retries: 2, // JSON reporter 产出机器可读结果,Agent 能解析 reporter: [ [json, { outputFile: test-results/results.json }], [html], ], use: { baseURL: http://localhost:3000, trace: on-first-retry, }, });​retries: 2这行不是随便加的。它让 Playwright 先自己重试两次, 把真正的偶发性 flaky 过滤掉,再让 Healer 出手。 不加的话,Healer 会跑去修一个其实没坏、只是偶发抖了一下的测试, 越修越乱。JSON reporter 是给 Agent 用的——它要解析结构化结果 才知道哪些挂了、为什么挂。一段能跑的测试,顺便说说它生成的东西长什么样为了不空谈,放一段标准的 Playwright 测试,这是能直接跑的:​typescript import { test, expect } from playwright/test;test(用户用正确密码能登录进 dashboard, async ({ page }) { await page.goto(/login);// 用 role 和 label 定位,不用 CSS class——这是 2026 年的方向 await page.getByLabel(邮箱).fill(userexample.com); await page.getByLabel(密码).fill(correct-password); await page.getByRole(button, { name: 登录 }).click();// 断言跳转和页面内容 await expect(page).toHaveURL(/.*/dashboard/); await expect( page.getByRole(heading, { name: 欢迎回来 }) ).toBeVisible(); });​注意这里用的是getByRole、getByLabel,不是page.locator(.btn-primary)这种 CSS 选择器。这是有讲究的。2026 年 Playwright 测试的方向,是从data-testidcheckout-btn这种死绑 ID, 转向让 Agent 按语义找元素——页面底部那个绿色的、 写着完成购买的主按钮。这跟你叫一个真人 QA点提交按钮是一个道理, 他不会问你要 CSS 选择器,他看一眼页面就知道点哪个。基于 role 的定位天然更稳:你 UI 改版,class 名天天变, 但那个提交表单的按钮这个语义不变。Generator 生成的测试 如果用了一堆硬编码 CSS 选择器,下次部署就脆给你看。这里有个前提坑要说:如果你项目没有 Page Object Model, AI 生成的测试大概率会塞一堆硬编码选择器、内联测试数据、 和不靠谱的等待。解决办法很简单——喂一个你写好的 page object 样例给 Generator 当参考,它会照着你的项目结构来。 上下文这东西,你给多少,它还多少。把它接进 CI:用 CLI,别一上来就上 MCP第四张图讲的是个实操选择。Claude Code 连 Playwright 有两条路: Playwright CLI,或者 Playwright MCP。MCP 的方式是把可访问性树快照、有时候还有截图,传给 AI 让它看页面。 探索式测试、互动调试,这个顺手。但截图非常烧 token, 长会话会明显变慢、变贵。CLI 的方式 token 消耗大概是 MCP 的四分之一。TestDino 给自家产品 搭测试生成管线的时候,对比下来选了 CLI——他们公开的数字是 一段 20 行的 prompt,15 分钟产出 3 个 page object 加一个完整 spec。我的建议:结构化的、批量的测试生成管线,用 CLI; 需要 Claude 看着 UI 互动调试的场景,才上 MCP。别因为 MCP 听起来更高级就默认用它,长会话的账单会教你做人。社区里有个现成的 QA 技能包,neonwatty 那个qa-skills, 覆盖了桌面、移动、多用户流程,装法是:​bash先装 Playwright CLI(全局,一次性)npm install -g playwright/clilatest playwright-cli install再装 qa-skills 这个 Claude Code 技能包claude plugin marketplace add neonwatty/qa-skills claude plugin install qa-skillsneonwatty-qa​它有个/setup-profiles命令我觉得设计得好:它给每个用户角色 开一个有头浏览器,你手动登录(OAuth、2FA 这些它不碰,你自己来), 登录后的会话状态存到.playwright/profiles/。 配置文件.playwright/profiles.json提交进 git, 但登录凭证那些.playwright/profiles/*.json是 gitignore 掉的。这个分法是对的——配置该共享,凭证不该进仓库。 要是哪个工具让你把 storageState 直接 commit,你得警惕。它接得了什么,接不了什么用半年,我把它分三类。它干得好的:从已有代码生成单元测试和测试用例、 用 Playwright CLI 做探索式测试、根据最近代码改动做风险点的回归范围圈定、 给质量留痕(截图、trace 这些证据)。这些活的本质都是 对照已知的东西执行,它不累、不烦、不会因为是第八遍看同样的页面就走神。被吹过头的:自愈测试。Healer 修的是选择器型失败, 75% 那个数字只对这一类成立。把它说成测试套件能自己长期维护、 不用人管,是误导。它能减轻维护负担,做不到无人值守。它接不了的:测试策略——哪些场景值得测、风险在哪、 这个边界情况要不要覆盖。还有最关键的那个判断:这个版本到底能不能上线。这是 QA 这个岗位存在的理由, 也是 AI 给不了的东西。一份测试管理工具的指南里有句话说得很实在: 它是助手,不是替代;测试策略、通过与否的判断、放行的决定, 还是你的。我自己的体感,跟一份有六个月对照数据的项目复盘对得上: 速度提升几乎全来自样板代码——夹具、CI 脚本、page object 骨架。 涉及该怎么测、测到什么程度的判断,速度基本没变, 因为那部分本来就卡在人的脑子里。几条实在建议要我给还没上手的 QA 几条建议:先把 Page Object Model 立起来,再让 AI 生成测试。 没有 POM,它生成的东西就是一堆硬编码选择器,下次部署全脆。playwright.config.ts里retries: 2留着,让真·flaky 先被 重试过滤掉,别让 Healer 去修没坏的测试。生成出来的测试,优先用getByRole、getByLabel这种语义定位, 少用 CSS class 选择器。这不是洁癖,是 UI 一改版你就知道区别。逻辑 bug 导致的测试失败,别让任何 AI 去修绿。 那个失败是测试在报警,你要的是修产品,不是修测试。最后,把 AI 当成一个手很快但需要带的初级 QA。 它能把你从写夹具、补样板里捞出来,让你有时间去想 这个功能真正的风险在哪。这是好事。 但带新人你都知道——你可以让他干活,不能让他替你签放行。 那个名字得是你的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2638005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…