大数跨境

智能体测试金字塔:AI时代的测试分层方法论

智能体测试金字塔:AI时代的测试分层方法论 51Testing软件测试网
2026-10-03
14
导读:扩展测试金字塔,新增“确定性×成本”维度,六层结构覆盖LLM非确定行为。跳闸检测绑定契约规则,确定性项做门禁、模糊项做监控。

点击蓝字

关注我们


一个维度已经不够用了

Martin Fowler的测试金字塔,以及Ham Vocke在 Fowler网站发布的实践版本,都是沿着单一维度划分测试:集成范围。


底层是单元测试,中间是集成测试,顶层是端到端测试。底层是大量快速、结果确定的单元测试;上层是少量慢速的端到端测试。


这套逻辑本身没有错,也没有过时。对于系统里确定性的部分,也就是任何真实系统里的绝大部分,它依然是正确的模型,完全可以继续照着用。


这套模型成立的前提,是默认所有测试都是确定性的:同样的输入,永远得到同样的通过或失败结果。


一旦系统里加入了大语言模型,这个假设就不成立了。系统变成非确定性的:同样的输入,不再保证同样的输出。同一个提示词跑两次,可能得到不同的表述、不同的结论数量、不一样的工具调用。


你没法用`assertEqual`来校验,也不能拿一个 8% 概率莫名变红的检查来卡合并。


所以这不是来替代 Fowler 金字塔的,是在它基础上做的扩展。集成范围这个维度保留不变,再加第二个维度:确定性与成本。现在每个测试都对应一个「范围,确定性」的坐标。


确定性的那几层就是原来的金字塔,保持不变。新增的工作,是在顶层再加两层,覆盖非确定性的部分、也就是模型驱动的、两次运行结果不会完全一致的模块。


整个方法论的核心,就是把每一项检查尽量往下、往「确定性」的方向推,能放回 Fowler 金字塔里就放回去,因为找 bug 成本最低、最可靠的地方,永远不是昂贵的模型评估。



六层结构

两个维度一共划分出六层。底部四层就是完整的 Fowler 金字塔,免费、确定性、每次提交都跑,只是放到智能体语境里换了个名字。


最上面两层是多数测试套件都没有的:针对每次运行结果都会变化的行为,做分级校验。


1. 纯单元测试:`f(input) -> output`。包括解析、格式化、校验、数值计算。没有 IO、没有网络、不涉及模型。这是最宽的底座,任何能重构到这个形态的逻辑都应该放这一层,正因为放在这里才能稳定高效。


2. 静态不变跳闸检测:投入产出比最高的一层,也是多数套件都缺失的一层。后面详细展开。


3. 进程内集成:真实组件互相调用,不暴露对外接口。速度快、零额外成本,因为全程都在本地运行。


4. 真实依赖端到端测试:启动真实的浏览器、守护进程或者子进程,但只针对集成逻辑本身做测试。外部依赖全部打桩,永远不要给被测主体打桩。


5. 针对在线模型的行为端到端测试:这一层被测的是提示词或者策略,必须调用真实模型。比如「植入已知漏洞的情况下,审查必须标记出来」「只读模式下,智能体绝对不能调用写入工具」。


6. 质量评估(模型做评委):当正确性本身带有主观性时,用第二个模型来评判第一个的输出。按照评分细则给输出分级,用区间判定是否通过,永远不用精确匹配。



跳闸检测是效率倍增器

静态不变跳闸检测完全不运行业务逻辑。它读取你自己的源码或者配置,用模式匹配校验契约是否成立。它是可执行的架构文档,毫秒级就能让构建失败。


你代码库里每条核心规则,比如「永远不要从 Y 模块导入 X」「所有写入都必须走这个辅助方法」「导入这个模块不能有副作用」,都对应一条测试,有人违反就直接失败,不用执行任何业务逻辑。


逻辑很简单:你写注释说「这里绝对不能做 X」,就在同一次变更里加上跳闸检测。没有测试约束的规则,只是个建议。


这就是带模型的产品能低成本保持正确的核心原因。很大一部分「回归问题」本质上都是契约违反,哪怕行为本身是非确定的,契约规则依然是确定的。



确定性决定卡点,成本决定频率

有一条核心原则能保证整套体系不混乱。每一项需要花钱的测试,也就是真的调用模型产生费用的,都先问一个问题:


这个测试不通过,有没有合理的、不是 bug 的原因?比如模型本身的差异、外部服务不稳定、主观阈值波动?


如果没有,它就是门禁卡点:每次 PR 都跑,不通过就不能合并。如果有,它就是定期监控项:永远不卡合并,按定时调度运行。


绝对不能用偶尔莫名变红的检查卡 CI,因为这会教所有人忽略红灯。稳定的项做门禁,模糊的项做监控。


这类检查的技巧是按区间校验,不是精确答案。精确匹配的断言,比如「智能体刚好找出 10 个问题」,只要模型表述方式变了就会随机失败,属于误报,只会让大家不再重视告警。


所以你应该植入一组已知问题作为标准答案,校验结果落在可接受区间内:植入的 10 个问题至少要检出 8 个,这是最低合格线;误报不能超过 3 个,这是最高上限。


系统真正可预测的地方就精确校验;只有模型本身的自然差异导致无法精确的地方,才留容差。



成本是设计约束

每次变更都跑全量付费测试,这样的套件没人用得起。所以你要像优化延迟一样优化成本:


●变更关联选择:只跑可能被本次变更影响的测试

●分级判定:先用便宜的正则检查过了,再调用模型,确认有必要才花钱

●可行的话用成本更低的评审模型,不用生成模型

●固定样例重放:录一次昂贵但可复现的模型响应,重复使用,不用每次运行都花钱


目标是一套付费测试,每次变更只花几美元,不是几百美元。


也是从这一步开始,评估不再是麻烦事,反而变成竞争优势。Garry Tan 一直提出一个观点:评估能力是 AI 创业公司的真正护城河,这是深耕客户场景沉淀出来的判断,通用基准复刻不了。


Hamel Husain 从工程角度也讲过同一个道理:你没法发布你测不了的 AI 产品,通用评估没用,必须围绕你的产品和你的数据来搭建。



实际落地要做什么改变

第一天不用六层全部搭齐。你只需要三件事:


●划清免费和付费的界线,保证默认执行的测试命令不会产生费用

●扎实的纯单元测试底座

●养成写跳闸检测的习惯


等产品里模型占比越来越高,上层再逐步补充。


真正的交付是思维方式的转变。做确定性软件的时候,测试给出的是是非答案:通过或者失败。


当系统里加入了模型,有些测试就变成了度量:分级、分区间、长期跟踪趋势。工程能力就体现在分得清两者的区别,不混为一谈。


AI 智能体本身的工作,就依赖快速、可靠的反馈循环。智能体测试金字塔,就是给这套反馈循环提供支撑的方式 —— 尤其当被测对象,已经不会每次都给出一模一样答案的时候。

E N D

图片

【声明】内容源于网络
0
0
51Testing软件测试网
博为峰51Testing软件测试网提供各种线上招聘、线上课程等网络服务,出版软件测试系列丛书及电子杂志,组织线上技术交流活动;同时还举办多种线下公益活动,如软件测试沙龙、软件测试专场招聘会等。
内容 3960
粉丝 0
51Testing软件测试网 博为峰51Testing软件测试网提供各种线上招聘、线上课程等网络服务,出版软件测试系列丛书及电子杂志,组织线上技术交流活动;同时还举办多种线下公益活动,如软件测试沙龙、软件测试专场招聘会等。
总阅读4.2k
粉丝0
内容4.0k