我让Agent连续跑了三天测试用例,它自己学会了怎么写

简介: 本文揭秘测试智能体如何通过AgentLoop实现“经验自进化”:不改提示词、不重训模型,仅靠清洗执行轨迹(Trace→Trajectory)、挖掘有效路径、注入经验(Skill+CLI),使页面元素定位成功率逐日提升。实测Playwright自愈定位、接口用例生成等场景,显著提升稳定性和复用性。

上个月团队在推测试智能体的落地,遇到一个很典型的问题:同一个页面元素定位任务,Agent第一天跑了12次才找对,第二天跑了8次,第三天只跑了3次。

我没改任何提示词,也没重新训练模型。

它自己学会的。

这件事让我认真研究了一下AgentLoop的经验自进化机制,以及它跟测试场景结合后的实际效果。今天把完整的链路和实操过程写出来。

先搞清楚一个事实:Agent的不确定性不是靠调参解决的
传统软件追求确定性——相同输入、相同环境下,系统给出稳定可预测的结果。AI Agent不是这样。

模型采样有随机性,上下文每次都不一样,任务规划路径可能完全不同。同一个问题连续跑五次,Agent可能选不同的工具、走不同的路径、给出不同的答案。一次评测通过,不代表下一次还能过。

这就是测试同学最头疼的地方。你不可能拿一个“今天能用明天不能用”的工具去跑CI。

AgentLoop的思路是:不确定性无法被彻底消除,但可以被持续约束。

约束的方式就是经验。Agent每次执行任务都会留下完整的执行轨迹,成功路径里有有效的方法,失败路径里有反复踩的坑。这些轨迹被清洗、提炼、挖掘之后,变成可复用的经验,在下一次任务执行时注入到上下文里。

Trace到Trajectory:数据清洗比模型调优更重要
原始Trace的数据量非常大。里面包含大量基础设施Span、重复消息、跟决策无关的日志。如果直接拿原始Trace做长期存储和分析,成本高不说,真正有价值的信号会被噪音淹没。

AgentLoop的做法是先清洗再组装:把原始Trace去噪,只保留任务目标、行动步骤、工具调用、观察结果、错误信息、恢复过程和最终结果,形成标准化的Trajectory。

内部复杂样本里,清洗后的Trajectory可以降到原始Trace的4%到6%的数据量级。

这个清洗环节对测试场景特别关键。 测试执行的Trace里充斥着大量重复的页面快照、网络请求日志、截图。但真正有价值的信号是:Agent在哪个步骤选错了定位策略、哪个断言写得太脆弱、哪次工具调用超时后选择了错误的恢复路径。

清洗后的Trajectory让挖掘算法能直接分析Agent的决策过程,而不是在日志片段里大海捞针。

经验怎么进入下一次执行:Skill + CLI
经验生成之后,不需要重新训练模型,也不需要重建Agent。

在客户端安装Recall Skill,通过CLI配置经验库和访问凭证。安装完成后,Agent在任务开始、调用关键工具、遇到错误或准备交付时,会自动检索相关经验,把召回结果作为参考上下文注入当前任务。

这种方式有三个好处:

接入快,不改模型权重
经验更新后立刻生效
经验出问题可以快速下线或限制范围
而且经验是跨模型、跨Agent框架共享的。换模型或换框架之后,业务经验不用从零积累。一个Agent验证过的有效路径,其他Agent也能召回;一个团队踩过的坑,其他团队可以提前避开。

测试场景实操:Playwright MCP + 自愈执行
说了这么多理论,落到测试场景里到底怎么跑?

我拿一个Web登录功能试了一套组合方案:用Playwright MCP驱动浏览器,配合自愈引擎处理定位失败。

第一步:配置Playwright MCP

Playwright MCP的核心是把浏览器的操作封装成AI可以调用的工具,同时把页面状态(DOM树、网络请求、Console日志)转化为模型能理解的文本快照。

快照不是简单截取HTML,而是基于可访问性树精简过的,优先保留有ARIA角色、标签和交互属性的元素。

npm init -y
npm i @playwright/test
npx playwright install
第二步:写一个用例生成脚本

from rag_playwright import RAGCodeGen

rag = RAGCodeGen(index_path="./api_docs/swagger.json")
prompt = "测试登录功能:输入admin/123456,点击登录,应跳转到/dashboard"
code = rag.generate(prompt, framework="playwright")

with open("tests/login.spec.ts", "w") as f:
f.write(code)
生成的代码大概长这样:

test('login test', async ({ page }) => {
await page.goto('/login');
await page.fill('#username', 'admin');
await page.fill('#password', '123456');
await page.click('button:has-text("登录")');
await expect(page).toHaveURL('/dashboard');
});
第三步:注册自愈插件

