知识卡片

差分模糊测试专找两个实现的行为分歧

普通读书笔记卡 · 1458.d

内容

模糊测试通常用来找崩溃,但把同一批随机生成的输入同时喂给两个理论上应该行为一致的实现(比如迁移前后的两个库),然后比对两边的输出结果,能发现的是另一类问题——没有崩溃、但结果悄悄不一样的语义偏差,任何不匹配都会被报告为”崩溃”。这种”差分”用法特别适合评估重构或迁移是否真的等价,因为它不需要提前知道”正确答案”是什么,只需要判断两个实现在同一输入下是否一致,这比为每种输入手写预期结果的成本低得多。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第13章《代码测试》13.4节模糊测试(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_108.html`) - 结论依据:原文说明"也可以使用模糊测试来评估相同功能的不同实现。举个例子,如果打算从库A移至库B,那模糊测试工具可以生成输入内容分别传递给两个库处理,然后比对结果。它会将两者间任何不匹配的结果报告为'崩溃',从而有助于工程师确定本次变更可能导致哪些细微的变化"。 - 原始内容:也可以使用模糊测试来评估相同功能的不同实现。举个例子,如果打算从库A移至库B,那模糊测试工具可以生成输入内容分别传递给两个库处理,然后比对结果。它会将两者间任何不匹配的结果报告为"崩溃",从而有助于工程师确定本次变更可能导致哪些细微的变化。