7.1.1.1 QuickCheck 原理 7.1.1.1 QuickCheck 原理:当“随机”不再盲目——一个被忽视的生成器偏斜问题与它的三重解法 你写好了 ,跑 ,绿条一闪而过,心满意足地合上笔记本,以为契约已立、契约已守。 可三天后,线上服务在某个凌晨三点崩溃,日志里赫然一行: 。 回溯发现,崩溃点是一个看似无害的模式匹配: 。 而触发它的输入,是 —— 空列表。 你立刻翻出测试代码: 。 它通过了。 但 是 ,而 QuickCheck 默认生成的列表……几乎从不为空。 这不是你的疏忽。 这是 QuickCheck 的「温柔陷阱」——它用统计学的外衣,掩盖了生成逻辑中一个幽微却致命的细节:分布偏斜(distribution skew)不是 bug,而是默认行为。