import { healPlugin } from 'playwright-auto-healing';

export default {
use: { ... },
plugins: [healPlugin({
maxHealingAttempts: 3,
llmModel: 'gpt-4',
healSelectors: ['css', 'text', 'aria', 'xpath']
})]
};
跑测试的时候加上自愈参数:

npx playwright test --heal=auto --trace=on
当定位失败时,控制台会输出类似这样的信息:

[Healing] Failed to find '#submit-btn', trying AI locator...
→ new selector: 'button[aria-label="提交"]'
✓ healed in 2.1s
这才是经验自进化在测试场景里最直观的体现。 第一次定位失败,自愈引擎尝试了CSS、文本、ARIA等多个维度,最后用aria-label定位成功。这次成功的修复路径被记录为Trajectory,经过挖掘后变成经验。下次遇到类似的定位失败,Agent会优先尝试aria-label方案,而不是从头遍历所有选择器。

接口测试场景:Swagger + Skills拆解
Web端跑通了,接口端能不能复用同一套思路?

能,但需要换一种拆法。

Swagger文档写得很规范,路径、参数类型、必填属性、响应结构都清清楚楚。但直接在CI里跑通的测试用例,需要的上下文远不止这些。

合法的业务数据示例(userId必须是数据库里真实存在的)
边界值规则(age范围1-120,超过400报错)
调用链路依赖(先调登录拿token,再调业务接口)
断言规则(响应里code=0时data不能为空)
Swagger里一个都没有。测试人员写用例时,脑子里调用了两类知识:技术规范来自Swagger,业务经验来自规则库、历史缺陷、领域知识。AI生成用例失败的根本原因就是:模型只看到了前半部分。

实际可行的工程路径是:用RAG把业务规则注入,用Skills把用例生成拆成可编排的原子能力。

我把用例生成拆成了三个独立Skill:

参数构造Skill:输入参数名、类型、约束,输出一组合法的测试数据值。对于依赖外部数据的参数,自动插入获取逻辑。比如userId不能是0,它自动从数据库里拉一个有效值。

依赖链处理Skill:分析接口的前置条件,生成setup代码。需要登录态就自动生成调用登录接口并提取token的代码块。

断言生成Skill:根据响应schema和业务规则,生成状态码断言、字段存在性断言、值范围断言。

每个Skill有独立的prompt模板,调用时只关注自己的职责。不让LLM一次生成整个测试文件,任务太复杂容易出错。

完整的经验闭环长什么样
把Web端和接口端的链路串起来,整个飞轮是这样的:

观测 → Agent执行测试任务,产生Trace → 轨迹 → 清洗组装为Trajectory → 挖掘 → 从多个轨迹中发现有效路径和失败模式 → 经验 → 生成结构化经验 → 召回 → 下次执行时注入上下文 → 运行 → 产生新的Trace

AgentLoop在内部复杂样本里验证过效果。StarOps实验中平均工具调用次数下降25.1%,有害事件下降27.8%。SWE-bench Verified通过率从67.2%提升到74.4%。

但真正值得关注的不是单次成功率,而是同类任务多次执行的稳定性。如果平均准确率提高的同时质量下限被抬高、运行波动逐步缩小,Agent才算从“偶尔做对”走向“可以稳定上线”。

企业衡量经验库的有效性,应该同时看这几个指标:平均任务成功率、首次完成率、同类任务多次执行的波动范围、失败模式的集中度、人工接管率和返工率。

落地时踩过的坑
第一,Trace接入方式要提前规划。 AgentLoop支持多种接入方式——探针、OpenTelemetry、Pilot、eBPF。如果你的Agent不方便改代码,可以用eBPF从系统层面采集。但不同接入方式采集到的数据粒度不一样,影响后续经验挖掘的质量。建议先跑通一条链路再扩展。

第二,不是所有任务都适合做经验挖掘。 一次性的、低频的测试任务,积累的经验样本太少,挖掘出来的规律没有统计意义。高频回归、多版本迭代的测试场景才值得投入。

第三,经验注入不是Token一定下降。 有些任务为了获得更高成功率,可能需要使用更多上下文。合理的目标是在质量护栏下持续优化单位成功成本,而不是单独追求最低Token消耗。

第四,经验库需要版本管理和权限控制。 不同业务线的经验应该隔离,通用经验可以跨Agent共享。AgentLoop支持按AgentSpace和经验库做权限边界。别把所有经验塞进一个池子里,召回的时候噪音太大。

最后说一句
Agent自进化不是让模型变聪明,是让Agent在当前任务中复用真实执行验证过的方法。

RAG提供业务事实,Memory提供会话背景,Skill提供可执行能力,经验自进化提供行动经验。这几个能力协同工作,Agent才能从“能用”走向“可持续上线”。

