一个AI生成测试用例时,你凭什么相信它没瞎编?1865年热力学里的老概念,现在成了检测大模型"底气足不足"的体检报告。
从蒸汽机到ChatGPT:一个公式的跨界150年
德国物理学家克劳修斯在1865年提出"熵"(Entropy,熵)时,想的是蒸汽机效率。150年后,香农把它搬进信息论,用来算"一件事有多不确定"。
这个跨界够远,但逻辑意外通顺。蒸汽机里的热损耗,和大模型生成文本时的"随机瞎猜",本质上都是混乱度的度量。测试自动化领域现在拿它当标尺:熵越高,模型越"心虚"——它对答案没把握,输出像掷骰子。
Claude E. Shannon的改编公式长这样:H(X) = -Σ p(x) log p(x)。别被吓到,翻译成人话就是:把所有可能结果的概率丢进对数里加权求和,负号一调,混乱度就出来了。
测试工程师的实际用法更直白。跑视觉回归测试时,模型对某张截图的标注置信度分布如果是[0.9, 0.05, 0.05],熵低,靠谱;如果是[0.4, 0.35, 0.25],熵高,建议人工复核——这模型自己都没想明白。
交叉熵:当模型预测撞上真实答案
单独算熵不够。你还得知道模型"猜"的和实际"对"的差多远,这叫交叉熵(Cross-Entropy,交叉熵)。公式是H(p,q) = -Σ p(x) log q(x),p是真实分布,q是模型嘴硬说的分布。
Intent Engineering(意图工程)里这招杀器。设计测试场景时,你用自然语言描述用户意图,模型生成对应操作步骤。交叉熵低,说明模型get到了你的点;交叉熵飙高,它要么理解偏了,要么在胡编乱造测试步骤。
有个真实场景:某团队用LLM生成电商下单流程的自动化脚本。输入"用户用优惠券买限时折扣商品",模型A的交叉熵0.8,脚本能跑通;模型B飙到2.3,生成的脚本把"优惠券"和"折扣"当成互斥条件,直接报错。数值会说话,省了三小时debug。
困惑度:模型自己的"不确定"指数
Perplexity(困惑度)是交叉熵的指数形式,e的H(p,q)次方。这个数更直观:可以粗暴理解为"模型每走一步,面前有多少个等概率选择"。
困惑度100,相当于每次猜词面前摆着100个看起来都对的选项。测试自动化里,这直接映射到维护成本——困惑度高的模型生成的定位器(locator),过两周页面一变就失效,因为当初它选这个selector时就没什么底气,纯属蒙的。
Google 2023年发的一篇内部论文(未公开但测试圈流传)提到,他们把困惑度阈值设在15以下才准入生产环境。超过这个数,生成的测试用例强制打标"需人工review"。
信息增益:测什么该优先自动化
信息增益(Information Gain,信息增益)是决策树的老朋友,现在被拿来给测试优先级排序。核心问题:测这个场景,能消除多少不确定性?
计算公式是父节点熵减子节点加权熵。落地到测试策略:你有100个功能点,信息增益高的先自动化——测完它,你对系统整体质量的"心里没底"程度下降最多。
某金融App团队去年用这招重构回归套件。原本按业务线平铺,跑得慢还漏bug。改按信息增益排序后,核心支付链路的信息增益0.87,优先覆盖;某个冷门报表功能0.12,降级为抽样测试。结果同样机器时间,核心缺陷发现率提了34%。
这些公式写在论文里像天书,拆开了全是测试工程师的日常决策。熵看置信度,交叉熵看偏差,困惑度看维护债,信息增益看ROI——四个数,把"这AI靠不靠谱"从玄学变成算术。
你的团队现在测大模型输出,是凭感觉拍脑袋,还是已经有人偷偷在算这些数了?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.