你的设计思路其实可以概括成一句话:
不是让 AI 直接“替你完成测试”,而是把测试流程拆成“可编排的 Agent + 可复用的 Skills + 可落地执行的 MCP/Tools”,让 AI 负责理解和决策,让工具负责确定性执行。
你面试里可以这样讲。
整体思路 我做的不是单点脚本生成,而是把测试流程平台化、模块化。因为不管换成哪个 Web 项目,测试工作本质上都还是这几类事情:
- 读取需求或用例
- 理解业务流程
- 找到对应接口、页面或依赖系统
- 生成测试动作或测试脚本
- 执行校验
- 输出结果、归因问题、沉淀资产
所以我没有把逻辑写死在某个项目里,而是抽象成三层:
- 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 步做。
-
先抽象公共骨架 保留 Agent 编排和 Skills 分层,不要和某个项目强绑定。
-
再准备项目知识源 包括:
- 接口文档
- 页面对象或元素清单
- 业务词典
- 历史测试用例
- 公共方法库
- 失败日志样本
-
再替换执行器 如果是接口项目,就接 API runner。 如果是 Web UI 项目,就接 Playwright 或 Selenium。 如果是前后端混合,就同时保留接口和 UI 两套执行能力。
-
最后建立闭环 不要只做到“生成脚本”,还要做到:
- 可运行
- 可校验
- 可回退
- 可归因
- 可沉淀结果
这样才是真正可复用的测试 Agent。
你这个方案最大的价值 面试里你可以强调,你设计的不是一个“帮忙写测试脚本的小工具”,而是一套可扩展的测试自动化架构。
它的核心价值有三点:
- 标准化:把测试流程从人工经验变成结构化流程
- 可迁移:换项目只需要替换知识库和工具接入
- 可进化:前期先做脚本生成,后期可以继续接失败归因、回归推荐、变更影响分析
一句话版 我的设计思路是把测试能力拆成 Agent 编排、Skills 能力模块和 MCP 外部连接三层,让 AI 负责理解和决策,让工具负责确定性执行,这样同一套方法不仅能服务当前项目,也能迁移到其他 Web 项目的接口测试、UI 测试和回归测试场景。