对测试团队来说,这意味着智能体不再是一个“演示完就吃灰”的工具。它跑得越多、经验越丰富、定位越准、成本越低。用的第一天和用的第三十天,效果完全不一样。

相关文章
|
22天前
|
人工智能 自然语言处理 前端开发
字节用半年让85%的AI用例跑进CI/CD,你的团队还在为“AI生成不能用”发愁?
本文剖析字节跳动NL2Test Agent成功落地的五大关键:聚焦“用例转译”而非替代、先闭环再优化、LLM与程序分工协作、精准治理上下文、优先生成稳定断言。对比失败案例,揭示AI测试成败核心在工程设计,而非模型能力。
|
20天前
|
数据采集 人工智能 测试技术
开源智能测试平台该分哪几层:数据采集、用例编排到质量归因的选型地图
本文针对AI时代测试平台自建困境,提出“分层契约式选型”方法:摒弃拼凑热门工具的“拼盘式”错误,将平台拆解为数据采集、测试数据、用例资产、执行编排、质量归因五层,明确每层职责、接口契约、Owner与可量化SLA,并提供YAML架构定义与自动化校验脚本,确保选型可落地、不烂尾。
|
22天前
|
计算机视觉 SEO
短视频SEO优化与私域承接:响应时效为什么是硬指标
B2B 短视频搜索的最后一公里在线索承接。本文从"供给—承接—归因"的视角重讲这条链路:决策期词怎么占位、线索怎么接、响应时效为什么是硬指标,并给出一份线索数据结构示例,便于与现有 CRM 打通。
|
25天前
|
人工智能 JSON 缓存
Skills × pytest:回归一上CI就红,问题藏在“测试顺序”里
本文剖析测试“偶发红灯”的根源——用例间状态污染,而非网络或模型波动。以环境变量泄漏为例,揭示重试掩盖真因的危害,并给出pytest隔离方案、最小复现实验法及AI生成测试的资源约束原则,助团队构建可信自动化。
|
28天前
|
人工智能 自然语言处理 架构师
当测试Skill也需要回归测试:我们是不是把简单问题搞复杂了?
Skill正从“能运行”迈向“可交付”,重演软件工程二十年演进之路:模型漂移、描述微调致行为突变,凸显回归测试刚需。本文剖析Skill非确定性本质,提出以确定性验证为核心、覆盖多场景的轻量评测实践,呼吁团队尽早构建质量防线。
|
29天前
|
人工智能 自然语言处理 机器人
2027 校招项目:做一条可回放的 AI 测试链路
2027校招AI测试项目避坑指南:拒绝聊天Demo!以“校园报修助手”为例,构建可回放测试链路——用JSONL固化真实工具调用与响应,通过ReplayTools夹具验证Agent决策、副作用与文案,覆盖重复工单等12类业务风险,让测试成为可复现、可回归的工程证据。
|
21天前
|
人工智能 算法 测试技术
AI岗位渗透率飙到37.56%:测试校招正在分成“两种人”
本文揭示2026年测试校招的深刻变革:AI渗透率达37.56%,传统手工测试岗需求降47%,而AI/全栈测开岗激增340%。面试不再考执行能力,而是考察对AI系统(如Agent、RAG)的质量保障思维——能否拆解非确定性故障、分层兜底、构建测试智能体。两种候选人,一道能力鸿沟。
|
21天前
|
人工智能 监控 安全
你以为AI只能写Hello World?它已经在GitHub上替代Senior了
本文揭秘2025–2026年AI编程真实落地场景:AI已从代码补全跃升为自主提交(GitHub 4%→20%)、自动修Issue、跨仓库重构、CI失败自修复等Senior级任务。实测显示其擅长单文件bug、类型修复、依赖更新,但不擅分布式事务、性能优化与安全逻辑。工程师角色正从“编码者”转向“审核者”与“决策者”。
|
21天前
|
数据采集 人工智能 运维
有哪些好用的数据治理工具适合中小企业快速落地
中小企业数据治理常卡在预算少、缺专业人才、见效慢三大障碍。阿里云瓴羊Dataphin以“轻量、按需、快速见效”为设计核心,支持低代码建模、AI质控、模块化订阅,月费仅2000–3000元,3周内可跑通首个业务场景,助力中小企低成本迈出数据治理第一步。(239字)
|
21天前
|
人工智能 缓存 数据挖掘
Qwen3-VL-Rerank——阿里云千问开源多模态检索模型,免费100万Tokens试用!
Qwen3-VL-Rerank是通义千问推出的多模态重排模型,支持文本、图像、视频输入,可对跨模态检索结果智能二次排序,显著提升图搜、视频检索、图像聚类等任务的准确率与精度,已在阿里云百炼平台开放使用。(239字)
216 0

热门文章

最新文章