差分测试无需形式化证明也能奏效,但共模故障才是隐患
差分测试让你无需知道正确答案就能发现 bug。问题在于,相关的错误看起来像是达成一致。以下是如何发现盲点。
你可以在没有形式化证明的情况下信任差分测试,但前提是你必须清楚它究竟会在哪里失效。 这个弱点叫做共模故障(common-mode failure)。当某个规范的每一个实现都做出同样的错误假设时,它们会全部达成一致,而你的测试框架会将其判定为通过。N 版本编程(N-version…
3 posts
差分测试让你无需知道正确答案就能发现 bug。问题在于,相关的错误看起来像是达成一致。以下是如何发现盲点。
你可以在没有形式化证明的情况下信任差分测试,但前提是你必须清楚它究竟会在哪里失效。 这个弱点叫做共模故障(common-mode failure)。当某个规范的每一个实现都做出同样的错误假设时,它们会全部达成一致,而你的测试框架会将其判定为通过。N 版本编程(N-version…
并行运行多个 LLM 能够捕捉到任何单一模型都会自信地交付的错误。以下是如何构建一个真正有效的分歧解决系统。
你把 prompt 发给 GPT-4o。它返回一个 JSON blob,置信度 0.97。你把同样的 prompt 发给 Claude 3.5 Sonnet。它返回了另一个不同的 JSON blob,置信度也是 0.97。两个模型听起来都无比确定。但它们各自以不同的方式错了。 这不是假设。如果你运行任何非平凡的…
N-version programming 听起来很简单:运行多种实现,然后挑出最佳答案。但在实践中,'最佳'远比'最常见'更难定义。
你有同一个函数的五种实现。三种返回相同结果。一种略有不同。一种抛出异常。哪个才是对的? 大多数团队默认采用多数投票。当输出完全一致、错误显而易见时,这招确实管用。但一旦各实现在细微之处产生分歧,或者每个变体都给出不同答案时,这套机制就会崩解。N-version programming…