实习agent优化设计思路

2 阅读5分钟

你的设计思路其实可以概括成一句话:

不是让 AI 直接“替你完成测试”,而是把测试流程拆成“可编排的 Agent + 可复用的 Skills + 可落地执行的 MCP/Tools”,让 AI 负责理解和决策,让工具负责确定性执行。

你面试里可以这样讲。

整体思路 我做的不是单点脚本生成,而是把测试流程平台化、模块化。因为不管换成哪个 Web 项目,测试工作本质上都还是这几类事情:

  1. 读取需求或用例
  2. 理解业务流程
  3. 找到对应接口、页面或依赖系统
  4. 生成测试动作或测试脚本
  5. 执行校验
  6. 输出结果、归因问题、沉淀资产

所以我没有把逻辑写死在某个项目里,而是抽象成三层:

  • Agent:负责任务编排和流程推进
  • Skills:负责具体能力模块,比如用例解析、接口匹配、脚本生成、失败归因
  • MCP/Tools:负责调用外部系统和本地能力,比如读 TAPD、查 OpenAPI、运行脚本、上传平台

为什么这样拆 因为如果只靠一个大模型一次性生成所有内容,会有三个问题:

  • 不稳定,容易乱写
  • 不可复用,换项目要重做
  • 不可追踪,出了错很难知道是哪一步错了

所以我把“理解”和“执行”分开:

  • LLM 更适合做语义理解、步骤拆解、归因判断
  • MCP/Tools 更适合做下载、查询、运行、写文件、调接口这些确定性动作

这样做的好处是: 同一套框架可以迁移到别的 Web 项目,只需要替换项目知识库、接口文档、页面对象、执行器,就能复用整体方案。

Agent 层怎么设计 Agent 不是万能助手,而是一个测试任务调度器。

它主要做几件事:

  • 接收任务,比如“根据某个需求生成测试资产”
  • 判断当前应该走哪些步骤
  • 按顺序调用对应 Skills
  • 给每一步注入上下文
  • 收集每一步产物
  • 如果失败,决定回退到哪一步修正

比如一个典型流程就是:

需求/用例输入
-> 用例理解
-> 接口或页面匹配
-> 测试脚本生成
-> 本地运行校验
-> 报告输出或平台同步

这意味着以后测试别的 Web 项目时,Agent 的骨架不用变,只需要替换项目的上下文和执行插件。

Skills 怎么设计 Skills 是最核心的复用层。

我的想法不是按“技术组件”拆,而是按“测试任务阶段”拆。因为这样更符合实际工作流,也更容易复用。

例如可以拆成这些 Skills:

  • Case Parsing Skill:把需求、用例、PRD、缺陷单解析成结构化测试输入
  • Interface/Page Matching Skill:把测试步骤映射到接口、页面元素、公共方法
  • Script Generation Skill:生成接口脚本、UI 自动化脚本或测试数据准备脚本
  • Validation Skill:做语法校验、运行校验、断言检查
  • Root Cause Analysis Skill:基于日志、截图、返回值做失败归因
  • Report Skill:生成结构化测试报告和后续行动项

这样换成别的 Web 项目时,只要业务不同,但 Skill 类型还是一样的。

变的是:

  • 输入文档不同
  • 页面元素库不同
  • 接口文档不同
  • 业务词典不同
  • 执行环境不同

但 Skill 的职责不变,所以复用性很强。

MCP/Tools 怎么设计 MCP 这一层我理解成“AI 和外部世界之间的标准连接层”。

比如测试一个新 Web 项目时,AI 自己并不能直接知道:

  • 需求平台里有哪些用例
  • 接口平台里有哪些 API
  • 页面上有哪些元素
  • Jenkins 或本地 runner 怎么执行
  • 测试结果存在什么地方

所以需要 MCP/Tools 把这些能力暴露出来。

常见可以接的能力有:

  • 需求系统:TAPD、Jira、禅道
  • 接口文档:OpenAPI、Swagger、Postman
  • 代码仓库:Git、Repo、本地脚本目录
  • 执行环境:Pytest、Playwright、Selenium、Node Runner
  • 平台系统:测试平台、报告平台、CI/CD
  • 观测数据:日志、截图、视频、trace、接口响应

这样以后切换到别的 Web 项目,本质上是替换 MCP 适配器,而不是重写整套 Agent。

迁移到其他 Web 项目的方法 如果你想把这套思路迁移到其他 Web 项目,我建议按下面 4 步做。

  1. 先抽象公共骨架 保留 Agent 编排和 Skills 分层,不要和某个项目强绑定。

  2. 再准备项目知识源 包括:

  • 接口文档
  • 页面对象或元素清单
  • 业务词典
  • 历史测试用例
  • 公共方法库
  • 失败日志样本
  1. 再替换执行器 如果是接口项目,就接 API runner。 如果是 Web UI 项目,就接 Playwright 或 Selenium。 如果是前后端混合,就同时保留接口和 UI 两套执行能力。

  2. 最后建立闭环 不要只做到“生成脚本”,还要做到:

  • 可运行
  • 可校验
  • 可回退
  • 可归因
  • 可沉淀结果

这样才是真正可复用的测试 Agent。

你这个方案最大的价值 面试里你可以强调,你设计的不是一个“帮忙写测试脚本的小工具”,而是一套可扩展的测试自动化架构。

它的核心价值有三点:

  • 标准化:把测试流程从人工经验变成结构化流程
  • 可迁移:换项目只需要替换知识库和工具接入
  • 可进化:前期先做脚本生成,后期可以继续接失败归因、回归推荐、变更影响分析

一句话版 我的设计思路是把测试能力拆成 Agent 编排、Skills 能力模块和 MCP 外部连接三层,让 AI 负责理解和决策,让工具负责确定性执行,这样同一套方法不仅能服务当前项目,也能迁移到其他 Web 项目的接口测试、UI 测试和回归测试场景。