AI测试-08-AI测试平台怎么拆模型层工具层执行层和证据层
AI 测试平台最容易在第一阶段看起来很顺。
输入一句自然语言,模型理解任务,调用工具,跑出结果,再把结论写进报告。
从演示效果看,这条链路足够吸引人。
但只要平台开始进入真实测试场景,问题很快就会出现:
- 模型输出不稳定,到底是谁来兜底
- 工具一多,调用顺序越来越乱
- 任务中断后,状态不知道该从哪一层恢复
- 报告有结论,但没有足够证据支撑
- 一次失败到底算模型问题、工具问题还是环境问题,难以收敛
这些问题的根因通常不是模型不够强,而是平台没有把边界拆开。
AI 测试平台如果把理解、执行、取证、收口都堆在一个模块里,短期可以跑通,长期一定会失控。
更稳的做法是明确拆出四层:
- 模型层
- 工具层
- 执行层
- 证据层
这篇文章只聚焦一个问题:AI 测试平台为什么要按这四层拆,以及每一层应该负责什么、不该负责什么。
一、为什么四层拆分是必要条件,不是架构美化
传统自动化平台里,脚本和执行引擎边界通常已经比较明确。
AI 测试平台不同,它引入了一个新的不确定因素:模型。
模型会带来两类变化:
- 它能理解意图、补足上下文、规划步骤
- 它也会误判、幻觉、越权、漂移
如果没有分层,平台就会出现三个典型后果。
1. 失败归因越来越混
例如一个任务失败,表面现象可能是:
- 元素没点到
- 接口没调通
- 结果没收上来
- 报告写错了
但真正根因可能分别来自:
- 模型选错动作
- 工具参数不对
- 执行层状态断了
- 证据层丢了关键结果
不拆层,失败都只能被归成“AI 不稳定”。
2. 平台越做越重,越改越脆
如果模型模块里直接塞:
- 工具调用
- 状态缓存
- 重试逻辑
- 证据写入
- 报告生成
后面任何一个改动都会牵一片。
模型一升级、工具一增加、报告一调整,平台就会出现连锁回归。
3. 风险没有独立收口位置
AI 测试里的风险主要集中在:
- 判断不确定
- 步骤顺序错误
- 工具越权
- 结果收口失真
- 证据不足却输出确定结论
这类风险如果没有单独层级收口,只靠提示词约束,基本不够。
所以四层拆分的价值不在“看起来更像架构图”,而在:
- 让每一层都只做自己该做的事
- 让失败可以定层归因
- 让高风险动作有独立拦截点
- 让证据和结论不再混在一起
二、模型层负责理解和规划,不负责直接执行
模型层是 AI 测试平台最显眼的一层,但不应该是最重的一层。
1. 模型层该负责什么
模型层更适合承担这些职责:
- 理解任务意图
- 结合上下文生成步骤建议
- 选择候选工具
- 组织输入输出语义
- 对结果做摘要和说明
这一层的本质是:把自然语言任务收成结构化意图。
2. 模型层不该负责什么
模型层不适合直接负责:
- 发起真实写操作
- 持久化任务状态
- 管理执行重试
- 判断权限是否合法
- 充当最终事实来源
原因很直接:
- 模型擅长推理,不擅长强约束
- 模型输出本质是概率结果,不是系统事实
- 一旦让模型直接掌控执行和状态,失败会很难收口
3. 模型层更合适的输入输出
模型层的输入不应该是一段松散提示词,而应该至少包含:
- 任务目标
- 当前步骤状态
- 环境信息
- 工具白名单
- 上一步执行结果
- 当前证据引用
模型层的输出也不应该是自由文本,而更适合收成:
- 下一步意图
- 候选工具
- 参数草案
- 风险标记
- 对结果的不确定性说明
这样做的目的不是限制模型发挥,而是让平台有地方接住模型输出。
三、工具层负责能力封装,不负责任务编排
工具层最容易被写成一堆零散函数。
短期看方便,长期会让平台越来越乱。
1. 工具层该负责什么
工具层更适合负责:
- 统一工具接口
- 参数校验
- 权限校验
- 执行前置检查
- 标准化返回结果
- 原始执行日志采集
这里的核心不是“把动作做掉”,而是把动作变成受控能力。
例如一个 call_api 工具,不应该只负责把 HTTP 请求发出去。
更完整的职责应该包括:
- 校验当前任务是否允许访问这个接口
- 校验环境和租户边界
- 校验参数是否完整
- 记录请求上下文
- 返回标准化响应和错误码
2. 工具层不该负责什么
工具层不该直接承担:
- 多步骤任务调度
- 失败后的恢复编排
- 任务级状态写回
- 报告结论生成
否则工具层会慢慢演变成执行层,最后难以复用。
3. 工具层最关键的设计点
工具层至少要做到三件事:
- 工具白名单和能力边界清晰
- 参数和返回结构稳定
- 同一个工具失败时有可识别错误分类
只有这样,执行层才知道下一步是该重试、该跳过,还是该转人工复核。
四、执行层负责状态机和失败收敛,不负责业务理解
执行层是最容易被忽略的一层,但它往往决定平台能不能长期稳定运行。
1. 执行层该负责什么
执行层更适合承担:
- 任务拆步
- 状态机推进
- 超时控制
- 重试策略
- 中断恢复
- 并发隔离
- 结果收口
这一层要回答的是:
- 任务现在跑到哪一步
- 哪一步失败了
- 失败能不能恢复
- 该不该继续
- 该不该终止
2. 执行层不该负责什么
执行层不适合负责:
- 自己理解业务目标
- 自己猜下一步动作
- 自己生成结论文案
这类能力更适合留在模型层或证据层上方的报告层。
3. 执行层的关键是状态设计
AI 测试平台的状态不能只写:
- 运行中
- 成功
- 失败
更实用的状态通常至少包括:
- 待执行
- 规划完成
- 执行中
- 等待证据
- 待复核
- 成功
- 失败
- 中断
- 已回收
如果状态太粗,后面中断恢复和失败分析都会越来越难做。
4. 执行层怎么处理失败收敛
失败收敛至少要分三类:
- 可重试失败:网络超时、临时资源不可用
- 需复核失败:证据冲突、模型判断不确定
- 必须终止失败:越权、环境错位、关键步骤失控
如果所有失败都统一重试,平台很容易把一次小问题放大成更大的现场污染。
五、证据层负责事实沉淀,不负责替代事实
AI 测试平台里最容易被压缩掉的一层就是证据层。
原因通常是它“不如模型效果直观”。
但真正进入生产级使用后,证据层往往比模型层更重要。
1. 证据层该负责什么
证据层更适合负责:
- 保存原始执行结果
- 保存截图、日志、请求响应、页面快照
- 给每条证据分配引用 ID
- 记录证据和步骤、任务、环境的关联关系
- 提供可审计的回放入口
这一层的目标不是生成结论,而是保证:
- 结论以后还能被验证
- 失败以后还能被还原
2. 证据层不该负责什么
证据层不适合负责:
- 代替模型做总结
- 把原始结果压缩成一句成功或失败
- 直接生成业务报告结论
证据层越“聪明”,越容易把事实和解释混在一起。
3. 证据层为什么必须独立
如果证据和结论混存,后面最容易出现两类问题:
- 模型解释盖过原始事实
- 报告可读性提高了,但可复核性下降了
AI 测试最怕的不是偶发失败,而是报告看起来很顺、后来却找不到证据。
六、四层之间的数据流应该怎么走
四层拆开后,最关键的是数据流不要乱。
一个更稳的基础链路通常是:
- 模型层读取任务上下文,产出下一步意图和候选工具
- 执行层接住这个意图,决定是否推进当前步骤
- 工具层校验权限和参数,执行真实动作
- 工具层把原始结果返回给执行层
- 执行层更新状态,决定继续、复核还是终止
- 证据层沉淀原始结果和引用关系
- 模型层在需要时只对结构化结果做解释,不覆盖原始事实
这条链路里最需要守住两条线:
- 模型层不能绕过执行层直接调工具
- 证据层不能被模型解释覆盖
只要这两条线守不住,平台很快就会变成“模型直接带着工具乱跑”。
七、最小可执行骨架
如果平台还在第一阶段,不需要一开始就做成大而全系统。
但至少应该先把下面这条骨架做出来。
1. 任务入口
- 任务目标
- 环境 ID
- 允许工具白名单
- 风险等级
- 任务上下文初始化
2. 模型层输出
- 当前步骤意图
- 候选工具名
- 参数草案
- 风险提示
- 不确定性标记
3. 执行层校验
- 是否允许推进
- 当前步骤状态是否合法
- 是否命中中断或回滚条件
- 是否需要转人工复核
4. 工具层执行
- 参数校验
- 权限校验
- 工具调用
- 返回标准化结果
5. 证据层写入
- 原始响应
- 关键截图
- 日志片段
- 步骤引用 ID
- 审计字段
6. 执行层收口
- 更新状态
- 判断下一步
- 生成阶段结果
- 命中风险时终止或转复核
八、边界检查点
平台每增加一个新能力,都可以先用下面这组问题做边界检查。
1. 模型层检查点
- 这项能力是不是必须由模型理解
- 模型输出是不是结构化的
- 模型有没有机会直接绕过规则层
2. 工具层检查点
- 工具是否有清晰输入输出
- 是否做了权限校验和参数校验
- 返回结果是否能被统一收口
3. 执行层检查点
- 任务状态是否可追踪
- 中断后能不能恢复
- 失败分类是否足够清晰
4. 证据层检查点
- 关键步骤有没有原始证据
- 证据是否可关联到任务和步骤
- 模型解释是否覆盖了原始事实
只要其中一层回答不清,后面就容易出现“能跑,但不可信”的情况。
九、最容易拆错的几种方式
1. 把工具层写成执行层
表现通常是:
- 工具自己决定重试
- 工具自己推进下一步
- 工具自己写任务状态
这样做的后果是:
- 任务链路散在各个工具里
- 出问题时找不到统一状态机
2. 把模型层写成万能控制器
表现通常是:
- 模型自己挑工具
- 模型自己改参数
- 模型自己判断是否继续
- 模型自己决定是否忽略失败
短期看自由度很高,长期会让越权和误判越来越难控。
3. 把证据层降级成附件仓库
表现通常是:
- 只在失败时截张图
- 日志没有步骤关联
- 请求响应没有保存原文
- 报告里只有摘要,没有证据索引
这会让平台在看板层看起来很完整,在复盘层几乎没有抓手。
4. 把执行层缩成一个简单队列
如果执行层只会“拿任务 -> 跑完 -> 返回结果”,那平台一旦进入:
- 多步骤任务
- 中断恢复
- 风险拦截
- 审计回放
就会明显吃力。
十、真实案例:一次 UI + API 混合任务为什么明明功能都成功了,平台还是判定架构有问题
场景
一个 AI 测试任务需要完成:
- 打开订单页面
- 确认页面展示已支付
- 调只读接口确认订单状态
- 生成截图和结论
平台第一版为了追求速度,把模型层和执行层混在一起实现。
模型直接决定下一步,也直接调用工具。
执行
任务跑通了,页面截图存在,接口也返回成功。
最终报告显示任务通过。
现象
后续回放时发现三个异常:
- 截图里的页面状态来自缓存页面,不是本次操作结果
- 接口结果来自上一次任务残留上下文
- 平台无法确认是哪一步真正决定了“任务通过”
从表面上看,功能结果是对的。
但从平台角度看,证据链已经失真。
排查
拆链路后发现:
- 模型层没有只输出意图,而是直接带参数调用了页面工具。
- 执行层没有独立状态机,导致旧会话上下文继续被复用。
- 证据层只保存了最终截图,没有保存页面切换前后的步骤引用。
- 接口工具返回成功后,平台直接把结果写进报告,没有经过统一收口。
也就是说,这次任务不是“用例逻辑错了”,而是平台分层拆错了:
- 模型层越界
- 执行层缺位
- 证据层过薄
修复
后续修复动作包括:
- 模型层只保留意图和参数草案输出,不允许直接调工具。
- 执行层补充步骤状态和会话隔离,任务切换时强制清空旧上下文。
- 工具层统一返回标准化结果和步骤 ID。
- 证据层把页面快照、接口响应和步骤引用强绑定。
- 报告层改成“先证据、后解释”的收口方式。
修完之后,任务速度有所下降,但平台开始具备可复盘、可审计、可恢复的基础能力。
对 AI 测试平台来说,这种变化比单次演示更重要。
十一、AI 测试平台真正要拆开的,不是技术栈,而是责任边界
AI 测试平台最容易在前期被误解成一个“把大模型接进自动化”的项目。
真正决定平台成熟度的,往往不是接入了哪种模型,而是有没有把下面这些边界守住:
- 模型层只做理解和规划,不直接执行业务动作
- 工具层只提供受控能力,不负责任务编排
- 执行层只做状态推进和失败收敛,不替代模型理解
- 证据层只沉淀事实,不覆盖事实
这四层拆清楚后,平台才有可能继续往下做:
- 风险控制
- 任务恢复
- 审计闭环
- 证据复用
- 多模型接入
如果这四层一开始就混在一起,平台前面跑得越快,后面返工通常越大。
AI 测试平台真正需要优先搭好的,不是“更强的智能感”,而是能长期承受变化的工程边界。