AI×测试的全链路方法论(来源浏览器收藏 237 篇中的测试主题簇)。工具对比见 AI浏览器自动化框架对比,Passmark 实测见 AI浏览器回归测试Passmark实测,Skill 设计见 AI技能Skill设计与迭代。

四方案选型(Raina 实测排序)

① playwright-cli + Skills 首推(快、省 token、自带验证码识别/元素自愈)② Playwright+MCP 生成标准代码(可维护性强)③ Midscene 视觉驱动(补充)④ MCP 无代码(仅适合 demo)。企业级对照:转转 QA 落地数据——首次编写 30-60min→5-10min(↓80%)、调试定位 ↓85%、维护 ↓90%。

用例生成方法

  • 通用提示词模板:【角色】资深测试工程师(精通等价类/边界值/场景法/异常测试)+【任务】覆盖全部功能点/正常/异常/边界+【输出】Markdown 表格,每功能点必含正常+至少 2 条异常/边界;ISTQB 六法扩写(等价类/边界值/决策表/状态转换/错误猜测/组合);
  • 分阶段生成(原型→需求文档→拆模块→按目的出用例):唯一人工审核点 5-10 分钟;10 分钟 100 用例;
  • 四步流水线(Cursor+Skill 批量产脚本):意图提炼→能力映射(json→action)→逐步编码即时校验→整体拼装;配套分层指令知识库(原子操作规格书/逻辑依赖图/意图范例库)+ NEED_DETECT 机制(拿不到定位器时本地抓全量控件清洗成”选择题”给 LLM);
  • 数据扩写:唯一字段带时间戳后缀 _qta 便于清理;断言四类(可见性/内容/布局/业务逻辑)×密度三级;证据约束防幻觉——只对截图里明确可见的元素生成断言,动态数值只验格式与范围不猜具体值。

执行经验(最稀缺的一线教训)

  • AI”模拟执行”四翻车:没跑就说通过/跑错相似页面/擅自跳步/断言宽容(len>0 对应预期 10 条)——治法=Skill 硬约束+证据门禁(每步截图/操作记录/实际数据,没有证据的通过一律打回);
  • 139 条 AI 全过但人工审出 6 个用例设计盲区(只验路径没验数据状态/异常场景不系统/PRD 提取遗漏)——AI 执行对了不代表用例对了;
  • Playwright 8 条黄金法则:getByRole/getByText 优先禁绑 class;禁 waitForTimeout;web-first 断言(expect(locator).toHaveText() 自带重试);用例隔离;baseURL 进配置;retries: CI?2:0 + trace on-first-retry;fixture 优先;只 mock 外部依赖;CI 必跑 npx playwright install chromium;
  • codegen 是”草稿不是规格”:先 agent browser 探路(摸清弹窗顺序/失焦需求/业务断言点)→ 沉淀 helper(dismissBlockingDialogs 等)→ spec 只写业务编排;业务断言优先于页面断言;
  • Playwright Test Agents(官方):npx playwright init-agents --loop=claude|vscode|opencode 生成 Planner/Generator/Healer 三 Agent;Healer 的安全边界——真实功能 Bug 标记 skip 而非强制修绿。

自愈定位器谱系(由轻到重)

  1. 双定位器 locator.or_() + auto_heal 装饰器 + 元素健康监控告警;
  2. 本地语义 embedding:DOM 快照+周围文本 → 本地 ONNX mxbai-embed-large 相似度排序(120ms/次离线),消除 95% 断裂;回写不直接改仓库(建议 PR 人工确认)+ 熔断(连续 3 次匹配到不同元素即停);
  3. LLM 候选定位器-验证-替换:3-5 候选逐个 wait_for(2000) 真实验证才替换,时间戳备份+审计日志;三档安全模式(观测→半自动→自动);
  4. 视觉多模态诊断:失败自动采三件套(截图+DOM+日志)→多模态模型输出失败类型+根因+修复代码,全链路 36.62s/约 1 分钱;图片必须放 content 数组第一位;
  5. 货拉拉企业级(18000 脚本):五步诊断法(设备→框架→弹窗→VLM 页面状态→控件画像基线比对);控件画像=数字身份证(“隐私协议底部的同意按钮”而非 id)作为结构化先验防大模型过度泛化;弹窗按 4 类语义泛化处理未见变体;步骤级重试保留业务状态;通过率 80%→90%+、省 40% 维护人力;
  • 通用设计原则:候选必须真实验证后才替换;备份/审计/回滚;最大重试+熔断;多相似元素放弃自动决策;功能 bug 不许被自愈”修绿”。

