AI测试新范式:Agent Skills与Vibe Testing构建人机协作闭环
2026/8/13 1:19:34 网站建设 项目流程

1. 从“单点测试”到“人机协作”:测试范式的悄然转变

最近和几个测试团队的朋友聊天,发现一个挺有意思的现象:大家嘴上都在聊AI、聊自动化,但实际工作中,很多核心的测试环节,尤其是那些需要“感觉”和“判断”的地方,依然严重依赖测试工程师的个人经验。比如,一个页面的交互流程是否顺畅,一个动画效果是否自然,甚至一个文案的语气是否得体,这些“非功能性”或“体验性”的质量维度,自动化脚本往往束手无策,最终还是要靠人眼去看、人手去点、人脑去感受。

这让我开始思考,我们追求的“自动化测试”,是不是从一开始就有点跑偏了?我们花了大量精力去编写和维护那些断言“按钮A是否存在”、“接口B返回状态码是否为200”的脚本,却把最体现产品价值、也最影响用户口碑的“体验质量”完全交给了人工,而且是一种重复、枯燥、极易疲劳和出错的“点点点”式人工。这种割裂,本质上还是把机器和人放在了两个对立面上:机器负责“确定性的验证”,人负责“不确定性的探索”。

但“Agent Skills + Vibe Testing”这个组合,给我提供了一个全新的视角。它不再试图用机器完全取代人,或者把人当作机器的补充。相反,它试图构建一个人机协作的闭环:让具备特定技能的智能体(Agent)去高效、不知疲倦地执行那些可结构化、可重复的“技能性”测试任务;同时,将人的核心价值——直觉、审美、场景化理解和共情能力——提炼并融入到测试流程中,形成一种可被感知、甚至可被部分量化的“氛围测试”(Vibe Testing)。这个闭环的目标,不是100%的自动化覆盖率,而是100%的质量关注度覆盖,让机器和人各司其职,共同为最终的用户体验负责。

2. 拆解核心概念:Agent Skills 与 Vibe Testing 究竟是什么?

在深入探讨如何构建闭环之前,我们必须先厘清这两个概念在当前语境下的具体含义。它们并非凭空造词,而是对现有测试实践中一些趋势的提炼和升华。

2.1 Agent Skills:从“脚本”到“技能”的认知升级

传统自动化测试中,我们编写的是“脚本”(Script)。一个脚本通常对应一个非常具体的测试用例,比如“登录功能测试脚本”。它的逻辑是线性的、预设的,环境是固定的,断言是精确的。一旦业务逻辑或UI稍有变动,脚本就可能“断裂”,维护成本高昂。

Agent Skills(智能体技能)则是一种更高阶的抽象。我们可以把一个Skill理解为智能体(一个具备一定自主决策能力的程序)所掌握的一种“能力”。这个能力不是为了完成某一个特定用例,而是为了应对某一类测试场景。

