Project Description
Monkey Fuzz stress tests an applications User Interface. It pretends to be a "monkey" on the keyboard, sending random button press and mouse events to a program.

It is developed in C#

Benefits; Easy testing of application
Platforms: 32 and 64 bit windows (XP, Vista, Win7)
Status: In development
Technical bits: P/invoke to Win32 API, SendInput

Other features

MonkeyFuzz primarily sends random keyboard and mouse events to a program, but it can record the actions along the way. This allows them to be replayed useful for regression testing).

In the future it should be possible to record a users actions and play them back as well. This can be useful as a blackbox, silently recording of actions in the background, replaying them later if a crash should occur.

What should you look for when running?

Let the application run for a while with Monkey on the keyboard. Then stop the monkey and check that your application. It should not have crashed, or gotten locked into a screen. Check task manager: It should not be consuming huge amounts of memory, have a large number of threads or handles.

If you find problems with your program, you should diagnose the problem.


It is possible that if you use this program incorrectly -- or the program you are testing has dangerous operations -- you can do some real damage to your system. It might be something you can fix by turning your computer off and on. Or it may be delete files.

I have taken care to make sure that this won't be destructive testing, but hey, no guarantees.

What do the Monkeys think about this?

This was partly inspired by this McSweeneys Essay.


  • event a keyboard button press, a mouse button click (or double click), mouse move, etc.
  • fuzz testing sends random, unexpected events to a program.
  • log is a recording of what the MonkeyFuzz program did (or sent). This log is a simple format that can be replayed (to see if the bug is still there), or imported into a spreadsheet like Excel.
  • monkey at the keyboard is where someone uses a program in an attempt to see if the program holds together with use.

Other areas of interest

Software Design

Last edited Oct 18, 2009 at 3:47 PM by randym, version 17