Fuzzing
Fuzzing is a set of automated testing techniques that tries to identify abnormal program behaviors by evaluating how the tested program responds to various inputs.
Two main categories:
- Generation-based — inputs are generated from scratch according to a specification or grammar.
- Mutation-based — existing valid inputs are randomly mutated to produce new test inputs.
Greybox fuzzing uses lightweight feedback from the program (e.g., code coverage) to focus fuzzing on inputs that lead to higher code coverage.