传统软件测试的假设
传统软件测试建立在三个假设上:
- 输出确定:相同输入给相同输出,测试可以复现
- 正确性可判定:函数返回 42 是对还是错,有明确标准
- 维度单一:代码要么通过测试要么不通过,没有"有点通过"
AI 应用打破了这三个假设。
三个本质难点
难点 1:输出不确定
同一个 Prompt,Claude 今天的回答和明天的回答不一样。temperature=0 能降低随机性,但不能消除它。模型更新后,相同输入的输出会静默变化。
工程含义:
# 传统测试assertcalculator(2,3)==5# 跑 100 次,100 次通过# AI 评测score1=judge(llm.invoke("解释 Transformer"))# 4.2/5score2=judge(llm.invoke("解释 Transformer")