What is Monkey & Gorilla Testing? Examples, Difference

Monkey Testing

Monkey Testing is a software testing technique in which the tester enters any random inputs into the software application without predefined test cases and checks the behavior of the software application, whether it crashes or not. The purpose of Monkey testing is to find the bugs and errors in the software application using experimental techniques.

  1. In Monkey Testing the tester (sometimes developer too) is considered as the ‘Monkey’
  2. If a monkey uses a computer he will randomly perform any task on the system out of his understanding
  3. Just like the tester will apply random test cases on the system under test to find bugs/errors without predefining any test case
  4. In some cases, Monkey Testing is dedicated to Unit Testing or GUI Testing too

What is Gorilla Testing?

Gorilla Testing is a Software testing technique wherein a module of the program is repeatedly tested to ensure that it is working correctly and there is no bug in that module.

A module can be tested over a hundred times, and in the same manner. So, Gorilla Testing is also known as “Frustrating Testing”.

Advantages of Monkey Testing:

  1. New kind of bugs: Tester can have full exposure to implementing tests as per his understanding apart from previously stated scenarios, which may give no. of new errors/bugs existing in the system.
  2. Easy to execute: Arranging random tests against random data is an easy way to test the system
  3. Less skilled people: Monkey Testing can be performed without skilled testers (but not always)
  4. Less Costly: Requires considerably less amount of expenditure to set up and execute test cases

Disadvantages of Monkey Testing:

  1. No bug can be reproduced: As tester performs tests randomly with random data reproducing any bug or error may not be possible.
  2. Less Accuracy: Tester cannot define exact test scenario and even cannot guarantee the accuracy of test cases
  3. Requires very good technical expertise: It is not worth always to compromise with accuracy, so to make test cases more accurate testers must have good technical knowledge of the domain
  4. Fewer bugs and time consuming: This testing can go longer as there is no predefined tests and can find less number of bugs which may cause loopholes in the system

One can consider that Monkey Testing, Gorilla Testing, and Ad-hoc Testing are same as there are some similar facts present in all of them but the real fact is that they are different from each other… how?

We will first see the difference between Monkey and Gorilla Testing. First be clear with it to avoid confusion.

Monkey Testing V/s Gorilla Testing:

Monkey Testing Gorilla Testing
Monkey Testing is performed randomly with no specifically predefined test cases It is neither predefined nor random
Monkey Testing is performed on entire system can have several test cases Gorilla Testing is performed on specifically few selective modules with few test cases
The objective of Monkey Testing is to check for system crash Objective of Gorilla testing is to check whether the module is working properly or not

Once get cleared with this difference have a look towards next;

Monkey Testing Vs Ad-hoc Testing:

Monkey Testing Ad-hoc Testing
Monkey Testing is performed randomly with no specifically predefined test cases Ad-hoc testing is performed without planning and documentation(test cases and SRS)
In Monkey Testing testers may not know what is the system is all about and its purpose In Ad-hoc Testing tester must understand the system significantly before performing testing
The objective of Monkey Testing is to check for system crash Objective of Ad-hoc testing is to divide the system randomly into subparts and check their functionality

Types of Monkey Testing:

Monkey Testing is further divided into several categories according to its way of implementation, See the following diagram for a quick idea of it;

  1. Dumb Monkey: Testers have no idea about the system and its functionality, also no assurance about the validity of test case.
  2. Smart Monkey: Tester has a precise idea about system its purpose and functionality. Tester navigates through the system and gives valid inputs to perform testing.
  3. Brilliant Monkey: Testers perform testing as per user’s behavior and can specify some probabilities of bugs to have occurred.

Monkey Testing can also be performed for Android even. Monkey Testing may get efficient with the use of tools. Even it can be used to find more bugs like other testing types. If we use tool for Monkey Testing what could be the general process followed for it? Just have a quick look;

  1. Like any other testing tool first step is to register your software with the dedicated server
  2. Make sure you are well prepared with all the necessary references to build a test suite
  3. Run the built test suit
  4. ‘Monkey Test’ is the test log file which will be created to record test results
  5. Keep in mind that the test will go on until the system comes to crash point at which the action is recorded into a log file
  6. Finally, the test report is shared with concerned person and the test data can be stored and used for future reference

The process of Monkey Testing can be automated even with the use of tools but as it is some sort of new kind of testing introduced and not yet established on industry level these tools have less identity, unlike others. This situation may get changed with coming era of Testing Process then we will have look towards the upcoming impact of Monkey testing and its significant effect on industry standards. This is an introductory tutorial for Monkey Testing to cover basic idea about it.

Summary:

  • Monkey Testing is the comparatively new testing type to perform testing.
  • It is significantly different from Gorilla testing and Ad-hoc Testing.
  • Monkey testing can be beneficial in some areas of testing.
  • In Software Engineering, Monkey Testing has 3 major types: Dumb Monkey, Smart monkey, and Brilliant Monkey
  • Tools can be used to make Monkey Testing automated, effective and efficient.