大模型、RAG、Agent 一起落地后,为什么AI系统测试比传统测试难这么多?

0 阅读15分钟

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集

接口是通的,日志是全的,功能演示也没问题。 可一到真实用户手里,系统就开始露出另一张脸:同样的问题,今天答得像专家,明天像在瞎编;知识库明明更新了,回答还在引用旧内容;工具已经接好了,执行结果却总在关键一步出错。

这几年,很多团队都在补一门新课:不是怎么把 AI 接进业务,而是接进去之后,怎么把质量稳住。

传统系统的测试难,难在功能多、链路长、回归重。 AI 系统的测试更难,难在你面对的已经不是一个单纯按规则运行的程序,而是一套由模型、Prompt、知识库、工具、上下文、记忆和编排逻辑共同作用的复杂系统。

问题看起来还是“它为什么答错了”, 但测试真正要回答的,已经变成了另一件事:

它为什么这次对、下次错;为什么演示时稳定、上线后失真;为什么代码没报错,用户却觉得它根本不能用。

一、传统测试方法,为什么一到 AI 系统就开始吃力

过去做传统软件测试,很多前提默认是成立的:

  • 输入边界大致能枚举
  • 执行逻辑大致能推导
  • 输出结果通常能精确断言
  • 缺陷一旦复现,重跑大概率还能复现

AI 系统没有把这些前提彻底推翻,但确实把它们逐个打松了。

维度传统系统AI 系统
输入结构化、边界相对明确自然语言、开放、多变
处理过程规则、分支、状态机概率生成、检索增强、工具协同
输出通常唯一或有限解多解、表述不固定
缺陷表现报错、异常、逻辑缺陷幻觉、偏题、不一致、越权、误调用
回归方式跑接口、跑 UI、比对结果还要做效果评估、稳定性评估、安全评估
风险来源代码、配置、依赖服务模型、Prompt、知识库、上下文、工具、记忆

所以,真正变化的不是“系统里多了个大模型”,而是测试对象本身换了

过去测试面对的是一个规则系统。 现在测试面对的是一套带有概率生成能力、上下文依赖、持续漂移和外部执行能力的系统。

这也是为什么很多团队会突然觉得,原来那套方法不是完全失效了,而是明显不够用了。

二、AI 系统测试到底难在哪

1. 输入空间直接爆炸了

传统系统里,输入再复杂,往往还能围绕字段范围、边界值、异常值来设计。 AI 系统里,用户输入是自然语言,而自然语言最大的特点不是复杂,而是变体无限

同样是在问退款规则,用户可能会说:

  • 帮我查下退款规则
  • 这个订单退不了怎么办
  • 你们七天无理由怎么判
  • 我昨天买的今天还能退吗
  • 这种情况到底算不算能退

业务语义相近,表达形式完全不同。

这意味着测试不能只覆盖“标准问法”,还要覆盖口语、省略、错别字、反问、否定、多轮追问、上下文承接、诱导式表达。 传统测试里,很多时候怕的是边界漏测。 AI 测试里,更常见的问题是:边界根本不是固定的。

2. 输出不再总是唯一答案

这也是 AI 测试和传统测试最大的分水岭之一。

不过这里有个常见误区需要先纠正:并不是所有 AI 任务都没有标准答案。

分类、抽取、审核、打标、意图识别、结构化生成这类任务,依然可以建立清晰的评测集和断言规则。 真正难的是开放式生成场景,例如问答、总结、改写、RAG 问答、多轮对话、Agent 执行。

这些场景的问题,不是“完全没法评”,而是它们经常没有唯一表述。 测试要看的,不再只是“值是否相等”,而是:

  • 是否事实正确
  • 是否覆盖关键点
  • 是否忠于知识来源
  • 是否前后一致
  • 是否出现无依据扩写
  • 是否触碰业务和安全边界

也就是说,AI 测试的断言方式,已经从“结果是否唯一”转向了“质量是否达标”。

3. 一个问题答错,根因常常不在模型

这是 AI 系统最容易误判的地方。

用户看到的是“回答错了”, 但工程上,错误可能出现在完全不同的环节。

以一个 RAG 系统为例,答错可能是因为:

  • 问题改写阶段把用户意图理解偏了
  • 检索没有召回到关键文档
  • 重排把真正重要的片段压到了后面
  • Prompt 约束不够严,让模型开始自由发挥
  • 知识库版本更新不一致
  • 历史上下文把旧信息带进了当前回答

如果进一步走到 Agent 场景,问题还会扩展到:

  • 工具选错
  • 参数组错
  • 权限失控
  • 失败后没有回退
  • 同一步骤重复执行