AI Agent 测试金字塔(测 Agent 本身时)

四层:①确定性基石(Mock LLM 测非 AI 逻辑)②录制会话 Fixture(断言”交互行为序列”而非输出文本,入版本控制)③概率化性能(成功率跑数十次按统计显著性判回归,接受 95%±3%)④LLM-as-judge(多维评分+多数投票+定期人工校准)。常规 CI 全用 Mock(毫秒级),真实 LLM 每周基准。

开源测试平台横评

WHartTest(Django+LangGraph,导 Excel/MeterSphere);TestHub(Selenium+Playwright 双引擎 + 元素库 + Browser-use AI 模式 + GIF 回放);芒果平台(Docker 10 容器,MCP 白名单必须显式配 hosts);N-Tester(多层兜底执行链:playwright-mcp→本地 MCP→playwright API→pytest);Maestro(YAML 免编译,Flutter 一等公民:按实际像素验证、零依赖测编译后 APK)。

增补:Prompt 库与实现级细节(二次提炼 2026-09-19)

  • 自愈修复 prompt 模板(DeepSeek,可直接抄):“你是精通 Playwright 的自动化测试专家。失效选择器:{failed_selector};当前页面片段:{dom_snippet}。生成 3 个候选稳定定位器(按优先级),优先语义化或文本定位器,返回 JSON 数组,不要输出任何解释文字。“配套容错:不返回 JSON 时 re.search(r"\[.*\]", content, re.S) 提取再 loads;
  • 自愈代码生成约束:只生成单条替换代码(禁 try-catch/循环)、优先级 data-testid>id>唯一类名>xpath、第 N 次尝试换不同策略;返回 JSON {code/reasoning/confidence/strategy},temperature 0.3;失败行定位双路:堆栈正则 /:(\d+):\d+/ 取行号 → 失败则从错误信息提取引号内选择器反查代码行;lines.slice(failureLine) 续跑剩余代码(修复后不从头重跑);
  • 错误分类正则库(7 类):selector 类 /waiting for locator .* to be visible/i、/no node found for selector/i;timing /timeout/i;network /net::ERR_…/、/page crash/i 等;errorMessage+stackTrace 拼接 toLowerCase 逐模式 test;
  • 备份替换实现:备份名 {basename}.{UTC时间戳}.bak;替换正则只动引号内精确选择器字符串;subn 计数 n=0 删备份返回 False;审计日志 JSONL 含 DeepSeek 原始响应;heal 后 pytest.skip 而非硬绿——“功能 bug 不许修绿”的代码落点;
  • Playwright 万能母版提示词(10 条硬要求):复用现有配置否则补最小可运行结构/输出完整 spec 文件/关键步骤中文注释/定位优先 data-testid-getByRole/基础断言五项(标题/URL/核心元素可见/无报错文案/主内容渲染)/兼容跳转与 popup/账密从 env 读/无法访问也生成”可运行模板”集中标 TODO/告知运行命令/“不要只给思路,要直接给完整代码”;配 25 个统一占位符({{BASE_URL}}/{{SUCCESS_TEXT}}…)与 4 场景模板;防幻觉规则:“验证码/短信码预留 TODO 不要瞎编""登录成功顺便保存 storageState”;
  • Helper 层四段可抄代码(页面”脾气”封装):假 Tab 用 el.evaluate(el => el.click()) 点叶节点;fillAndBlur fill 后 keyboard.press('Tab') 手动失焦(fill 不触发计算);多同名按钮按 boundingBox().width > 200 过滤大按钮;弹窗清理统一 isVisible({timeout:2000}).catch(() => false) 容错;
  • 执行闭环量化补全:200+ 用例三轮修复后可自动化覆盖率 100%(占全部 93.9%,6.1% 必须人工:硬件/物理操作/视觉感受);首轮 50 条通过率仅 70% 出头(认证过期→AI 自写动态登录模块、选择器错→AI 读前端源码修正);人工审核 6 条清单:截图日志有无/断言对准预期/跳步有无理由/页面与用例一致/失败三分类(功能 bug 提缺陷/脚本问题改脚本/环境问题等恢复)/对应处理方式;skip 高发先查知识库——真实案例:知识库只写”有增删改按钮”没写”只有已停用才能删除”,AI 无法判断只能 skip;
  • 转转 6 维完整提效表:首次编写↓80%/调试↓85%/维护↓90%/失败复盘↓85%/多端复用↓50% 代码量/协作门槛降(PM/QA 可参与);独有方法论:“录制→开发→回放→验证”闭环——编码前录基准快照,开发后回放检测变更对关联页面影响,把 UI 自动化用于开发自测;踩坑 FAQ:<a class="ant-btn"> 是链接用 getByRole(‘link’);Drawer≠Modal 用 .ant-drawer-title 锚点;
  • 货拉拉补全:基线采集工具链 adb/tidevice/hdc + PaddleOCR + Appium 控件树;token 三板斧=截图压缩/裁状态栏导航栏/控件树清洗;三层一致性验证(语义/位置拓扑/DOM 关键路径);修复两策略(选择器优化 vs 重构);325 高频脚本先落地(非 18000 全量);
  • 独立新主题四件:①Allure 闭环(Skill 管”写好”:@allure.epic/step+attach 请求响应附件;MCP 管”读好”:get_allure_report 转 JSON 喂 AI;改完必重跑防”修了 A 坏了 B”)②test-plan Skill(7 必填节+占位符 [请补充:xxx]+双模式生成/评审,“PRD 定做什么→Design 怎么做→Test Plan 定怎么验”)③jmx-test-generator(API 文档→.jmx+JMX-EXPLAIN.md 设计意图说明书双产物模式;路径禁中文)④API 自愈(端点迁移自动改写/schema 变更适配,AI 挂了降级规则式修复;开源 String-Gaurav/self-healing-framework);
  • 企业成本账:2 高级工程师 6 周搭建约 8 万,GPT-4 月 API 800-1000(未限 token 跑出 1500),回本约 3 个月;控费三板斧 max_tokens=2000/HTML 片段只传前 1500 字符/简单任务降级 GPT-3.5;效果:120 用例 4 小时 80% 直接可用、失效定位器修复 76%、失败分析 15→5 分钟。

