一句话:为 Dafny 验证器与多后端编译器构建首个模糊测试和差分测试框架,以发现工具链缺陷。
验证工具链被广泛用于证明关键软件系统的正确性,但工具链本身也可能存在缺陷,因此需要测试框架来增强对其结果的信心。受模糊测试在编译器和 SMT 求解器中发现缺陷的成功启发,本文介绍了首个面向 Dafny 的模糊测试与差分测试框架。Dafny 是一种高层编程语言,带有 Floyd-Hoare 风格的程序验证器,并提供到 C#、Java、Go 和 JavaScript 的编译器。该经验论文描述了如何将 fuzzing 与差分测试应用于这一验证和编译工具链,以检测其中潜在的错误,从而提升 Dafny 工具链的可靠性。
Verification toolchains are widely used to prove the correctness of critical software systems. To build confidence in their results, it is important to develop testing frameworks that help detect bugs in these toolchains. Inspired by the success of fuzzing in finding bugs in compilers and SMT solvers, we have built the first fuzzing and differential testing framework for Dafny, a high-level programming language with a Floyd-Hoare-style program verifier and compilers to C#, Java, Go, and Javascript.