- Both:
- Both involve random inputs.
- Fuzzing:
- Fuzzing is looking for uncovering unintended behavior.
- Consequently runs any in-program
asserts
, checking invariants. - Runs with no assumptions, so good for testing security.
- Runs for a long time (hours - months).
- Property Testing:
- Property Testing is looking for confirming desired behavior.
- Existing property tests can be used to in/validate new assumptions one thinks of.
- To understand if the generated inputs span the desired space, we can add assertions for code we know will fail.
- Runs in similar time as other tests (unit/integration).
Kaminski, T. (2018, December 11). Fuzzing vs Property Testing. http://www.tedinski.com/2018/12/11/fuzzing-and-property-testing.html