Everything About ___
Live briefing

Everything about Fuzzing

Automated software testing technique

In programming and software development, fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a computer program. The program is then monitored for exceptions such as crashes, failing built-in code assertions, or potential memory leaks. Typically, fuzzers are used to test programs that take structured inputs. This structure is specified, such as in a file format or protocol and distinguishes valid from invalid input. An effective fuzzer generates semi-valid inputs that are "valid enough" in that they are not directly rejected by the parser, but do create unexpected behaviors deeper in the program and are "invalid enough" to expose corner cases that have not been properly dealt with. Wikipedia →

đź§­ Start here: a 6-step reading path

  1. Read the overview: FuzzingA 5-minute orientation
  2. Skim a recent paper: Rethinking Smart Contract Fuzzing: Fuzzing With Invocation Ordering and Important Branch RevisitingInfluential work since 2022
  3. Pick up a classic book: 模糊数学入门The most-reprinted book on the subject
  4. Read the landmark paper: The Art, Science, and Engineering of Fuzzing: A SurveyCited 459 times
  5. Go sideways: American Fuzzy Lop (software)A closely related topic
  6. Go sideways: Concolic testingA closely related topic

đź“– Definitions

Verb present participle and gerund of fuzz

Noun Fuzz testing.

🏆 Landmark papers (most cited)

🆕 Influential since 2022

📚 Books worth reading

Ranked by number of editions on Open Library, a rough measure of how lasting a book is.

đź”— Related topics