Monday, October 28, 2013

Monkey Testing and Gorilla Testing

Monkey Testing

A test technique commonly used in Unit testing and system testing phase in which the tester acts as a money (not in the literal sense) by giving random input across each and every unit/component or module to check the stability and workability of the system. It is an error-based test technique that involves extensive testing of system’s functionality with random valid or invalid inputs.

Monkey test is a unit test that runs with no specific test in mind. The monkey in this case is the producer of any input. For example, a monkey test can enter random strings into text boxes to ensure handling of all possible user input or provide garbage files to check for loading routines that have blind faith in their data.

Monkey testing is random testing performed by automated testing tools (after the automated testing tools are developed by humans). The automated testing tools are considered "monkeys", if they work at random. We call them "monkeys" because it is widely believed that, if we allow six monkeys to pound on six typewriters at random for a million years, they will recreate all the works of Isaac Asimov.

There are "smart monkeys" and "dumb monkeys". "Smart monkeys" are valuable for load and stress testing; they will find a significant number of bugs, but are also very expensive to develop. "Dumb monkeys", on the other hand, are inexpensive to develop, are able to do some basic testing, but they will find few bugs. However, the bugs that "dumb monkeys" find will be hangs and crashes,i.e. the bugs you least want to have in your software product. “Monkey testing" can be valuable, but it should not be your only testing.

Sometimes random testing can also be called monkey testing.

In monkey testing data is generated by chance often using a tool. Randomly-generated data is sent to the system. This data is generated either using a tool or some automated mechanism.

With this randomly generated input the system is tested and results are watched correspondingly.

The disadvantages of Monkey testing:

  • You need more time to analyze the results
  • Many of the tests are not realistic
  • You cannot recreate the test if you do not record what data was used for software testing
  • Many of the tests are excessive

So we can say with confidence that such type of software testing is indeed useless and is generally conducted by beginners. The best use of monkey testing is to see whether the system will hold up under adverse effects.

In software testing world we (Testers) when talk about monkey testing referring to a fully automated testing tool. In fact this type of testing fall in the category of automated testing and black-box testing, the word monkey is used to refer a fully automated testing tool.

There are different types of monkey testing
i. Dumb Monkey Testing
ii. Semi Smart Monkey Testing
iii. Brilliant or Smart Monkey Testing

Dumb Monkey Testing
In Dumb Monkey Testing, dumb monkey do not know anything about the application, here the inputs are generated from a uniform probability distribution or Infinite Monkey Theorem. You can run these tests the whole day or even for more time. A dumb monkey, with its continuous repetition, can expose bugs such as memory leaks that might not occur until many hours or days of normal use.
For Example, using Quick Test Professional (QTP)you want to check for memory leak, what you need to do is just run a loop with thousands of values and leave it for hours (well its very fast, it adds the records in seconds), it will enter same records according to the loop (if duplication check is not applied).

Semi Smart Monkey Testing

We can make our dumb monkeys as semi smart by adding some functionality to them.
For Example, if I am talking about QTP we can write some script for a specific project according to its needs, lets say if you want to add many employees using automated tools you can make a table, enter all the different values to the table and import that table in the script of QTP it will work and add different values one by one and generate a report about all the values in the table and tells that with this value test passed and with this value test fails specifically.

Brilliant Monkey Testing
It works and uses software like a user can even more quickly. You can program it as you want like where to start and then where to click then where to go, enter data and submit the form so on and where to stop, so its very SMART :), Great. You just need to program it. Most of the commercially available load and stress testing tools depend on this smart monkey technology.

 Gorilla Testing
 A test technique that involves testing a particular module/component or functionality extensively with various ranges of valid and invalid inputs.

There is no particular test strategy for these test techniques as they can be adapted as final stages in testing phase. Although many organizations name them as reliability or fault tolerance testing the idea and intent is the same as gorilla or monkey testing.

Gorilla Testing is a quick attempt to determine the level of risk of a subsystem. Gorilla Testing is that in which tester and sometimes developer test one particular module heavily, means they test functionality of one particular module heavily.

Gorilla Testing is that which is always used to describe repetitive and boring (frustrating) Manual Testing process which a tester has already done a hundred times before. Due to this repetitive manual testing process Gorilla Testing is also known by the name Frustrating Testing.

Actually Gorilla Testing is used in Software Testing to check functionality of one particular module heavily. As you know Software Testing is a very wide concept so concept of Gorilla Testing is also wide in nature.

 

 

 

 

 

 

 

 

No comments:

Post a Comment