Chunlin 的论文科普

你的 LLM 智能体可能根本没被好好测过?从 2572 个测试看行业现状

你做了个能调用多个工具、完成复杂任务的 LLM 智能体,上线前跑了几百个测试全绿——但一到真实场景就翻车。问题可能不是你写的功能有 bug,而是你测的东西从一开始就没踩中智能体真正的风险点。

一、为什么智能体测试和普通软件不一样?

先从我们熟悉的传统软件测试说起。普通软件的逻辑是确定的:给定输入,输出是可预期的,测试的核心是验证”代码是否按设计执行”。你可以写单元测试测每个函数,写集成测试测模块协作,最后跑端到端测试验证完整流程——每一步的对错都有明确的标准。

但 LLM 智能体从根上就不一样。它的核心是大语言模型,天生带有非确定性(non-determinism,同一个输入多次调用可能得到不同输出)、动态性(运行中会根据环境反馈调整行为)和上下文依赖(输出依赖整个对话历史)[7]。这三个特性让传统测试的很多假设直接失效:你没法再用”输入 A 必须输出 B”这种简单断言来测,因为智能体可能用十种不同的路径都完成任务,也可能在你没覆盖到的上下文里突然做出奇怪的行为。

有研究者把 LLM 应用拆成三层来理解测试的难度:最外层的系统外壳层(System Shell Layer,比如 API 接口、工具调用的代码框架)和传统软件没区别,传统测试方法直接能用;中间的提示编排层(Prompt Orchestration Layer,比如怎么组织提示词、怎么管理多轮对话)就需要把传统测试做语义上的转译;最核心的LLM 推理核心层(LLM Inference Core)则完全是另一套范式,传统方法基本用不上 [7]。

当然,实际情况比这个分层比喻更复杂——很多智能体的问题恰恰出在层与层的交界处,比如工具调用的格式错误、上下文溢出导致的行为突变,这些都不是单独测某一层能发现的。

二、实测 2572 个测试:智能体测试的三个”偏科”

光说”难”没用,行业实际到底测成什么样?一篇 2026 年的实证研究挖了 GitHub 上的主流智能体项目,人工标注了 240 个模块里的 2572 个测试方法,还访谈了 10 位行业资深从业者,结果发现当前的智能体测试有三个严重的”偏科” [1]。

第一个偏科:测试级别偏单元,缺整车路试。 2572 个测试里,单元测试占了 61.8%,交互/集成级占 34.6%,真正测多个工具协作的多工具场景只有 3.5%,API 级的端到端测试更是只有 0.1% [1]。打个比方:你造了一辆汽车,60% 的精力在单独检查每个螺丝和零件,30% 在测几个零件拼起来好不好用,只有不到 4% 在测”发动机+变速箱+刹车”的协作,几乎没人真的开上路试试。

这不是某一个项目的问题,而是行业普遍现象。另一项对 39 个开源智能体框架和 439 个应用的研究也发现,测试精力出现了”倒挂”:工具、工作流这些确定性组件占了超过 70% 的测试投入,而真正由大模型驱动的核心规划逻辑(Plan Body)只占不到 5%,最关键的提示词(Trigger 组件)甚至只出现在约 1% 的测试里 [8]。最容易出问题的地方,反而测的最少。

第二个偏科:测试数据偏简单,像在做练习题。 测试用的数据质量也堪忧。研究归纳了 23 种测试模式,发现数据类里”真实合成数据”占 54.04%,“哑数据”(比如 test1、test2 这种占位输入)占 39.89%,真正用真实场景数据的测试只有 1.52% [1]。这就像考试前只做最简单的课后练习题,连模拟卷都不刷,直接上高考考场——不翻车才怪。

而且测试里大量使用 mock(模拟):34.45% 的测试会 mock 智能体或工具,9.37% 会 mock 整个环境 [1]。mock 本身不是坏事,它能让测试更快更稳定,但如果所有测试都在 mock 环境里跑,你永远不知道真实环境里工具返回异常、网络超时、数据格式不对的时候,智能体会不会崩。

第三个偏科:非功能测试极少,安全都靠一个项目撑场面。 非功能测试(安全、性能、内存、策略合规这些)整体只占 7.5%,其中安全测试占了近一半,但仔细一看,三分之二的安全测试都来自同一个叫 Upsonic 的项目,大部分项目几乎不测安全、性能这些关键属性 [1]。换句话说,行业整体的非功能测试基本是”秃子里拔将军”——少数项目做了一点,大多数项目完全空白。

