Monkey testing is a type of software testing in which the tester tests the application or software by providing some random inputs and checking the behavior of the application or the software. It is also observed by seeing whether the application or software crashes on a given input or not. Monkey testing is usually implemented as random and automated unit testing. Monkey testing is named because of the Infinite Monkey Theorem.
Infinite Monkey Theorem
It describes that a monkey hitting keys at random on a typewriter keyboard for a random amount of time will almost type a given text. In Monkey Testing, the tester is considered the Monkey. Like a monkey who uses a computer, he will randomly perform any task on the system out of his understanding, the same as the tester applying random test cases on the system under test to find defects without creating any test cases. Monkey Testing is also part of the standard testing tools for stress testing in Android Studio.
Features of Monkey Testing
The features of Monkey Testing are as follows:
- Monkey Testing needs testers with very good domain and technical knowledge.
- It is so random that the reproduction of the defect is almost impossible.
- Its efficiency is not 100% i.e. sometimes the result may not be correct.
- There is no specification while performing monkey testing.
- It is implemented when the defects are not detected at regular intervals.
- Monkey testing helps to make sure the reliability and efficiency of the system.
Where can we use Monkey Testing?
Monkey testing can be used in the following cases:
- It can be used for database testing for testing the application by beginning the transaction and inserting the random data.
- It can be used to test an application for OSWAP issues where pre-compiled and random data can be used.
- It can be used for testing in cases to imitate the activities of monkeys who are inserting random data.
Types of Monkey Testing
There are 3 types of Monkey Testing:
- Dumb Monkey Test: In Dumb Monkey Test, the tester has no knowledge about the application or system. Testers don’t know if their input or behavior is valid or invalid. Tester also doesn’t know their or the system’s capabilities or the flow of the application. Dumb Monkey Test can find fewer bugs than smart monkeys, but can also find important bugs that are hard to catch by smart monkey tests.
- Smart Monkey Test: In Smart Monkey Test, the tester has a brief idea about the application or system. The tester knows its own location, where it can go, and where it has been. Tester also knows their own capability and the system’s capability. In smart monkey tests, the focus is to break the system and report bugs if they are found.
- Brilliant Monkey Test: In the brilliant monkey test, the tester who has the domain knowledge of the domain is assigned to test the application by the Manager. The test engineer knows the pattern of the product usage and can perform testing from the user’s viewpoint.
Monkey Testing vs Gorilla Testing
Below are the differences between monkey testing and gorilla testing:
Parameters |
Monkey Testing |
Gorilla Testing |
Definition |
Monkey testing is performed randomly with no predefined test cases. |
Gorilla testing is neither predefined nor random. |
Usage |
It is mainly used in system testing. |
It is mainly used in unit testing. |
Types of Testing |
Monkey testing has three types, Dumb monkey testing, Smart monkey testing, and Brilliant monkey tetsing. |
Gorilla testing is not divided into different types of testing. |
Purpose |
The purpose of monkey testing is to test whether the system crashed or not. |
The purpose of gorilla testing is to verify whether the component or module is working appropriately or not. |
Who can perform it? |
End-user, test engineer, developer. |
Test engineer and developers either together or separately. |
Implementation |
It can be implemented on the whole system. |
It can be implemented on a few selective components of the system. |
Monkey Testing vs Adhoc Testing
Below are the differences between monkey testing and ad-hoc testing:
Parameters |
Monkey Testing |
Adhoc Testing |
Purpose |
The purpose of monkey testing is to execute random test cases with random or invalid data to check whether the system crashes or not. |
The purpose of Adhoc testing is to break the system by randomly using the application. |
Who can perform it? |
Anyone with or without the knowledge of the system can perform monkey testing. |
Adhoc testing is performed by a group of testers who have good knowledge of the application. |
Nature of testing |
In monkey testing, there is no specific path for testing. The testing is done randomly using random data. |
In ad-hoc testing, the tester has good knowledge of the application so they test whatever they think is required as per their knowledge of the application. |
Reproducing defect |
In monkey testing, tests are performed randomly with random data thus reproducing defects is impossible. |
In Adhoc testing, resolving errors based on identified issues is difficult as there are no written test cases. |
Smart Monkey Testing vs Dumb Monkey Testing
Below are the differences between Smart monkey testing and Dumb monkey testing:
Parameters |
Smart Monkey Testing |
Dumb Monkey Testing |
Knowledge about application |
The tester has a brief idea about the application. |
Tester has no knowledge of the application. |
Understanding system capability |
The tester knows their and the system’s capability. |
The tester is not aware of either their or the system’s capability. |
Bug detection |
The focus here is to break and system and report the bugs if they are found. |
Dumb Monkey Test can find fewer bugs than smart monkeys, but can also find important bugs that are hard to catch by smart monkey tests. |
The idea about workflow of the application |
In smart monkey testing, the tester has an idea about the workflow of the application. The tester knows its own location, where it can go, and where it has been. |
In dumb monkey testing, the tester does not have an idea about the workflow of the application. Testers don’t know if their input or behavior is valid or invalid. |
Advantages of Monkey Testing
- Testers have full exposure to implementing tests as per their understanding apart from previously stated scenarios, which may give various new types of bugs or defects existing in the system.
- Execution is easy in monkey testing as random data is executed.
- Monkey Testing can be performed without highly skilled testers because it is randomized testing.
- It requires less amount of expenditure to set up and execute test cases because there is no need for environment setup and test case generation.
Disadvantages of Monkey Testing
- In monkey testing, the tester performs tests randomly with random data reproducing defects is almost impossible.
- The accuracy of monkey testing is very less and it doesn’t give always the correct result.
- To make monkey testing more accurate, testers that are needed must have good technical knowledge of the domain.
- This testing can go longer as there are no predefined tests and can find less number of bugs which may cause loopholes in the system.
Master Software Testing and Automation in an efficient and time-bound manner by mentors with real-time industry experience. Join our
Software Automation Course and embark on an exciting journey, mastering the skill set with ease!
What We Offer:
- Comprehensive Software Automation program
- Expert Guidance for Efficient Learning
- Hands-on Experience with Real-world Projects
- Proven Track Record with 10,000+ Successful Geeks
Last Updated :
24 May, 2023
Like Article
Save Article