软件测试的全部根基,是一行简单到不好意思说的逻辑:assertEqual(实际输出, 期望输出)——给系统一个输入,检查输出跟期望的一模一样不一样。一样就过,不一样就报错。五十年的软件质量大厦,盖在这块地基上。
AI 把这块地基抽掉了。同一个问题问模型十遍,得到十个措辞不同但都对(或者九个对一个错)的回答。「一模一样」这个判据,对一台按概率生成答案的机器根本不适用。测试怎么办?这一章讲这个行业正在长出来的新答案。
从验收一个答案,到验收一个分布
传统测试验证的是一个点:输入 X,输出必须是 Y。对 AI,你只能验证一个分布的形状:输入 X,输出落在「可接受区域」里的比例够不够高。
这个转变很像从质检螺丝钉变成质检厨师。螺丝钉抽检:尺寸量一下,合格就是合格。厨师怎么质检?你不能要求他每盘宫保鸡丁的每粒花生米位置相同,你只能说:抽一百盘,咸淡合格的要占九成以上,不许出现异物,不许上错菜。你验收的不是菜,是出菜水平的统计特征。
行业里长出来的对应物叫评估集(evals)——大白话说,就是一堆「有代表性的输入 + 评判标准」,成批地跑、按比例打分,而不是单条用例的对错。评估集是 AI 时代的测试套件,但它跟传统测试套件有三点本质不同:
- 分数是连续的。传统测试非过即挂;评估给出的是「87 分的贴合度」。这逼着团队回答一个以前不用回答的问题:多少分算够?
- 评判者经常也是模型。让另一个模型来给输出打分(行业里叫「模型当裁判」)——用人评太贵太慢。这在传统测试里不可想象,相当于让一台机器去验收另一台机器,而它自己也会犯错。
- 评估集会过时。用户提问的方式在变,评估集必须跟着真实流量更新,否则你在考一张去年的卷子。
大白话:传统测试像驾校的科目二,倒库压线就是不过,标准刚性。评估像给餐厅打星——没有一票通过的完美,只有「值不值得再去」的分布判断。
「多少分算够」是个商业决定,不是技术决定
这个新问题——多少分算够——是 AI 时代最被低估的变化。传统软件里这个问题不存在:转账功能,正确率必须 100%,没有商量。但对一个 AI 客服,回答准确率 95% 和 98% 的差别是什么?是成本、是延迟、是剩下那几个百分点的错误落在谁头上。
于是质量的定义权,有一部分从工程师手里转移到了产品和业务手里:可接受的风险长什么样,取决于错误的代价。给歌词推荐的 AI,错 5% 无所谓;给医疗建议的 AI,错 0.1% 都可能是事故。同一套评估技术,阈值画在哪里,是一个关于「你愿意为什么样的错误负责」的商业与伦理决定。工程师从「对错判定者」变成了「风险的量化和呈现者」——这也是「变软」的又一层含义:连「软件做对了没有」这件事,都变得可以商量了。
没有银弹,只有回路
诚实地说:这个行业目前还没有找到评估 AI 的银弹,评估模型本身可能出错、评估集可能偏离真实分布、「模型裁判」有自己的偏好。所以实践中的答案不是某一种测试,而是一个回路:评估集离线打分 → 小流量灰度 → 线上真实反馈回流 → 更新评估集。质量不再是一道上线前的门,而是一个持续运转的泵。
这个回路思想会在第八章当主角。这里先记住结论:测试从「证明它对」变成了「管理它错的方式」。而不确定性的影响远不止测试——它顺着第一章那条沟通链条往上爬,一直爬到「谁有权定义软件」这个根问题上。这是下一章。