增补:行业纵览与终局判断(2026-09-20 横纵分析报告)

  • 2026 秋行业共识一句话:“AI 在编译期,确定性在运行期”——AI 负责生成/修复/探索测试,进 CI 门禁的仍是固化确定性代码。45 倍 token 成本差与 agentic flaky 把”AI 直测进 CI”挡在门外(前沿 agent 真实成功率在中等任务仅约 18%,榜面分被质疑注水);
  • 纯 AI 直测的三块永久阵地:发布前冒烟(低频高价值容忍慢)、探索性测试(WebProber 论文:agent 在 120 个真实网站找到 29 个传统工具漏掉的问题,“不知疲倦的初级测试员”是净增益)、线上监控——恰好是传统脚本自动化三十年没啃下的硬骨头。AI 直测的历史使命可能不是取代 Playwright,而是接手它从未拿下的土地;
  • 门禁渗透三条件(3-5 年内有据可依的推测):可靠性真实 95%+ 且失败可解释、成本降一个数量级(45 倍→5 倍内,靠模型降价+缓存+只对失败用例启用 agent)、证据链可审计;
  • 分层用兵答案(现在该不该用):核心回归用 Playwright 确定性脚本守门禁;直测 agent(Passmark/Midscene 层)做冒烟/探索/改版期自动修复;managed 服务兜底无人力的部分;对”运行时 AI 零维护进 CI”的供应商保持第一波时代传下来的警惕。修订是单向的:AI 的地盘只会比现在大;
  • 权力结构第四次迁移:标准组织→平台公司→模型厂→开发工具链官方(微软 Test Agents/谷歌 DevTools MCP 把通用能力公有化)。创业公司只剩三类活路:官方不做的脏活(托管/维护闭环/人审)、垂直深潜、成本套利(开源引擎+廉价模型);
  • 用户真话三组矛盾:“省下的维护费”vs”多出的审校工”(约 60% AI 生成用例需人工微调);“演示惊艳”vs”长期信任难”(前 30 天与第 300 天的 NPS 是两个物种);“管理层要 AI”vs”一线要确定”;
  • 结构性真空:西方 SaaS 定价($499-2500/月)对人民币市场过劝退线,Midscene+国产多模态把直测边际成本打到近零——中国+出海中小企业交叉带无强势玩家占位,是全赛道最显眼的空位。

