HOME

TheInfoList



OR:

In
software testing Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
, monkey testing is a technique where the user tests the application or system by providing
random In common usage, randomness is the apparent or actual lack of pattern or predictability in events. A random sequence of events, symbols or steps often has no order and does not follow an intelligible pattern or combination. Individual ra ...
inputs and checking the behavior, or seeing whether the application or system will crash. Monkey testing is usually implemented as random, automated
unit tests In computer programming, unit testing is a software testing method by which individual units of source code—sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures&mda ...
. While the source of the name "monkey" is uncertain, it is believed by some that the name has to do with the
infinite monkey theorem The infinite monkey theorem states that a monkey hitting keys at random on a typewriter keyboard for an infinite amount of time will almost surely type any given text, such as the complete works of William Shakespeare. In fact, the monkey would ...
, which states that a monkey hitting keys at
random In common usage, randomness is the apparent or actual lack of pattern or predictability in events. A random sequence of events, symbols or steps often has no order and does not follow an intelligible pattern or combination. Individual ra ...
on a
typewriter keyboard A typewriter is a mechanical or electromechanical machine for typing characters. Typically, a typewriter has an array of keys, and each one causes a different single character to be produced on paper by striking an inked ribbon selective ...
for an infinite amount of time will
almost surely In probability theory, an event is said to happen almost surely (sometimes abbreviated as a.s.) if it happens with probability 1 (or Lebesgue measure 1). In other words, the set of possible exceptions may be non-empty, but it has probability 0 ...
type a given text, such as the complete works of
William Shakespeare William Shakespeare ( 26 April 1564 – 23 April 1616) was an English playwright, poet and actor. He is widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist. He is often called England's nation ...
. Some others believe that the name comes from the classic Mac OS application "The Monkey" developed by Steve Capps prior to 1983. It used journaling hooks to feed random events into Mac programs, and was used to test for bugs in
MacPaint MacPaint is a raster graphics editor developed by Apple Computer and released with the original Macintosh personal computer on January 24, 1984. It was sold separately for US$195 with its word processing counterpart, MacWrite. MacPaint was nota ...
. Monkey Testing is also included in
Android Studio Android Studio is the official integrated development environment (IDE) for Google's Android operating system, built on JetBrains' IntelliJ IDEA software and designed specifically for Android development. It is available for download on Windows ...
as part of the standard testing tools for stress testing.


Types of monkey testing

Monkey testing can be categorized into smart monkey tests or dumb monkey tests.


Smart monkey tests

Smart monkeys are usually identified by the following characteristics: * Have a brief idea about the application or system * Know its own location, where it can go and where it has been * Know its own capability and the system's capability * Focus to break the system * Report bugs they found Some smart monkeys are also referred to as brilliant monkeys, which perform testing as per user's behavior and can specify some probabilities of bugs to be occurred.


Dumb monkey tests

Dumb monkeys, also known as "ignorant monkeys", are usually identified by the following characteristics: * Have no knowledge about the application or system * Don't know if their input or behavior is valid or invalid * Don't know their or the system's capabilities, nor the flow of the application * Can find fewer bugs than smart monkeys, but can also find important bugs that are hard to catch by smart monkeys


Advantages and disadvantages


Advantages

Monkey testing is an effective way to identify some out-of-the-box errors. Since the scenarios tested are usually
ad-hoc Ad hoc is a Latin phrase meaning literally 'to this'. In English, it typically signifies a solution for a specific purpose, problem, or task rather than a generalized solution adaptable to collateral instances. (Compare with ''a priori''.) Com ...
, 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.


Disadvantages

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.


Similar techniques and distinctions

While monkey testing is sometimes treated the same as
fuzz testing Fuzz may refer to: * Fuzz (film), ''Fuzz'' (film), a 1972 American comedy * ''Fuzz: When Nature Breaks the Law'', a nonfiction book by Mary Roach * The fuzz, a List of slang terms for police officers, slang term for police officers Music * Fuzz ...
and the two terms are usually used together, some believe they are different by arguing that monkey testing is more about random actions while fuzz testing is more about random data input.{{Cite web, url=https://stackoverflow.com/questions/10241957/difference-between-fuzz-testing-and-monkey-test, title=Difference between "fuzz testing" and "monkey test", website=stackoverflow.com, access-date=2016-04-22 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.


See also

*
Random testing Random testing is a black-box software testing technique where programs are tested by generating random, independent inputs. Results of the output are compared against software specifications to verify that the test output is pass or fail. In case ...


References

Software testing