所以 AI 系统的缺陷,很多都不是单点 bug,而是链路耦合 bug

4. 可观测性比传统系统差得多

传统系统出了问题,通常比较容易看定位链路:

  • 哪个接口超时
  • 哪条 SQL 出错
  • 哪个字段不符合预期
  • 哪个状态码异常

AI 系统不是这样。 很多问题表面上只是“回答不太对”,但真要定位,就要同时看:

  • 原始输入
  • 系统 Prompt
  • 检索召回内容
  • 重排结果
  • 模型返回
  • 工具调用轨迹
  • 历史对话上下文
  • 最终输出

如果这些中间态没有被保留,没有评估埋点,没有统一日志,最后很容易出现一种常见局面:

线上说它不对,研发说本地复现不了,测试说根因看不出来。

所以 AI 测试不只是“测答案”,还在推动系统具备足够的可观测性和可诊断性

5. 版本漂移和数据漂移会不断重写结果

传统系统上线后,只要代码没变,行为通常不会自己变。 AI 系统不同。

下面任意一个因素变化,效果都可能跟着变:

  • 模型版本切换
  • 温度和采样参数变化
  • Prompt 调整
  • 知识库增量更新
  • 重排策略变化
  • 工具接口返回变化
  • 用户问题分布变化

这也是为什么 AI 测试最难的地方,往往不是第一次上线,而是后续持续迭代。 一个版本升级,看起来只是换了模型; 但对测试来说,等于要重新回答这些问题:

  • 准确率是不是提升了
  • 幻觉率是不是反而升了
  • 老问题有没有被重新引入
  • 时延和成本有没有恶化
  • 某些业务口径是不是跑偏了

传统回归更偏向功能一致性。 AI 回归更像是在做效果基线管理

6. Agent 让风险从“答错”升级成“做错”

普通问答系统,主要风险还是说错。 Agent 系统的风险,是做错。

当模型开始具备工具调用和任务执行能力,测试对象就从“文案输出”变成了“行为执行”。 它可能会:

  • 查数据库
  • 调接口
  • 发消息
  • 创建工单
  • 操作浏览器
  • 执行脚本
  • 写入系统状态

这时候测试关注点已经变了:

  • 它有没有选对工具
  • 参数是否正确
  • 有没有越权调用
  • 失败后能不能安全回退
  • 会不会重复执行
  • 遇到歧义指令时会不会误操作

传统系统很多时候是在展示结果。 Agent 系统是在产生行为。 行为一旦出错,代价往往比回答错一句话严重得多。

三、AI 测试真正难的,不只是模型不稳定

很多团队刚接触 AI 测试时,第一反应都是一句话: 模型不稳定,所以不好测。

这句话只说对了一部分。

模型的概率生成特性,确实会带来波动。 但 AI 测试真正复杂的地方,不只是“同一句话两次输出不完全一样”,而是整套系统结构已经变了

先看输出结果。 并不是所有 AI 场景都天然没有标准答案。 分类、抽取、审核、结构化生成这些任务,依然可以做强断言或接近强断言。 真正麻烦的是开放式生成任务,它们没有唯一表述,却又必须满足正确性、完整性、一致性、忠实性和安全性等多重要求。

再看问题来源。 很多线上故障表面看像模型回答错了,根因却并不在模型。 一个回答偏了,背后可能是检索没命中、重排有问题、知识过期、Prompt 约束冲突、工具参数错误,甚至是上下文污染。

再看质量保障方式。 人工多问几句,当然能发现一些明显问题,但这远远不够。 人工体验可以发现问题,却无法形成稳定回归。 今天试出来的结果,明天未必还能复现;这次看似优化有效,下次版本切换后也很难判断到底是真提升,还是只是碰巧答对。

所以,AI 系统测试之所以更难,不是因为它神秘,也不是因为它完全不可控。 真正的原因是:

  • 输入更开放
  • 链路更耦合
  • 评估更复杂
  • 可观测性要求更高
  • 版本漂移更频繁
  • 安全边界更大

测试方法不跟着升级,问题迟早会在生产环境里补回来。

四、AI 系统测试怎么做,才不是上线前临时试几句

真正可落地的 AI 测试,不靠“多问几轮”,而要做成工程化体系。 至少要把下面几件事搭起来。

1. 先拆层,再测试

不要一上来就问“这个 AI 助手好不好”。 先拆系统。

一个典型 AI 系统,至少可以拆成下面几层:

层级核心关注点
输入层表达覆盖、脏数据、歧义输入、对抗输入
Prompt 层指令约束、角色设定、格式控制、拒答策略
检索层召回率、命中率、噪音率、时效性
生成层正确性、完整性、一致性、幻觉率
工具层参数正确性、幂等性、异常处理、权限边界
Agent 层规划能力、路径选择、重试策略、失败恢复
系统层时延、成本、并发、监控、审计日志

这样做的价值在于,问题一出现,不至于所有锅都甩给模型。

2. 建测试集,而不是靠临场发挥

很多团队做 AI 测试,最大的问题不是不会测,而是没有自己的样本资产。 没有测试集,就没有基线;没有基线,就谈不上真正的回归。

至少应该准备这几类数据:

  • 业务高频问题集
  • 事实准确性问题集
  • 检索忠实性问题集
  • 边界问题集
  • 对抗问题集
  • 多轮会话问题集

这些数据不是为了把系统“考倒”,而是为了把系统真正高风险、最常见、最有业务价值的场景固定下来。 AI 项目越往后做,测试资产的重要性会越高。

3. 断言要升级成多层评估

AI 场景下,单纯做字符串比对很快就会失效。 更实用的方式,是把断言拆成几类:

规则断言看格式是否正确,字段是否齐全,是否触发明确业务规则。

语义断言看是否覆盖关键点,是否答非所问,是否和参考答案语义一致。

来源断言看回答是否真正来自知识库,是否出现无依据扩写,是否引用过期内容。

行为断言看工具是否正确调用,是否重复提交,是否发生越权或异常操作。

指标断言看准确率、幻觉率、工具成功率、时延、成本等是否达标。

AI 测试真正成熟的标志,不是能提很多“体验问题”,而是能把这些问题一步步转成可重复、可比较、可自动化的评估项

4. 离线评估、灰度验证、线上监控,一个都不能少

AI 测试绝不是上线前的一次性动作。 更稳妥的方式,是把验证过程拆成三段:

离线评估在固定测试集上跑版本对比,先看质量变化。

灰度验证在小流量场景下观察真实用户反馈,验证离线结论是否成立。

线上监控持续看实际问题分布、漂移情况、时延和成本异常,再把问题样本回流到测试集。

五、测试工程师在 AI 时代,真正稀缺的能力是什么

AI 系统测试变难,并不意味着测试岗位价值下降。 恰恰相反,很多团队现在真正缺的,不是“会调模型的人”,而是会做 AI 质量治理的人

1. 能把“感觉不对”翻译成“可评估问题”

产品说回答不太好,用户说体验不稳定,研发说本地没复现。 这时候,测试要能继续往下拆:

  • 是准确性问题,还是完整性问题
  • 是检索没命中,还是生成在胡乱补全
  • 是上下文串了,还是工具参数错了
  • 是模型退化了,还是知识库脏了

这个能力,本质上不是执行用例,而是在建问题框架。

2. 能看懂 AI 链路,而不是只盯最终文案

未来很多测试岗位,都会从“结果校验”走向“链路校验”。 不只要看页面和接口,还要能理解:

  • Prompt 设计逻辑
  • 检索与重排机制
  • 上下文组装方式
  • 工具调用协议
  • Agent 编排流程
  • 评估指标体系

不会这些,很多 AI 问题根本没法准确定性。

3. 能搭样本资产和回归基线

AI 系统最怕的不是第一次做不出来, 而是每次改完以后,谁都说不清到底是变好了还是变差了。

所以测试最核心的资产,会越来越集中在:

  • 标注样本集
  • 高风险场景集
  • 对抗样本集
  • 版本对比结果
  • 线上问题回流集

谁能把这些东西搭起来,谁就在团队里真正有不可替代性。

4. 懂安全边界和风险控制

AI 一旦接工具、接业务、接生产权限,测试就必须看更大的范围:

  • 提示注入
  • 越权访问
  • 数据泄漏
  • 危险操作误触发
  • 审计日志缺失
  • 人机协同边界不清

未来 AI 测试和安全测试、质量治理、系统治理,边界会越来越近。

写在最后

大模型、RAG、Agent 正在一点点进入真实业务。 很多团队以为压力最大的是模型能力,真正上线后才发现,更先顶不住的,往往是测试体系。

因为系统已经变了。 如果测试方法还停在过去,问题迟早会在生产环境里补课。

AI 时代不会让测试消失。 但它会淘汰只会沿用旧方法、却不愿意升级思路的做法。

接下来真正有价值的测试,不只是发现 bug, 而是帮助团队回答一个更关键的问题:

这个 AI 系统,到底能不能稳定、安全、可信地交给真实用户。

这件事,越往后走,越重要。

关于我们

霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。

学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践

我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。

在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。

同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。