增补:判断点 Jev 化(#804 Raina 实践,2026-10-04)

保留 Playwright + Skill 主体,只把”做判断”的环节交给 Jev(70~500ms/$0.042 每百万输入),改造两个 Skill:

  • 探索 Skill:snapshot+任务目标+历史步骤交给 Jev,判断下一步点哪个控件、计划是否覆盖主路径、locator 是否有稳定性风险——“多个相似按钮点哪个”本质是判断题不是推理题;
  • 修复 Skill 前置失败原因判断(防过度修复的两个问题:明明等待不足却把 locator 和断言都改了;原因没判清修复就带猜测):Jev 先分流五类——locator 失效 / 等待不足 / 断言对象不符 / 测试数据问题 / 权限与会话——再按类修复;技术失败(可修脚本)vs 业务失败(账号无权限/数据状态不对/环境不稳)必须分开,业务问题强行改代码会掩盖真实问题;
  • 纪律:修复循环不无限重复,连续多次失败转人工看 trace/截图/日志;JEV 定位是”判断节点”的效率与稳定性,不替代测试设计,也不替代环境治理(业务规则不清、数据不可控、环境不可用,接判断模型无解);
  • 无 Key 链路验证:JEV_BACKEND=mock 先跑通工程结构再接真模型(jev-use doctor)。

与”AI 在编译期,确定性在运行期”共识的关系:这是它的轻量版落地——判断环节用专用小模型固化,执行环节仍是确定性代码。

增补:e2e 框架——AI 步骤录制回放(#816/#823,2026-10-25)

e2e(TesterArmy,Apache-2.0、100% TypeScript,npm 包名就叫 e2e):建仓 2026-07-22,10 月第一周爆发——10-01 晚 549 star → 10-07 早 6790(33 小时 +2181,单日 1500+,登顶 GitHub Trending),10 月中 9000+ star、npm 周下载 23.8 万。热度根源是踩中了真痛点:“AI 把油门踩到底了,刹车系统还是十年前的”(代码产出 3 倍、上线事故也翻倍)。

核心设计——不是所有步骤都需要 AI,也不是所有步骤都适合写死选择器:

test('a member upgrades to Pro', async ({ app, agent, screen }) => {
  await app.open('/settings/billing');
  await agent.act('upgrade the workspace to the Pro plan');   // 模糊操作交给 agent
  await expect(screen.getByRole('status')).toContainText('Pro'); // 结果用硬断言钉死
});

杀手锏是缓存机制:“一次通过,永久回放”:

  • agent.act 步骤通过且后续检查确认后,路径录制进缓存;下次直接重放动作,零模型调用;
  • 回放不是机械重演:每条录制带一组锚点(该出现的节点出现、该消失的消失、回放期间确实发生了变化)——“录制的价值不在于记下来,而在于被验证过”;
  • 应用改版锚点对不上 → 失败即降级,控制权交还实时 agent 重新找路,绝不错答(“误报比漏报更可怕”);
  • 缓存键极细:项目/测试/目标/平台/引擎版本/策略版本/指令摘要/参数摘要/调用序号/agent 名称全在键内——过期录制只可能是未命中,不可能变错答;
  • 本质:token 花费与 UI 变化频率挂钩,而不是与测试运行频率挂钩——UI 不变跑一百次零成本。这是”AI 在编译期,确定性在运行期”共识迄今最精巧的工程化实现。

增补:AI Native 工程范式(极智嘉 MTSC2026 分享,#817,2026-10-25)

仓储机器人调度系统(RMS)端到端测试的 AI Native 重构(北京极智嘉汪磊磊,TesterHome 社区整理)——企业级实践,直接回应”AI 写脚本为什么不好用”:

  • AI 独自上阵过不去的三道关:领域认知空白(AI 只见接口不见异步回调驱动的调度逻辑)、知识散落无关联(API 规范/业务流程/表结构三处孤立推不出全貌)、用例落地极脆弱(单条 10+ 步骤,一个入参错误整条失败);
  • 真瓶颈从来不是脚本代码,而是工作流:上下文不连续(各 AI 技能无共享任务记忆)、知识不结构化、框架隐式成本高(AI 极易误用隐式上下文);
  • 核心公式:AI Native = 知识结构化 × 框架 DSL 化 × 流程编排化;
  • 行业演进四阶段:Prompt 工程(2022-23)→ 工具+RAG(2023-24)→ Agent 编排(2024-25)→ 领域落地(2025-,核心挑战是”专业领域可信可用”);“感知→推理→行动”的推理环节必须有领域知识支撑——行业缺失的不是更好的 RAG,而是完整的领域知识基础设施:知识图谱(世界模型)+约束体系(行为边界)+记忆系统(经验积累);
  • 三层支撑:中心化记忆层(session hook 启动加载、过程 Hook 自动归档知识点,跨会话积累团队踩坑/约定/决策);知识索引+框架 DSL 层(Biz 业务操作/Selector/Callback 异步等待/Teardown 状态恢复——DSL 写法约 4 行业务陈述,AI 只关注业务逻辑,清场能力内建);功能执行层(需求分析→用例设计→脚本生成→调试→报告);
  • L2 Graphify 文档图谱:业务文档知识图谱(模块关联/状态字段/约束),水位控制问题牵连 6 个模块可一次召回;
  • 6 段流水线断点续跑;Skill 自优化流程(值得单独记):收集需求→快照当前 SKILL 基线→优化版与基线版并行派发→Grader 子 Agent 打分聚合通过率。

同主题轻量版:#815 “先侦察再执行”(霍格沃兹):AI 写 UI 脚本翻车的根因是”没有先看页面就开始写”(编不存在的选择器/waitForTimeout 硬等,代码评审看不出来、CI 才暴露);解法是把定位规范、等待策略、踩过的坑从硬编码抽成 Agent 可读的 Skill,让它带着规范写脚本而不是从零猜(引子:800 条用例因开发统一 data-testid 命名一夜 237 条失败)。#825 Copilot 实战:27 条 E2E 从 28 小时压到 90 分钟,两个关键动作——手动登录后把 9222 远程调试端口的已有登录态挂载给 MCP(不让 AI 自己走登录)、指令写全要素(三场景覆盖/验证码走本地 Mock 不硬编码/定位器优先 getByRole·getByLabel 禁动态 class)。

增补:自建测试 Agent 助手(#834,2026-11-02)

霍格沃兹《用 Agent 做测试》系列第 ⑦ 篇——不再选平台,而是把测试能力固化进自己的 Agent:

  • 定位先行:先写一张能力清单(该会哪几件事),别一上来就写代码——“不是再造一个测试平台,是把能力固化进一个 Agent”;
  • 工具注册四要点:①一个工具函数+一段面向使用者视角的描述(描述给模型看,不是给开发者看);②四类工具:跑脚本(subprocess 解析 pytest 结果)/查库/调接口/看日志;③注册表一个字典起步,但把”执行”和”描述”分开;④工具描述质量决定模型”选得准不准”——最容易被跳过的细节;
  • 记忆:该记的是项目结构、环境信息、历史 bug、常用断言——沉淀成 Agent 能用的上下文(与本页知识库方案、#817 中心化记忆层同构);
  • 流程:用例→数据→脚本→判读串成流水线;
  • 三坑:工具权限(能跑什么要白名单)、幻觉调用(模型调用不存在的工具名)、上下文越用越长(定期压缩/摘要)。

原始素材(重点篇目)

  • 测试方法论长文
  • 执行一线经验
  • 货拉拉自愈
  • embedding 自愈
  • 测试金字塔
  • 接口自动化
  • 知识库方案
  • #804 JEV 判断点改造
  • #816 e2e 框架热榜复盘
  • #823 e2e 设计解析
  • #817 极智嘉 AI Native
  • #815 先侦察再执行
  • #825 Copilot 实战
  • #834 自建测试 Agent
  • 八条黄金法则

相关页面

出处 · raw/articles/bookmarks/(浏览器收藏 2026-09-19,测试skill/测试用例生成/测试Agent开发/视觉AI测试 等文件夹)