举个例子:

  • 传统脚本:“在登录页,向用户名输入框‘#username’输入‘test@example.com’,向密码输入框‘#password’输入‘123456’,点击‘#login-btn’,断言页面跳转至‘/dashboard’。”
  • Agent Skill:“用户登录技能”。具备此技能的智能体,需要理解“登录”这个业务概念。当被要求测试登录功能时,它能自主地:
    1. 理解上下文:识别当前应用哪些页面可能是登录页(通过分析URL、页面标题、常见的登录表单元素如“用户名”、“密码”等)。
    2. 自主探索:尝试多种输入组合(有效账号、无效账号、空密码、超长用户名等)。
    3. 智能断言:不仅检查是否跳转,还会检查登录后的用户状态(如本地存储的Token)、页面关键元素(如用户昵称显示是否正确)、以及登录失败时的错误提示是否友好。
    4. 环境适应:即使UI元素的选择器变了(比如从‘#username’变成了‘.username-input’),只要智能体能通过其他方式(如元素文本、占位符、表单类型)识别出登录表单,它依然能执行测试。

一个测试智能体可以具备多种Skills,例如:“表单填写与验证技能”、“多步骤业务流程导航技能”、“API序列调用与数据验证技能”、“跨浏览器/设备渲染基础校验技能”。这些技能通过自然语言指令或更高级的意图识别来触发,让测试从“录制回放”或“硬编码”进化到“目标驱动”。

2.2 Vibe Testing:将“只可意会”的体验转化为“可以言传”的检查点

“Vibe”这个词很妙,它指的是氛围、感觉、气质。Vibe Testing(氛围测试)的核心,就是尝试去测试那些传统上认为“无法自动化”的、关乎用户体验和产品气质的质量属性。

它关注的是:

  • 视觉与交互的和谐度:颜色搭配是否舒适?动画曲线是否自然?页面布局在多种屏幕尺寸下是否依然平衡、美观?元素之间的间距是否遵循了设计系统,还是显得杂乱?
  • 流程与反馈的流畅度:用户完成一个任务的路径是否直观?页面跳转是否有生硬的“闪白”?加载状态的提示是否优雅(是精致的骨架屏,还是一个突兀的旋转图标)?错误提示是生硬的技术语句,还是贴心、有指导性的用户语言?
  • 文案与语气的得体性:按钮文案是生硬的“提交”还是更具行动力的“立即开启”?错误提示是冷漠的“操作失败”还是带有共情的“哎呀,好像出了点小问题,请稍后再试”?整个产品的文案语调是专业严谨的,还是活泼亲切的?这种语调在不同模块间是否保持一致?
  • 性能感知:不仅仅是“首屏加载时间小于3秒”这种硬指标,更是用户主观感受到的“快”或“慢”。例如,一个页面虽然数据加载慢,但通过巧妙的骨架屏和分步加载,让用户感觉响应迅速,这就是好的“性能氛围”。

Vibe Testing 不是要取代设计师或产品经理的评审,而是将他们的专业判断和用户的普遍感受,沉淀为一系列更具体、可被观察甚至可被部分量化的“检查清单”或“启发式规则”,并将其纳入到常规的测试流程中,尤其是由具备视觉、交互理解能力的AI智能体来辅助执行。

3. 构建闭环:如何让Agent与Vibe协同工作?

理解了这两个概念,我们就可以设计它们如何协同,形成一个不断自我增强的测试闭环。这个闭环不是线性的“先A后B”,而是一个螺旋上升的循环。

3.1 闭环的起点:基于Vibe原则的测试场景与任务定义

测试的源头不应该是需求文档里冷冰冰的功能点,而应该是从用户体验目标出发的“场景”。我们可以利用Vibe Testing的思维来定义这些场景。

操作示例:为一个“电商商品详情页”定义测试任务

  1. 分解Vibe维度

    • 视觉和谐:核心图片是否清晰、突出?价格、促销信息等关键数据是否一目了然?颜色是否与品牌一致?
    • 交互流畅:轮播图滑动是否跟手?选择商品规格(如颜色、尺寸)时,反馈是否即时、清晰?“加入购物车”按钮的点击动效是否令人满意?
    • 文案得体:商品标题是否吸引人且无歧义?促销文案(如“限时折扣”、“仅剩3件”)是否营造了紧迫感但不令人反感?按钮文案(“立即购买”、“加入购物车”)是否具有行动号召力?
    • 性能感知:页面核心内容(图片、价格、标题)是否优先加载并快速呈现?滚动浏览长描述时是否流畅?
  2. 转化为Agent可执行的任务

    • 对“视觉和谐”维度,可以生成任务:“检查页面核心视觉区域(坐标X-Y到X1-Y1)的布局,评估关键信息(价格、主图、标题)的视觉层级是否合理,截图并标注疑似问题(如元素重叠、间距明显不一致)。”
    • 对“交互流畅”维度,生成任务:“模拟用户交互序列:1. 滑动商品轮播图3次;2. 依次点击所有可选的商品规格;3. 点击‘加入购物车’按钮。录制交互过程,分析动画帧率、响应延迟,并检查每次交互后的UI状态变化是否符合预期。”
    • 对“文案得体”维度,生成任务:“提取页面所有用户可见文案,进行一致性分析(如‘购物车’是否在全站统一称呼),并进行情感倾向和可读性评估,标记出可能生硬、歧义或与产品基调不符的语句。”

这些任务不再是简单的“断言文本等于XX”,而是带有探索性和评估性的指令。它们由测试工程师、产品设计师、UX研究员共同基于“我们希望给用户营造何种Vibe”来制定。

3.2 闭环的核心:具备多模态能力的Agent执行与感知

接收上述任务的,不是一个传统的UI自动化框架,而是一个具备多模态感知能力的测试智能体(Agent)。这个智能体需要集成多种能力:

  • 计算机视觉(CV):能“看懂”屏幕,识别UI元素、布局、颜色,检测视觉缺陷(如图片撕裂、元素错位)。
  • 自然语言处理(NLP):能“读懂”页面上的文案,理解其语义和情感。
  • 浏览器自动化与控制:能像真人一样操作浏览器,点击、输入、滚动。
  • 性能度量:能采集渲染性能、网络请求等指标。
  • 一定的推理与决策能力:能根据任务目标,自主规划执行步骤,并在遇到意外情况(如弹窗、网络错误)时尝试恢复或记录问题。

这个智能体利用它的Skills去执行任务。例如,它调用“视觉分析技能”来完成视觉和谐度检查,调用“交互录制与性能分析技能”来完成流畅度测试,调用“文本分析技能”来评估文案。

关键点在于:Agent在执行过程中,不仅产出“通过/失败”的二元结果,更会生成丰富的、结构化的上下文数据:截图、高亮标注、性能曲线图、交互热力图、文案分析报告等。这些数据是Vibe的“证据化”呈现。

3.3 闭环的反馈:人的判断与规则的迭代

Agent执行完毕,生成了一份包含大量数据和“疑似问题”标记的报告。现在,轮到人介入了。

测试工程师、设计师、产品经理共同Review这份报告。人的价值在这里凸显:

  1. 判断与裁决:Agent标记的“疑似文案生硬”,设计师来判断是否真的不符合产品调性;Agent检测到的“元素间距轻微不一致”,测试工程师和设计师要共同判断这是否在可接受的设计公差范围内,还是一个必须修复的Bug。
  2. 发现“未知的未知”:人在Review报告时,可能会发现一些Agent任务定义之外,但确实影响体验的问题。比如,虽然Agent检查了加载性能,但人在看录屏时,发现某个次要图片加载失败导致的“裂图”图标非常丑陋,影响了整体氛围。
  3. 规则提炼与反馈:基于人的判断,我们可以做两件事:
    • 修正本次结果:将误报剔除,将漏报的真实问题记录为Bug。
    • 迭代Agent的规则和任务定义:如果某个Vibe问题(例如,“错误提示弹窗的阴影太深,显得压抑”)被多次提出并确认为问题,我们就可以将其沉淀为一个新的、更具体的检查规则,加入到后续的“视觉和谐度”测试任务中。比如,规则可以细化为:“检查所有弹窗组件的CSSbox-shadow属性,其rgba()的alpha值不应低于0.2”。

这个过程,就是用人的专业判断和感性认知,去训练和优化Agent的“Vibe感知”能力。闭环就此形成:Vibe原则指导任务定义 -> Agent执行并收集证据 -> 人进行判断和裁决 -> 提炼新规则反哺任务定义。

4. 技术选型与落地路径:当前能做什么?

构建这样一个理想的闭环需要强大的AI能力支撑。虽然完全自主的、通用的人工智能测试体尚属前沿,但我们完全可以利用现有工具和框架,以渐进的方式落地核心思想。

4.1 Agent Skills 的技术实现雏形

我们可以将现有的测试框架与AI服务结合,构建“技能化”的测试模块。

  • 基础层:可靠的浏览器自动化与控制

    • Playwright是目前的首选。它支持多浏览器、多语言,提供了强大的自动等待、网络拦截、设备模拟等功能,并且录制生成代码的功能可以作为构建Skill的起点。其locatorAPI比传统的基于选择器的定位方式更健壮。
    • Selenium依然稳定,生态庞大,但在处理现代Web应用的复杂交互和等待机制上,需要更多配置。
  • 技能封装层:Page Object Model的进化版传统的Page Object Model(POM)封装的是页面元素和基础操作。我们可以将其进化为“Task Object Model”“Skill Object Model”

    # 传统POM:封装元素和基础操作 class LoginPage: def __init__(self, page): self.page = page self.username_input = page.locator('#username') self.password_input = page.locator('#password') self.login_button = page.locator('#login-btn') def login(self, username, password): self.username_input.fill(username) self.password_input.fill(password) self.login_button.click() # 进化版Skill:封装业务意图和智能行为 class UserAuthenticationSkill: def __init__(self, context): # context 包含 page, config, AI_client 等 self.context = context def perform_login(self, credential_hint=None): """ 执行登录技能。 :param credential_hint: 可选,提示如‘使用测试账号’,智能体可据此从配置或内存中获取凭证。 """ # 1. 智能定位登录入口 login_links = self.context.page.get_by_text('登录', 'Sign in', exact=False) if login_links.count() > 0: login_links.first.click() else: # 尝试其他方式,如分析URL,或直接导航到已知登录页 self.context.page.goto('/login') # 2. 智能识别表单(不依赖固定选择器) # 可以结合简单的CV或基于DOM结构的启发式规则 input_fields = self.context.page.locator('input[type="text"], input[type="email"], input[type="password"]') # ... 逻辑判断哪个是用户名框,哪个是密码框 # 3. 智能填充(可从环境变量、数据库或通过hint获取) username, password = self._get_credentials(credential_hint) # ... 填充逻辑 # 4. 智能提交与验证 submit_buttons = self.context.page.get_by_role('button', name='登录') # ... 点击并验证登录结果(检查URL变化、Cookie、页面元素等) def _get_credentials(self, hint): # 根据hint获取凭证的逻辑 pass

    这个UserAuthenticationSkill不再绑定于某个特定页面的特定元素,它具备了“寻找登录入口”、“识别登录表单”、“完成认证”的意图和能力。

  • “大脑”层:集成AI服务进行决策与感知

    • 视觉分析:可以集成OpenAI的GPT-4V(Vision)Google的Gemini Pro Vision或开源的LLaVA等具备视觉理解能力的模型。将页面截图传给模型,提问:“请分析这张截图中,核心行动按钮(如购买、注册)在视觉上是否足够突出?并给出理由。” 模型的回答可以作为Vibe Testing的依据。
    • 文本分析:直接调用上述大语言模型的文本接口,对抓取的页面文案进行分析:“请判断以下产品文案的语气是专业、亲切还是活泼?它是否与‘面向年轻群体的时尚科技产品’这一定位相符?”
    • 任务规划:对于复杂的探索性测试,可以用LLM来将高级指令(如“探索一下结账流程的边界情况”)分解为一系列具体的Agent Skill调用序列。

4.2 Vibe Testing 的落地:从启发式清单到自动化检查

初期,Vibe Testing可以以“人工检查清单”的形式存在,但我们可以逐步将其自动化。

  1. 建立Vibe检查清单库:团队共同维护一个Confluence或Notion页面,列出所有关注的Vibe维度及其具体表现。例如:
    • 维度:视觉一致性
      • [ ] 全站主要按钮(主按钮、次按钮、危险按钮)的圆角、阴影、字体大小是否一致?
      • [ ] 相同层级的标题(H1, H2, H3)字体、颜色、间距是否一致?
      • [ ] 错误状态(输入框错误、操作失败提示)的红色色调是否统一?
  2. 开发自动化检查脚本
    • CSS审计:写脚本扫描项目的CSS变量或样式文件,检查核心设计Token(如颜色、间距、字体)的使用是否一致。这可以直接用静态分析工具完成。
    • 截图对比与差异检测:使用pixelmatchApplitoolsPercy等工具,在UI迭代时进行视觉回归测试。但这只是基础,更进阶的是让AI分析截图差异,判断是“合理的设计更新”还是“意外的视觉破坏”。
    • 交互性能监控:利用Playwright或Chrome DevTools Protocol,在自动化脚本中注入代码,测量关键用户交互(如点击、输入)的响应延迟和动画帧率,设定阈值。
  3. 集成AI进行主观评估:对于最难量化的“美感”、“得体性”,定期(如每轮测试)或针对关键页面,让AI智能体运行一遍,并生成包含截图和AI评语的报告,供人工复核。虽然AI的审美不一定完全准确,但它能提供一个相对客观的、可重复的“外部视角”,帮助发现团队内部可能因习惯而忽略的问题。

4.3 一个简化的实践案例:新闻文章页面的Vibe检查

假设我们要为一个新闻客户端测试其文章详情页。

步骤1:定义Vibe任务

  • 任务1(阅读氛围):评估页面的排版是否利于长时间阅读(字体、行高、对比度、段落宽度)。
  • 任务2(交互干扰):检查页面非核心交互元素(如浮动广告、推荐栏)是否在阅读时造成过多干扰。
  • 任务3(性能感知):测量文章主体文字内容的渲染速度,是否出现明显的“文字重排”或“布局抖动”。

步骤2:Agent执行

  • 使用Playwright打开文章页,滚动到底部再回到顶部,模拟阅读行为。
  • 执行任务1:截取文章主体区域,调用GPT-4V API,提问:“请从字体易读性、行间距舒适度、背景与文字对比度、单行理想字符数四个方面,评价此截图的排版是否适合长时间阅读。以1-5分打分,并给出简短理由。”
  • 执行任务2:录制滚动过程的视频,或分析页面布局,识别出固定定位(fixed)或粘性定位(sticky)的非内容元素,计算其占据的屏幕面积比例。
  • 执行任务3:使用Playwright的page.evaluate()注入PerformanceObserver,精确测量“文章主体容器”内文本布局稳定的时间点。

步骤3:人的反馈与迭代

  • 查看报告:AI给排版打了4分,理由是行高稍紧。人复核后同意,这是一个可优化的点。
  • 发现新问题:人在看AI截的图时,注意到文章中的超链接颜色和下划线样式与正文对比不明显,不易识别。这是一个AI任务定义时没涵盖的Vibe问题。
  • 迭代:将“检查正文内链接的视觉突出性(颜色、下划线)”作为一个新的检查点,加入到后续的“阅读氛围”任务中。同时,可以考虑写一个简单的CSS分析脚本,自动检查链接颜色与正文颜色的对比度是否达到WCAG可访问性标准。

5. 面临的挑战与应对策略

理想很丰满,但落地之路必然充满挑战。提前认清这些挑战,能帮助我们设定合理的期望和分阶段的目标。

挑战1:AI判断的准确性与可靠性AI,特别是大模型,存在“幻觉”(胡言乱语)、判断不稳定、以及审美/价值观可能与目标用户有偏差的问题。

  • 应对策略
    • 明确边界:不追求AI做最终裁决,而是定位为“高灵敏度的异常检测器”和“不知疲倦的初级评审员”。它的工作是“标记疑似问题”,人的工作是“最终裁定”。
    • 提供上下文:在向AI提问时,提供尽可能详细的上下文和评判标准。例如,不是问“这个设计好看吗?”,而是问“根据我们公司的设计规范(附上规范链接或描述),这个按钮的圆角大小、阴影强度和品牌主色的使用是否符合规范?”
    • 集成专业工具:对于能量化的部分(如颜色对比度、性能指标),优先使用专业的、确定性的工具(如axe-core做可访问性检查,Lighthouse做性能审计),AI作为补充。

挑战2:初期投入成本与学习曲线搭建这样一个融合了传统自动化和AI能力的测试体系,需要团队在工具链、脚本编写模式、甚至团队协作流程上进行变革。

  • 应对策略
    • 从小处着手:不要试图一次性覆盖所有功能和Vibe维度。选择一个用户旅程中最关键、或最体现产品特色的核心场景(例如,电商的购物车结算页,SaaS产品的仪表盘)进行试点。
    • 复用现有资产:将现有的、稳定的E2E自动化测试用例,逐步重构为更模块化、意图驱动的Skill,而不是推倒重来。
    • 培养复合型人才:鼓励测试工程师学习基础的AI应用和Prompt工程,同时让设计师和产品经理更多地参与到测试任务的定义和评审中,打破角色壁垒。

挑战3:维护与演化成本业务在变,UI在变,AI模型也在变。如何保证这套体系不随着变化而迅速腐化?

  • 应对策略
    • 任务定义与实现解耦:任务定义(要测试什么Vibe)应尽可能用自然语言或领域特定语言(DSL)描述,存储在独立的配置文件或知识库中。具体的Skill实现可以随技术栈迭代而更换。
    • 建立反馈闭环的流程:必须将“人的评审与规则迭代”作为一个强制性的、轻量化的流程固化下来。例如,每次AI测试报告生成后,必须由至少一名测试和一名设计在24小时内完成复核并记录反馈。
    • 定期校准:每隔一段时间(如一个季度),回顾所有AI标记的问题和人的裁定结果,计算误报率和漏报率,用以调整AI提问的Prompt或判断阈值。

构建“Agent Skills + Vibe Testing”的人机协作闭环,其终极目标并非实现测试的完全自动化,而是实现质量保障的全面智能化与人性化融合。它承认并尊重人类在审美、共情和复杂判断上的不可替代性,同时将人类从重复、机械的验证劳动中解放出来,让我们能更专注于设计测试策略、探索未知风险、以及理解用户更深层的体验需求。这条路很长,但每一步,都让我们离打造出真正令用户感到愉悦、顺畅、甚至拥有“灵魂”的产品更近一步。从我个人的实践来看,哪怕只是开始将“Vibe”这个词引入测试讨论会,都能显著提升团队对体验质量的共同关注度,这本身就是一个巨大的价值起点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询