一、为什么 AI 系统测试和传统测试不同
核心三点:
传统系统:
-
输入结构化
-
系统逻辑确定
-
输出结果稳定
AI系统:
-
输入是自然语言
-
模型行为存在不确定性
-
系统可能调用工具执行操作
所以 AI系统测试不能只验证:
-
功能是否完成
-
接口是否正确
而需要从 系统链路角度进行分层测试。
二、AI Agent 系统整体流程
整体流程图。
用户输入
↓
输入处理层
↓
规则 / 控制层
↓
LLM 决策层
↓
Tool 执行层
↓
状态 / 存储层
↓
输出层
这就是一个 Agent系统的完整执行链路。
测试需要沿着这条链路逐层验证。
三、AI系统测试六层模型
每层要做 三件事:
1️⃣ 这一层做什么
2️⃣ 为什么需要
3️⃣ 重点测试什么
1 输入层
作用:
处理用户自然语言输入。
例如:
-
日期归一化
-
输入格式整理
-
基础过滤
为什么需要:
用户输入非常不稳定,例如:
- 昨天干啥来着
- 昨天干了啥
- 我昨天做了什么
如果直接交给模型:
-
成本高
-
行为不可控
测试重点:
-
非结构化输入
-
时间表达
-
垃圾输入
-
模糊表达
2 规则 / 控制层
作用:
决定请求如何进入系统。
例如:
-
意图路由
-
工具权限控制
-
敏感操作限制
为什么需要:
如果所有请求都交给 LLM:
-
成本高
-
延迟高
-
行为不可预测
因此系统通常采用:
规则优先 + LLM兜底
测试重点:
-
路由准确性
-
越权操作
-
非法调用
3 LLM 决策层
作用:
处理复杂语义理解。
例如:
-
意图理解
-
tool选择
-
参数提取
-
结果生成
为什么需要:
规则只能覆盖高频场景。
复杂输入仍然需要 LLM。
测试重点:
-
意图识别
-
Tool调用正确性
-
参数提取
-
幻觉问题
4 Tool 执行层
作用:
执行系统操作。
例如:
-
记录日志
-
查询记录
-
更新状态
为什么需要:
LLM 本身不会操作系统。
必须通过 Tool 执行。
测试重点:
-
参数校验
-
权限控制
-
异常处理
5 状态 / 存储层
作用:
保存系统数据。
例如:
-
工作日志
-
查询记录
-
Agent状态
在本项目中:
使用 JSONL 文件记录日志。
测试过程中发现:
并发写入时可能出现 空行 → KeyError。
测试重点:
-
并发写入
-
数据一致性
-
日志完整性
这一段是文章亮点。
6 输出层
作用:
向用户返回结果。
例如:
-
查询结果
-
操作反馈
-
错误提示
为什么需要:
AI生成的输出不一定正确。
测试重点:
-
数据准确性
-
信息一致性
-
幻觉问题
四、AI系统性能与安全测试
AI系统测试不仅是功能。
还包括:
性能测试
例如:
-
LLM响应时间
-
Tool执行延迟
-
并发处理能力
安全测试
例如:
-
Prompt Injection
-
Tool越权调用
-
数据泄露
五、总结
在实际项目中发现:
AI系统的测试难点往往不在模型本身,而在系统链路。
例如:
-
输入不稳定
-
Tool调用风险
-
状态一致性问题
所以在测试 Agent 系统时,更适合采用 分层测试方法。
这篇文章不是:
-
写 prompt
-
写工具
-
写模型
而是:
AI系统测试方法论总结。
以后每个项目都可以套这个:
输入
规则
LLM
Tool
状态
输出
后面继续梳理:
-
输入层测试
-
LLM决策测试
-
状态层并发问题
这三个有价值的方向。