更有意思的是,测试级别还和你用的框架显著相关:MCP/FastMCP 偏单元测试,LangChain/LangGraph 单元与集成较均衡,DSPy 偏集成测试 [1]。这说明很多团队的测试策略不是主动设计的,而是被框架的易用性”推着走”的——框架好测哪一层,就多测哪一层。

三、只看成功率还不够:智能体的”行为一致性”被忽视了

就算你把上面的问题都解决了,测了集成、用了真实数据、也覆盖了安全,你可能还是漏了一块关键盲区:行为一致性(behavioral consistency)。

我们平时测智能体,最常用的指标就是成功率——100 个任务里成了多少个。但成功率只告诉你”结果对不对”,不告诉你”过程靠不靠谱”。两个成功率相同的智能体,可能一个是每次都用稳定的策略解决问题,另一个是瞎猫碰上死耗子,东一榔头西一棒子碰巧蒙对了。

2026 年的一篇论文提出了一个叫 BCM(Behavioral Consistency Metric,行为一致性指标) 的东西,专门衡量智能体跨任务的行为一致性 [2]。它的思路是:从智能体的执行轨迹里提取一些和成功相关的行为特征(比如步数、搜索/编辑/测试的占比、动作多样性、错误频率这些),然后看同一个智能体在不同任务上的行为模式有多像——越像,说明它的策略越稳定。

用 BCM 测了 6 个智能体在软件工程任务上的约 9000 条轨迹后,研究者发现了一个很反直觉的现象:成功率和一致性是两回事,可以完全分离 [2]。比如 GPT-4o 和 Llama-405B 的成功率差不多,都是 25% 左右,但 GPT-4o 的 BCM 是 0.814,Llama-405B 只有 0.071,差了十多倍 [2]。换句话说,同样是做对四分之一的题,一个是靠稳定的解题方法做对的,另一个基本是靠随机发挥碰对的。

更有意思的是,跨任务一致性和同任务可复现性也是两回事。开源 Llama 智能体在同一道题上重复做时,行为挺一致(同任务 BCM 能升到 0.348),但换一道不同的题,策略就完全变了(全局 BCM 只有 0.071)[2]。这就像学生背答案背得很熟,同一道题反复做都对,但换个题型就不会了——你只测同任务的可复现性,根本发现不了这个问题。

研究者还聚类出了三种智能体行为模式:果断执行者(步骤短、错误少、成功率高)、漂移探索者(步骤长、错误多、成功率低)、冗长极简主义者(步骤短但每步很长、成功率中等)[2]。前沿模型大多集中在第一种,开源模型则三种都有,还经常换风格。你要是只看成功率,根本不知道自己的智能体到底是”真的会”还是”运气好”。

当然,BCM 也有局限:它用的是表层结构特征,不直接捕捉语义策略,而且目前只在软件工程任务上验证过 [2]。但它至少提醒了我们一件事:智能体的可靠性,远不止”成功率”这一个维度。

四、我们试过的解法:从多智能体生成测试到专用协议

问题摆在这里,行业里也不是完全没尝试。目前已经有几个方向在探索怎么改进智能体测试。

第一个方向:用多智能体自动生成测试用例。 既然人工写测试用例又慢又覆盖不全,那能不能让 AI 帮我们写?2025 年有人提出了一个叫 ITA(Intelligent Test Automation,智能测试自动化) 的框架,用多个自主智能体协作,根据需求动态生成、验证和执行测试用例 [6]。这些智能体之间可以互相沟通,迭代改进测试用例的准确性。比如一个智能体负责根据需求生成测试,另一个负责检查测试有没有覆盖边界情况,还有一个负责执行并反馈结果。

不过这个方向目前还比较早期,论文仅报告”在多种测试场景下展示了通用性和效率” [6],具体效果怎么样、能不能生成复杂的智能体场景测试,还得等更多实证数据。而且它也面临一个根本问题:如果生成测试的智能体本身就有偏见,那生成的测试用例也会有盲区。

第二个方向:给智能体做专用的测试协议。 既然传统测试工具不适合智能体,那能不能专门设计一套适合智能体交互的测试协议?2025 年的一篇论文提出了 AICL(Agent Interaction Communication Language,智能体交互通信语言) 协议,专门为智能体之间的通信设计了测试友好的特性 [7]。比如协议里可以内置断言、追踪、回放的功能,让智能体的交互过程更容易被观测和验证。

