Monkey testing can be categorized into smart monkey tests or dumb monkey tests.
Smart monkeys are usually identified by the following characteristics:4
Some smart monkeys are also referred to as brilliant monkeys, which perform testing as per user's behavior and can estimate the probability of certain bugs.
Dumb monkeys, also known as "ignorant monkeys", are usually identified by the following characteristics:
Monkey testing is an effective way to identify some out-of-the-box errors. Since the scenarios tested are usually ad-hoc, monkey testing can also be a good way to perform load and stress testing. The intrinsic randomness of monkey testing also makes it a good way to find major bugs that can break the entire system. The setup of monkey testing is easy, therefore good for any application. Smart monkeys, if properly set up with an accurate state model, can be really good at finding various kinds of bugs.
The randomness of monkey testing often makes the bugs found difficult or impossible to reproduce. Unexpected bugs found by monkey testing can also be challenging and time consuming to analyze. In some systems, monkey testing can go on for a long time before finding a bug. For smart monkeys, the ability highly depends on the state model provided, and developing a good state model can be expensive.5
While monkey testing is sometimes treated the same as fuzz testing6 and the two terms are usually used together,7 some believe they are different by arguing that monkey testing is more about random actions while fuzz testing is more about random data input.8 Monkey testing is also different from ad-hoc testing in that ad-hoc testing is performed without planning and documentation and the objective of ad-hoc testing is to divide the system randomly into subparts and check their functionality, which is not the case in monkey testing.
"What is Monkey Testing | IT Training and Consulting – Exforsys". www.exforsys.com. 17 December 2011. Retrieved 2016-04-22. http://www.exforsys.com/tutorials/testing-types/monkey-testing.html ↩
"Folklore.org: Monkey Lives". www.folklore.org. Retrieved 2016-04-22. http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt ↩
"UI/Application Exerciser Monkey | Android Developers". developer.android.com. Retrieved 2016-04-25. https://developer.android.com/tools/help/monkey.html ↩
Patton, Ron (2001). "Random Testing: Monkeys and Gorillas". Software testing. Indianapolis, Ind: Sams. ISBN 978-0-672-31983-9. 978-0-672-31983-9 ↩
Brummayer, Robert; Lonsing, Florian; Biere, Armin (2010-07-11). Strichman, Ofer; Szeider, Stefan (eds.). Automated Testing and Debugging of SAT and QBF Solvers. Lecture Notes in Computer Science. Springer Berlin Heidelberg. pp. 44–57. CiteSeerX 10.1.1.365.777. doi:10.1007/978-3-642-14186-7_6. ISBN 9783642141850. 9783642141850 ↩
"Fuzz Testing in Delphi - DelphiTools". www.delphitools.info. Retrieved 2016-04-22. https://www.delphitools.info/2016/03/18/fuzz-testing-in-delphi/ ↩
"Difference between "fuzz testing" and "monkey test"". stackoverflow.com. Retrieved 2016-04-22. https://stackoverflow.com/questions/10241957/difference-between-fuzz-testing-and-monkey-test ↩