Skip to main content

Frequently Asked Questions

๐Ÿ“„๏ธ How is Fuzzing different from propertybased testing like Quickcheck echidna foundry

1. There is a difference in philosophy and how the fuzzers integrate in the development workflow. Quickcheck-style fuzzers expect the user to write tests where some inputs are fuzzable. Think of it as unit tests on steroids. However, someone still needs to write all those tests (including mocks, etc.) since they typically only focus on one or two individual functions. While Diligence Fuzzing is also able to handle this use case, it promotes a more automated approach that is centered around specifications that are checked for large systems (very close to those deployed) with one or many contracts.

๐Ÿ“„๏ธ What is the difference between Certora Formal Verification and Diligence Fuzzing

Simply put, formal verification is a independent (and also important) analysis technique. However, formal verification is difficult and time consuming, even if the specifications are already written. In contrast, once you have some specifications and a fuzzing setup Diligence Fuzzing is fully automated. Itโ€™s ready to catch bugs in your code or issues with your specifications without slowing you down early on in your development lifecycle. Once your code and specifications are in good shape, you can still use verification for additional peace of mind. One big advantage of Scribble is that it is compatible with existing verifiers. You write the properties once and you can run fuzzing and verification on the same properties.