同时这篇论文也提出了四类协作测试策略:保留(Retain,直接用传统方法测确定性部分)、转译(Translate,把传统测试做语义改造用于编排层)、整合(Integrate,把 AI 安全领域的方法和软件工程测试结合起来)等 [7]。思路是对的,但协议要落地还得解决工具链标准化的问题——总不能每个团队自己造一套轮子。

第三个方向:用多智能体架构本身提升可测试性。 还有一种思路是从设计上就让智能体系统更容易测。比如 Polaris 这个多智能体企业数据分析框架,用一个”监督者智能体”来动态分配任务,把每个专用智能体的职责拆得很清楚 [3]。监督者会根据每个智能体的能力匹配度、历史可靠性、成本来派活,干砸了还能立刻换人或回滚 [3]。

这种架构的好处是,每个智能体的职责单一,更容易单独测试;而且监督者本身就维护了任务状态和执行历史,相当于天然有了测试追踪的能力。当然,它也有局限:目前只在结构化企业数据上验证过,而且实验规模不大(只有 40 条测试样本)[3]。

五、前方的坑:智能体测试还有四个没答案的问题

说了这么多现状和尝试,老实说,这个领域还处在非常早期的阶段。两篇核心论文加起来,至少有四个开放问题,目前谁也没有标准答案 [1][2]。

第一个问题:智能体的可测试性到底有没有形式化基础? 传统软件测试有一整套形式化理论,比如路径覆盖、等价类划分、变异测试这些,但这些理论的前提是系统行为是确定的。智能体的非确定性让这些基础都松动了——你连”正确行为”的边界都很难定义,更别说形式化地证明测试覆盖度了 [1]。怎么给智能体测试建立一套坚实的理论基础,现在还是空白。

第二个问题:复杂交互场景下,测试目标怎么定义? 单工具、单智能体的测试目标还好说,多工具协作、多智能体交互的时候,测试目标就变得非常模糊。比如一个智能体调用三个工具完成一个任务,中间的路径可能有几十上百种,哪些算”正确路径”?哪些算”可接受的错误”?哪些是”必须避免的失败”?这些目标现在基本靠拍脑袋,没有统一的定义方法 [1]。

第三个问题:有没有针对智能体的”故障注入”测试方法? 传统软件有故障注入测试——故意给系统制造错误,看系统能不能扛住。但智能体的”故障”是什么?是提示词被篡改?是工具返回异常格式?是中间步骤推理出错?这些故障怎么分类、怎么注入、怎么评估影响,目前都没有成熟的方法 [1]。我们现在大多是在”正常路径”上测,很少主动给智能体”找麻烦”。

第四个问题:行为一致性到底是什么,能不能用来做可靠性监控? BCM 让我们看到了行为一致性这个维度,但它目前只是个代理指标——它衡量的是”成功预测性结构特征的一致性”,不是真正的语义策略一致性 [2]。我们甚至还说不清楚”稳定的跨任务策略”到底由什么组成。更实用的问题是:能不能在智能体运行到一半的时候,通过它的早期行为信号预判它会不会失败?如果可以,就能做实时的可靠性监控,在智能体搞砸之前就介入 [2]。

如果你只记住一件事

当前的 LLM 智能体测试,本质上是在用传统软件测试的思路测一个完全不同的新物种——我们花了大部分精力测那些好测的、确定的部分,而真正决定智能体可靠性的核心(多工具协作、真实场景、行为一致性、非功能属性),要么测的极少,要么根本没测。


参考文献

  1. Tangent: An Empirical Study of Testing Practices for LLM-Based Agent Applications(arXiv (Cornell University)、2026、全文精读)
  2. Measuring Cross-Task Behavioral Consistency in Language Model Agents(arXiv、2026、全文精读)
  3. Polaris : Multi Agentic System for Conversational Enterprise Analytics(arXiv、2026、全文精读)
  4. Does the way we write a theory change the program an LLM builds from it? A prospective randomized study of renderer format in LLM theory-to-program translation(arXiv (Cornell University)、2026、全文精读)
  5. Reference-Free Post-Training of Open Large Language Models for Multilingual Machine Translation(arXiv (Cornell University)、2026、全文精读)
  6. Intelligent Test Automation: A Multi-Agent LLM Framework for Dynamic Test Case Generation and Validation(International Journal on Science and Technology、2025、仅摘要)
  7. Rethinking Testing for LLM Applications: Characteristics, Challenges, and a Lightweight Interaction Protocol(ArXiv.org、2025、仅摘要)
  8. An Empirical Study of Testing Practices in Open Source AI Agent Frameworks and Agentic Applications(ArXiv.org、2025、仅摘要)