尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Web自动化测试Skill实战:从Playwright到AI Agent的完整设计指南

Web自动化测试Skill实战:从Playwright到AI Agent的完整设计指南 早上开工产品经理提了一个需求某个核心用户路径要改版回归测试必须覆盖旧流程和新流程最快下班前要结果。你打开项目想着又要写一遍 Playwright 脚本脑子里的第一个念头是——能不能让 AI 直接读懂页面、自动点一遍、然后把结果整理成人话。这就是 Web 自动化测试 Skill 正在切中的问题。最近在测试和 AI Agent 工具链里“Skill”这个词出现频率非常高。围绕它有一堆热搜Claude Code Skill、Codex Skill、OpenCode Skill、Agent Skill 和 MCP 有什么区别、Skill 怎么写……它很容易给人一种感觉好像只要挂上 SkillAI 就能自动替我干活了。但你真正去搭一个用于 Web 自动化测试的 Skill 时会发现它没有营销标题里说的那么玄。它真正解决的问题是把 Human Tester 脑子里那套“怎么测、从哪看、怎么判断、怎么汇报”的动作固化成 AI Agent 能理解的一段指令编排。它的价值不是“效率提高 100%”这种口号而是让测试过程从“每次重新沟通”变成“一套可复用的流程”。这篇文章我会从零开始拆解一个 Web 自动化测试 Skill 的完整设计思路、代码结构、输入输出边界、调试方法和落地时的坑。标题里那句“直接照抄”在你理解原理之前是不成立的理解之后你会发现它其实真的可以成为你工作台上的一个标准化测试技能。如果你想快速跳到自己需要的部分我会按这条链来写先搞清楚 Skill 在测试场景里解决什么再给出一个完整 Skill 的设计与实现然后讲 HTML 转 MD 这个关键前置步骤接着是断言、执行和批量策略最后是排查链路和长期维护。1. 先搞清楚 Skill 在 AI 测试里到底解决什么问题1.1 Skill 不是魔法它是把隐性的测试经验变成显式指令很多测试工程师第一次看到“Skill”的时候会把它理解成一个“AI 技能插件”觉得只要挂上就能让 AI 自动完成一切。这个理解不算错但会误导后面的实践方向。Skill 的底层是一套 Markdown 指令文件。它不会自动拥有魔法也不会自动连接你的测试环境。它做的事情是把你希望 AI Agent 按照什么方式去工作、去思考、去产出的规则写下来。AI Agent 在执行任务的时候会优先读取这套 Skill把它当作决策上下文的一部分。放到 Web 自动化测试这个场景你希望 AI 在打开一个页面之后先看什么你希望 AI 用哪种方式提取页面上的关键信息你希望 AI 在判断“页面是否正常”时使用什么标准你希望 AI 在发现问题时如何记录路径、截图和复现步骤你希望 AI 最终输出什么样的测试报告。这些在传统测试流程里是资深测试人员脑中的隐性经验。Skill 的作用就是让这些经验变成文字指令Agent 每次执行时都会先加载它。它不是提升 AI 的推理能力而是提升 AI 执行任务的稳定性。这是理解后面所有内容的基础。如果你把 Skill 当成了一个黑盒子那它一定会在某个项目里让你翻车如果你把它理解成“给 Agent 的操作手册”那么从设计到调试都会顺畅很多。1.2 Agent、Skill 与 MCP 的关系决定了你的配置方式Skill 经常和 Agent、MCP 一起出现。要搭一个可用的测试 Skill得先分清楚这三个概念。在一个典型的 AI Agent 工具链里Agent 是执行者它负责理解任务、调用工具、观察结果、决定下一步Skill 是 Agent 的“操作手册”它不给 Agent 新的工具而是告诉 Agent 在特定场景下应该用什么方式工作MCP 是 Agent 的“工具接口”它让 Agent 能真正连接外部系统比如浏览器、数据库、文件系统、测试框架。如果拿一个真实测试流程类比MCP 是 Agent 的双手负责操作浏览器、点击按钮、读取页面Skill 是测试主管的会议纪要写着“你拿到这个页面后应该先看标题再检查表单区再验证提交按钮最后输出报告”Agent 是那个接了任务、会自己安排干活顺序的人。所以你会发现一个 Web 自动化测试 Skill 不是孤立存在的。它背后至少需要一个能执行浏览器操作的 Agent 环境比如支持 Skill 的 AI 编程工具一个能操作浏览器的 MCP 服务或命令行工具Playwright、Puppeteer 等一套完整的 Skill 指令文件用于约束 Agent 的执行步骤和输出格式。有了大框架后面的实现才不会跑偏。2. 设计一个 Web 自动化测试 Skill从输入到输出的完整链路2.1 Skill 目录结构不能只堆一个 md 文件在 Claude Code、Codex、OpenCode 这类支持 Skill 的工具里一个 Skill 通常是一个文件夹里面至少包含两个核心部分一份SKILL.md主文件这是 Agent 会优先读取的指令描述当前 Skill 的职责、触发条件、工作流程、输入输出格式一份可执行的脚本、命令或配置模板这是实际跑测试的代码通常是一套 Playwright 脚本或调用浏览器 MCP 的步骤。我自己在做 Web 自动化测试 Skill 时通常用这样的目录结构web-test-skill/ ├── SKILL.md # Skill 主指令Agent 启动时必读 ├── scripts/ │ ├── html2md.py # HTML 转 Markdown 的处理器 │ ├── test_runner.py # 测试用例执行器 │ └── report_generator.md # 汇报格式模板 ├── templates/ │ ├── test_case.example.md │ └── bug_report.example.md └── config/ └── settings.json # 默认参数超时、重试次数、截图目录这里有一个关键认知Skill 的指令文件是给 Agent 看的但脚本是真实执行的。Agent 会根据 SKILL.md 里的流程决定什么时候调用脚本、以什么方式调用、拿到结果后该做什么。如果只写一个 md 文件没有配套脚本Agent 就只能在“动嘴”层面给你建议如果只写脚本但没有 SKILL.mdAgent 不知道什么时候该用也不知道怎么编排流程。两者缺一不可。2.2 SKILL.md 的核心内容触发条件、执行流程、输出格式一个可用的测试 SkillSKILL.md 至少要覆盖五块内容第一Skill 的职责声明。让 Agent 知道什么时候用这个 Skill什么时候不要用。比如name: web-ui-test-skill description: 适用于 Web 页面端到端测试、UI 回归验证、页面链接检查、表单流程模拟。 avoid: 不适用于接口性能测试、数据库数据迁移校验、逻辑单元测试。第二输入要求。让 Agent 知道跑一次测试前需要拿到哪些信息。比如required_inputs: - target_url: 被测页面地址 - test_cases_path: 测试用例文件路径支持 md 或 json - output_dir: 测试结果输出目录 optional_inputs: - include_screenshot: true - timeout_ms: 10000第三执行流程。这是整套 Skill 的核心。Agent 会按照这里的顺序逐步执行。例如1. 读取被测页面地址确认可访问。 2. 调用 html2md 脚本把当前页面 HTML 转成 Markdown。 3. 根据 Markdown 结构识别页面上的关键元素。 4. 加载测试用例文件逐条执行。 5. 每条用例执行结束后记录实际结果。 6. 所有用例结束后生成测试报告。注意这里不能只写“运行测试”这种空话。Agent 需要知道先做什么、后做什么、什么条件下停止、什么条件下继续。第四输出格式。这是很多新手最容易忽略的地方。如果你没有规定输出结构Agent 可能会给你一段自由发挥的文字或者一段很难直接黏贴到 Excel 的表格。建议在 SKILL.md 里规定output_format: - 报告必须包含用例编号、用例名称、预期结果、实际结果、状态通过/失败/阻塞、失败原因、截图路径。 - 失败用例必须附上页面 Markdown 片段和截图。第五注意事项和兜底逻辑。比如- 如果页面加载超时不要直接判定失败先重试一次。 - 如果页面结构发生变化导致元素找不到先记录 HTML 片段再报告。 - 所有截图和日志统一写入 output_dir。这五块内容写清楚之后Skill 的框架就立住了。2.3 从“给 AI 写指令”到“给 AI 写可执行测试”中间隔着代码SKILL.md 写完只是整个 Skill 的 20%。你还需要配套的真实测试代码。因为 Agent 可以理解指令但它没有脑内的“浏览器”。它需要通过一个可执行脚本去操作页面再把页面结果拿回来做分析。一个最小可用的 Playwright 测试脚本常见写法如下。这里给的是结构示例不是让你原封不动复制你落地时要根据你的页面结构和被测功能调整。# scripts/test_runner.py import asyncio import json from pathlib import Path from playwright.async_api import async_playwright async def run_test_case(page, case): result { case_id: case.get(id), case_name: case.get(name), expected: case.get(expected), actual: , status: failed, } try: await page.goto(case[url], wait_untilnetworkidle, timeout15000) # 模拟用户操作点击、输入、提交 for action in case.get(actions, []): if action[type] click: await page.click(action[selector]) elif action[type] fill: await page.fill(action[selector], action[value]) elif action[type] wait: await page.wait_for_selector( action[selector], timeout5000 ) # 断言页面里是否出现预期文本或是否跳转到预期 URL if case.get(assert_text): content await page.inner_text(body) result[actual] f文本 {case[assert_text]} 出现 if case[assert_text] in content else 关键文本未出现 result[status] passed if case[assert_text] in content else failed else: result[status] passed result[actual] 操作完成未配置文本断言 except Exception as exc: result[actual] f执行异常: {exc} result[status] blocked return result async def main(case_file: str, output_dir: str): cases json.loads(Path(case_file).read_text(encodingutf-8)) async with async_playwright() as p: browser await p.chromium.launch(headlessTrue) page await browser.new_page() page.set_default_timeout(10000) results [] for case in cases: r await run_test_case(page, case) results.append(r) await browser.close() Path(output_dir).mkdir(parentsTrue, exist_okTrue) Path(output_dir, report.json).write_text( json.dumps(results, ensure_asciiFalse, indent2), encodingutf-8 ) print(json.dumps(results, ensure_asciiFalse, indent2)) if __name__ __main__: asyncio.run(main(test_cases.json, ./report))这段代码解决的问题是把测试用例文件里的“步骤”翻译成浏览器里的真实操作。你不需要把它理解成多么精妙的代码它只是整个 Skill 的执行底座。但这里有一个非常重要的事实AI Agent 能不能高效地写代码、改代码不是这个 Skill 的核心。核心是你的测试用例文件设计得够不够好以及 SKILL.md 是否能让 Agent 在拿到“页面 Markdown”后快速定位到问题。3. HTML 转 Markdown这个 Skill 最重要的前置步骤3.1 为什么 AI 不直接读 HTML而要转成 Markdown热搜词里既有“html转为md”又有“playwright ai自动化测试”这两个词放在一起其实就是 AI 测试 Skill 的一个真实工作链路先用 Playwright 控制浏览器拿到页面 HTML然后转成 Markdown再交给 Agent 分析。为什么不直接读 HTML因为 HTML 里包含了大量与业务判断无关的结构噪点CSS 类名、内联样式、div嵌套、script标签、各种属性、注释……这些内容对浏览器来说是样式和脚本定义对 AI Agent 来说却是干扰信息。而 Markdown 是一种纯粹的语义化文本。它把标题、列表、链接、表格、正文直接表达出来。AI Agent 看到 Markdown相当于看到了一张“去掉装修后的页面骨架图”能更快理解页面结构也更容易判断“这个按钮在哪个区块”“这个页面的树形结构长什么样”“哪个链接失效了”。用一个生活里的类比HTML 是装修完成的房子Markdown 是房子的户型图。测试人员要判断“客厅是不是有插座”你不需要看墙漆颜色和灯饰品牌你只需要看到户型结构。3.2 设计 HTML 转 MD 处理器保留什么、过滤什么写一个 HTML 转 Markdown 的脚本很容易但要做好必须想清楚两个问题保留什么语义过滤什么噪声。我在做这一层时通常会按这样的策略来处理保留内容所有可见文本包括标题、段落、列表、表格、按钮文字、链接文本链接的href用来检查链接有效性alt属性用来识别图片是否缺失表单控件的name、type、placeholder用来分析表单结构页面主区域的主要语义标签main,nav,article,section。过滤内容script、style标签内的代码所有class、id、style属性可以少量保留用于元素定位但正常情况不需要SVG 和图标字体细节评论节点、空节点、隐藏节点。一个简化版 HTML 转 Markdown 脚本可以用 Python 写# scripts/html2md.py import re import sys from html.parser import HTMLParser class HTMLToMarkdown(HTMLParser): def __init__(self): super().__init__() self.parts [] self.in_script False self.in_style False def handle_starttag(self, tag, attrs): if tag in (script, style): if tag script: self.in_script True if tag style: self.in_style True return attrs_dict dict(attrs) if tag in (h1, h2, h3, h4): level int(tag[1]) self.parts.append(\n # * level ) elif tag p: self.parts.append(\n\n) elif tag li: self.parts.append(\n- ) elif tag a: href attrs_dict.get(href, ) self.parts.append([) elif tag img: alt attrs_dict.get(alt, ) src attrs_dict.get(src, ) self.parts.append(f![{alt}]({src})) elif tag br: self.parts.append(\n) elif tag table: self.parts.append(\n\n) elif tag tr: self.parts.append(\n|) elif tag in (td, th): self.parts.append( ) def handle_endtag(self, tag): if tag a: self.parts.append(]) elif tag in (td, th): self.parts.append( |) elif tag table: self.parts.append(\n\n) elif tag script: self.in_script False elif tag style: self.in_style False def handle_data(self, data): if self.in_script or self.in_style: return text data.strip() if text: self.parts.append(text) def convert(html_text: str) - str: parser HTMLToMarkdown() parser.feed(html_text) return .join(parser.parts) if __name__ __main__: html_text sys.stdin.read() print(convert(html_text))这个脚本的重点不是代码本身而是让你建立一个认知HTML 转 MD 这一步是整个 AI 测试 Skill 的“信息降噪层”。Agent 后面所有的判断都基于这份 Markdown 展开。Markdown 干净Agent 的分析就准确Markdown 杂乱Agent 的分析就容易跑偏。3.3 页面结构变了怎么办Markdown 是调试时的“眼睛”在实际使用中最常遇到的场景是测试用例里的选择器失效了或者页面改版了脚本报错找不到元素。这时候Markdown 的价值就体现出来了。你不需要重新打开浏览器去看 HTML 源码只需要把当前页面的 Markdown 生成出来看一遍目标按钮是否还存在按钮区域是否换了层级页面是否被重定向到了其他地址是否有登录墙、广告弹窗、Cookie 确认层遮挡了主体内容。有了 Markdown你能更快判断是页面真的坏了还是选择器过时了还是 AI 拿到的页面上下文不完整。这是这个 Skill 在调试阶段最有价值的环节之一。4. 用例设计与执行断言从“跑一下”到“能发现问题”4.1 测试用例文件不是给 AI 看的是给整个流程看的标准很多人在搭 Skill 时会在 SKILL.md 里写一大堆“AI 应该怎么判断”但测试用例本身却很薄弱。这是一个误区。测试用例文件是整个 Skill 的输入标准。它可以被 AI 读取也可以被测试人员手工维护。推荐使用 JSON 或 Markdown 文件存放用例因为这两种格式都是 AI 和人类都能快速理解的。一条最小可用用例通常包括{ id: TC001, name: 登录表单-空密码提交提示, url: https://example.com/login, actions: [ { type: fill, selector: #username, value: test_user }, { type: click, selector: #submit } ], assert_text: 请输入密码, expected: 提交后出现密码必填提示 }这个结构非常清楚去哪个页面执行什么操作操作之后页面应该出现什么文本。AI 只需要按动作执行然后检查断言文本是否存在就能给出结论。但如果用例只有这一层它只能验证“冒烟级”功能。要真正用于回归测试你需要给用例加上更多的边界条件。比如页面加载完整性的断言表单校验逻辑的断言接口响应时间的间接判断错误场景的用例用户不存在、密码错误、验证码过期。这些不是 Skill 的问题而是测试设计的问题。Skill 只是把你的用例翻译成可执行动作。4.2 断言策略宁可多记录不要急着判断失败到这里我要提出一个重要的实操判断AI 测试 Skill 在用例执行时不该把“文本是否出现”作为唯一通过标准。它更应该做的是“把页面状态完整记录下来”然后基于记录做判断。为什么因为 AI Agent 不像传统自动化测试脚本那样只能处理固定断言。它可以理解上下文。所以更合理的做法是执行用例动作获取目标区域的 Markdown 片段把页面状态、元素可见性、目标文本是否出现、截图路径全部记录进结果让 Agent 或测试人员基于完整记录做最终判定。这意味着你的测试结果文件不能只有“通过/失败”两个字段。它应该包含{ case_id: TC001, status: failed, page_markdown_snippet: 页面主体区域 Markdown 片段, screenshot_path: ./report/screenshots/TC001.png, observed_text: 登录失败, expected_text: 请输入密码, reason: 页面弹出了登录失败提示但未出现密码必填提示 }这样输出的报告不是在告诉你“挂了”而是在告诉你“哪里和预期不一样”。这个差别非常重要。4.3 如何让 AI 在异常时给出可参考的失败原因这里有一个点值得展开失败原因的生成。传统自动化测试里失败通常只是“断言失败”或“元素超时”。但在 AI Skill 里你完全可以要求 Agent 分析失败原因。具体做法是在 SKILL.md 里加一段兜底规则当用例执行失败时 1. 先截取当前页面主体的 Markdown。 2. 检查是否出现登录跳转、弹窗遮挡、404、500 等常见状态。 3. 检查目标元素是否存在于 Markdown 中。如果不在记录为“页面结构变化”。 4. 检查目标文本是否存在于 Markdown 中。如果不在记录为“内容断言失败”。 5. 输出失败原因时必须给出“你看到了什么”和“你期待看到什么”两个部分。一旦你把这个逻辑写进 SkillAgent 的失败报告就会从“执行失败”变成“进入登录页后未找到提交按钮页面结构可能已改版”。这种报告测试人员拿过来就能定位。这也是标题里“效率提高”真实发生的地方不是 AI 跑得快而是调试成本降下来了。5. 从单条用例跑通到批量回归分步推进不要一口吃成胖子5.1 先跑通一条用例再逐步扩大范围把 Skill 接入真实项目时我见过最多的翻车方式是一上来就把几十条用例丢进去批量执行然后被各种“失败”淹没。正确推进顺序应该是第一步只选一条最简单的用例跑通整条链路。确认 Agent 能读到 SKILL.md、能调用脚本、能打开页面、能输出结果。第二步选取一条包含表单操作和断言逻辑的用例验证动作链路是否稳定。第三步选取一条预期失败的用例验证失败时是否产出了有效记录Markdown、截图、原因。第四步把用例数量扩大到 5 到 10 条跑一轮小批量回归观察稳定性。第五步再逐步扩大到完整回归集。这个顺序不仅是为了减少踩坑也是为了建立信心。如果你一上来就批量跑一旦出现问题你会发现很难判断问题出在哪个环节是 Skill 配置不对还是用例写的不对还是页面环境不稳定按照“最小可用链路”原则先单条验证再小批量验证然后才做全量回归这是更稳妥的路径。5.2 批量执行时的资源管理并发、超时、重试当用例数量多起来之后你可能会考虑并行执行来提高效率。这里要特别提醒Playwright 的 headless 浏览器支持并发但每个浏览器实例都会占用内存和 CPU如果被测页面有比较重的资源同时开 5 个浏览器实例可能就会拖垮本地环境并发数、超时时间、重试次数应当先在小范围内验证再逐步调大。常用参数参考{ timeout_ms: 10000, retry_count: 1, concurrency: 3, screenshot_on_failure: true, output_dir: ./report }这些参数放在config/settings.json里SKILL.md 中明确要求 Agent 在批量执行前先读取这个文件。这里的核心判断是批量执行不是 Skill 的难点资源控制才是。如果你没有给 Agent 设置并发上限它可能会因为一次性开太多浏览器而崩溃。控制并发、增加超时、保留重试是批量回归稳定性的三根支柱。6. 调试与排查当 Skill 不按预期工作时按什么顺序查6.1 先看现象再分层定位Skill 不按预期工作时最常见的现象有AI 没按 SKILL.md 的流程走、脚本报错、页面打不开、断言判定错误、输出报告格式不对。如果出现这些问题不要急着改代码也不要去调整 SKILL.md 的措辞。先按下面这个顺序排查第一步检查 Skill 是否被加载。打开 Agent 的调试信息确认它是否读取了目标 SKILL.md。很多工具里Agent 只有在明确关联或满足触发条件时才会加载 Skill。如果你把 Skill 文件名写得和实际目录不一致它可能根本不会加载。第二步检查输入。被测 URL 是否可访问测试用例文件格式是否正确JSON 是否有语法错误Markdown 路径是否存在。第三步检查依赖环境。Playwright 是否已安装浏览器是否已下载Python 依赖版本是否符合脚本要求当前系统是否缺少运行时库。第四步检查执行日志。看看脚本是否真的被调用了页面是否真的打开了选择器是否真的匹配到元素。这一步会暴露 80% 的“假失败”。第五步检查输出断言。是页面真的没出现预期文本还是 Agent 读取的页面内容不完整是页面结构确实变了还是 HTML 转 Markdown 的过滤器把关键文本过滤掉了6.2 常见坑Skill 没有按你的想法“触发”实操里最容易忽略的问题是“Skill 没有触发”这个隐患。很多支持 Skill 的 AI 工具默认情况下并不会主动加载所有 Skill。它可能会通过#引用、目录扫描、关键词匹配等方式来决定是否加载。如果你在 SKILL.md 里没有写清楚“什么条件下调用这个 Skill”Agent 可能把你的指令当成一份普通文档而不是一套操作流程。所以SKILL.md 的description字段一定要写清楚使用场景并配上至少一个典型的触发示例当用户的测试任务包含“UI 回归”“页面点击验证”“表单流程检查”等词时必须加载本 Skill。这样能最大程度避免“指令写了但 AI 没用上”的情况。6.3 把“工具正常”和“功能正确”分开判断最后一个排查思维很重要一个测试 Skill 跑完结果全是通过不代表你的页面真的没问题。可能的情况是你的用例太简单只验证了“页面能打开”你的断言文本选得太宽泛比如页面顶部始终存在的标题出现就算通过你的脚本点击了按钮但没验证后续弹层或跳转结果HTML 转 Markdown 时把关键动态内容过滤掉了AI 根本没看到更新后的状态。所以在设计 Skill 时要刻意安排一道检查步骤每个用例的断言必须能体现“这次操作确实产生了效果”而不是“页面加载出来了”。7. 适用边界与长期维护这个 Skill 能做什么不能做什么7.1 它适合什么不适合什么Web 自动化测试 Skill 最适合的场景是那些人类测试员已经摸清规则、重复性高、判断标准相对清晰的测试任务核心用户路径的冒烟回归页面关键元素完整性检查表单校验规则的自动化模拟页面链接有效性检查多页面结构信息抽取。它不太适合的场景包括需要大量复杂业务状态准备的端到端测试比如从下单到支付再到退款需要读取复杂动态数据的图表校验对图片像素级比对、视觉回归的强校验涉及多系统、多账号、复杂权限组合的集成测试。如果你要把这类复杂场景也交给 Skill那你要做的不只是写一个 Skill而是要先搭一套完整的测试平台把数据准备、账号体系、环境隔离、测试报告存储全部打通。Skill 只是这中间的一小部分。7.2 长期使用前的工程化检查清单如果你决定把某个 Web 测试 Skill 作为团队里的长期工具建议在投入使用前检查以下几项有没有统一的用例维护入口前端同学和后端同学都会改这个用例文件吗有没有失败用例的手机钉钉或邮件的告警机制截图和日志是否统一归档命名是否规范测试环境是否稳定会不会因为环境问题导致大量误报用例文件是否纳入了版本管理改动是否有记录SKILL.md 是否有版本说明改过之后是否有测试验证。这些看起来不是 Skill 本身的东西但它们决定了你能否长期依赖这套方案。Skill 写得好只是起点工程化能力决定了它能走多远。7.3 它对测试工程师的真正改变我想最后聊几句这个 Skill 对测试岗位长期的影响。一方面它确实让很多常规检查变得更省力。原来需要人工打开页面、逐个点击、记录结果的工作现在可以交给 AI Agent 去执行测试人员把更多精力花在设计用例和判断边界上。另一方面它也在改变“自动化测试”的门槛。过去你写 Playwright 脚本至少要懂选择器、等待策略、浏览器 API。现在有 Skill 之后你能用自然语言描述测试步骤AI 帮你搭脚本骨架你再针对结果做调优。这意味着基础的 UI 自动化测试能力正在从“懂代码的测试开发”下沉到“能描述清楚业务场景的测试工程师”。但这里要克制一点。AI 能帮你写脚本、帮你分析页面结构、帮你出报告但它不能替你想清楚“哪些场景值得测”也不能替你做“这个产品改版后核心用户路径是不是变了”的产品判断。Skill 可以提高“执行效率”但它不会替你理解业务。这也是我觉得 Web 自动化测试 Skill 最有意思的地方它的上限不取决于工具而取决于写它的人到底有多懂自己的被测系统。你越理解业务、越知道哪些环节会出问题、越能把判断逻辑说清楚你的 Skill 就越强。如果你现在正好在做相关尝试我建议你的下一步很简单先挑一条你平时回归最频繁的用例按上面 SKILL.md 的结构写一个最小可用 Skill挂到你的 Agent 工具里跑通第一条链路。不要想着一口气覆盖所有场景先让一个流程完整跑起来再从这条链路里去加断言、加截图、加批量策略。跑通之后你会真正理解它到底能帮你多少。
返回列表