大模型测试,我们在测试什么(一)
写在前面:
在开始动手测试之前,我们首先要搞清楚一个问题:大模型测试的对象到底是什么?
是一个模型,还是一个系统,是一个代码程序还是一个有“自主”意识的工具?
不同的测试对象,决定了不同的测试策略、工具选择和判断标准。
真实的测试场景:
假设你接手了一个大模型项目:《一个智能客服Bot》,用户提问后,系统会检索公司知识库,然后让大模型生成回答。
第一天,产品经理跑过来说:"模型回答不够准确,去测一下。"
第二天,算法工程师说:"我们换了一个更强的基座模型,去测一下。"
第三天,后端开发说:"检索逻辑改了,去测一下。"
第四天,业务方说:"用户反馈语气太正式了,Prompt改一下,去测一下。"
问题来了,每一次改动,你测的都是同一个东西吗?
在回答这个问题之前,我们来看下这个测试场景和我们之前传统软件测试的差异点:
1.需求定义从“精确规格”变成了“模糊意图”
传统测试中,需求告诉你“正确是什么”;大模型测试中,需求只告诉你“正确大概长什么样”。
2.设计依据从“需求文档”变成了“探索与经验”
传统测试的用例设计,是演绎法:从需求出发,推演出所有测试场景。
大模型测试的用例设计,是归纳法:从模型的行为边界中探索未知风险。
3.方案制定的确定性 vs 不确定性
传统测试方案可以精确回答:
-
测什么?(需求文档说了算)
-
测多少?(等价类+边界值,有穷尽的数学依据)
-
怎么测?(按测试用例一步一步执行)
-
怎么判断?(预期输出 vs 实际输出,非黑即白)
-
什么时候测完?(所有用例执行完毕,bug修复率达到标准)
大模型测试方案只能模糊回答:
-
测什么?(我们觉得重要的场景 + 线上常出现的场景 + 历史上出过错的场景)
-
测多少?(取决于预算和token成本,通常是一个“差不多”的数量)
-
怎么测?(批量跑 + 统计 + LLM-as-Judge + 人工抽样)
-
怎么判断?(看通过率是否在可接受范围内,看人工评分是否达标,但“达标线”本身也是个讨论出来的数字)
-
什么时候测完?(测试集跑完一轮只是开始,线上还要持续监控)
4.回归测试的“牵一发动全身”
传统测试中,改了一个功能,影响范围相对可控——你大概知道哪些模块受牵连,可以有针对性地做回归测试。
每一次改动,都相当于对整个系统做了一次“全局回归”。你无法精准地说“我只测这几个模块”,因为你不知道模型的内部决策边界在哪里。
回到最初的问题:每次改动,你测的都是同一个东西吗?
-
如果你问的是测试目标——是的,都是为了让这个应用更好用
-
如果你问的是测试对象——是的,都是同一个应用系统
-
如果你问的是测试的范围、重点、判断标准——完全不同
换基座模型,你测的是模型能力的迁移——哪些能力提升了,哪些能力反而退步了?
改Prompt,你测的是指令遵循度的变化——新的Prompt是否让模型更听话了?
改检索逻辑,你测的是检索质量的波动——召回率提升了还是下降了?牺牲了什么?
改知识库,你测的是知识覆盖和准确性——新知识是否被正确使用?旧知识是否被干扰了?
在这里我补充一下,这四层是我检索了很多资料得出的,一开始我也不知道大模型测试的分层概念,后面仔细一想想,其实之前做的测试工作就是遵循于这四层开始的,大部分是后面三层的测试工作,即Prompt、检索逻辑与知识库。
如果你把这些都混在一起测,就像去医院挂了一个"万能号",医生看了一眼说"回去多喝热水"——你永远找不到真正的病灶在哪里。
大模型分层测试
传统软件测试中,我们有明确的分层:单元测试 → 集成测试 → 系统测试 → 验收测试。每一层的测试对象、测试工具、判断标准都不一样。
由此基于传统软件测试分阶段进行测试的工作流程,大模型测试或许也可以基于不同“能力层级”进行分层测试。
分层的好处:
1.便于诊断问题
当产品经理说"回答不准"时,你就能追问一句“你觉得是哪一层的问题?是模型没理解问题,还是没检索到正确资料,还是Prompt没把要求说清楚?”
大模型测试四层金字塔示意图

金字塔的宽度表示"影响范围"——基座模型问题影响所有上层应用,而Agent问题只影响特定场景。
第一层:基座模型能力评测
接触的比较少,略过以后补充。
第二层:Prompt/指令遵循测试
什么是Prompt层
给基座模型加一层"使用说明书",就是Prompt。这一层需要验证:模型有没有按照你给的指令去做。在给定Prompt下,模型的输出是否符合指令要求。
测试的核心问题:
- 模型是否理解了指令的意图?
- 输出格式是否符合要求(JSON、表格、特定结构)?
- 是否遵循了角色设定("你是一个专业的客服")?
- 是否遵守了约束条件("字数控制在100字以内")?
Prompt的组成部分与测试要点
一个完整的Prompt通常包含以下元素,每个元素都有对应的测试点:
【角色设定】你是一个专业的客服代表
→ 测试:语气是否专业、用词是否得体
【任务描述】请根据用户的问题,给出解决方案
→ 测试:是否理解了"解决方案"而不是"产品介绍"
【输出格式】请用JSON格式返回,包含solution和reason字段
→ 测试:格式是否正确、字段是否完整
【约束条件】字数不超过200字
→ 测试:是否遵守长度限制
【示例参考】例如:"用户问退货流程,返回退货指引文件或具体的操作步骤示例"
→ 测试:是否模仿了示例的风格和结构
典型测试方法
- **格式验证**:用正则或JSON Schema验证输出格式
- **指令遵循率**:统计多少比例的回答完全遵守了所有指令
- **A/B测试**:同一个问题,不同Prompt版本的效果对比
- **边界试探**:指令中隐含的冲突(如"用中文回答,但专业术语保留英文")
实例:
简单进行验证,prompt在大部分通用大语言模型中,都可以通过对话进行设定,下面是实际使用大模型中,通过对话设定大模型角色,完成对话任务的截图。
角色设定为专业售后客服

角色设定为专业技术人员

从两次对话的不同返回结果来看,prompt中仅对大模型角色设定进行更改,但是对其返回的结果却产生了较大的变化,
更多推荐


所有评论(0)