UW-Madison
Computer Sciences Dept.

Fuzz Testing of Application Reliability


Classic fuzz testing is a simple technique for feeding random input to applications. While random testing is a time-honored technique, our approach has three characteristics that, when taken together, makes it somewhat different from other approaches.
picture of caterpillar

  1. The input is random. We do not use any model of program behavior, application type, or system description. This is sometimes called black box testing. In the command-line studies (1990, 1995, 2006, and 2020), the random input was unstructured, simply random ASCII character streams. For our X-Window study (1995), Windows NT study (2000), and Mac OS X study (2006), the random input included cases that used structured input, valid keyboard and mouse events.

  2. Our reliability criteria is simple: if the application crashes or hangs, it is considerd to fail the test, otherwise it passes. This criteria allows the use of a simple test oracle. Note that the application does not have to respond in a sensible manner to the input, and it can even quietly exit.

  3. As a result of the first two characteristics, classic fuzz testing can be automated to a high degree and results can be compared across applications, operating systems, and vendors.

We encourage your feedback and comments.

Below are links to the fuzz papers, software, and related materials:

[T] 1988 Original fuzz project assignment (PDF). Project (1) on the list is the fuzz assignment.

This is the original project assignment from my graduate CS736 class, Advanced Operating Systems. This list of projects was handed out in the Fall of 1988.

[T] 1990 Original Fuzz Report (PDF).

B.P. Miller, L. Fredriksen, and B. So, "An Empirical Study of the Reliability of UNIX Utilities", Communications of the ACM 33, 12 (December 1990). Also appears (in German translation) as "Fatale Fehlertractigkeit: Eine Empirische Studie zur Zuverlassigkeit von UNIX-Utilities", iX, March 1991.

This paper was award the 2022 Jean-Claude Laprie Award in Dependable Computing from the IFIP WG 10.4 on Dependable Computing and Fault Tolerance.

[T] 1995 "Fuzz Revisited" Report (PDF).

B.P. Miller, D. Koski, C.P. Lee, V. Maganty, R. Murthy, A. Natarajan, and J. Steidl, "Fuzz Revisited: A Re-examination of the Reliability of UNIX Utilities and Services", Computer Sciences Technical Report #1268, University of Wisconsin-Madison, April 1995. Appears (in German translation) as "Empirische Studie zur Zuverlasskeit von UNIX-Utilities: Nichts dazu Gerlernt", iX, September 1995.

[T] 2000 Windows NT Fuzz Report (PDF, HTML).

J.E. Forrester and B.P. Miller, "An Empirical Study of the Robustness of Windows NT Applications Using Random Testing", 4th USENIX Windows Systems Symposium, Seattle, August 2000. Appears (in German translation) as "Empirische Studie zur Stabilität von NT-Anwendungen", iX, September 2000.

[T] 2006 Mac OS X Fuzz Report (PDF).

B.P. Miller, G. Cooksey and F. Moore, "An Empirical Study of the Robustness of MacOS Applications Using Random Testing", First International Workshop on Random Testing, Portland, Maine, July 2006.

[T] 2020 Fuzz Report (PDF).

B.P. Miller, M. Zhang and E.R. Heymann, "The Relevance of Classic Fuzz Testing:Have We Solved This One?", IEEE Transactions on Software Engineering 48, 6, June 2022. DOI: 10.1109/TSE.2020.3047766.

[T] The Classic Fuzz Software and Dataset Site (Updated August 2020)

[T] 2008 Foreword for a book on fuzz testing (html).

This is the prose for a foreword that I wrote for a book on fuzz testing. It gives a nice summary of origins of the idea.

If you have reported on the use of the fuzz tools on testing other systems or more recent testing of the systems that we have tested, please send us email and we would be glad to provide a link to the report: email address


Last modified: Tue 01 Aug 2023 12:51:29 PM CDT