celld 如何用确定性模拟测试揪出分布式 Bug
Deterministic Simulation Testing in Celld

构建分布式系统时,网络可靠和零延迟等假设往往不攻自破,导致 Bug 难以复现。celld 团队引入确定性模拟测试(DST),在受控环境中运行生产代码,让模拟器掌控事件顺序、异步任务及存储响应。通过固定随机种子,团队成功复现并修复了一个因闹钟(alarm)与清理任务竞态导致的严重缺陷:旧闹钟的清理操作意外删除了新闹钟所需的唤醒条目。这种测试方法不仅精准定位了问题,还将失败场景转化为回归测试,确保系统在面对复杂并发和故障时依然可靠。
一个 Bug 可能依赖于特定顺序的延迟消息、写入失败和节点重启,而这些事件在下一次测试运行时可能以不同顺序发生,导致故障难以复现。