What is Ad-hoc testing? Types, Advantages and Disadvantages

The meaning of word Ad-hoc is something which is not in order or not organised or unstructured. In the similar note the Ad-hoc testing is nothing but a type of black box testing or behavioural testing which is carried out without following any formal process like requirement documents, test plan, test cases, etc. Similarly while executing the ad-hoc testing there is NO formal process of testing which can be documented.

Ad-hoc testing is usually done to discover the issues or defects which cannot be found by following the formal process. The testers who perform this testing should have a very good and in-depth knowledge of the product or application. When testers execute ad-hoc testing they only intend to break the system without following any process or without having any particular use case in mind.

Characteristics of Ad-hoc testing

  1. Ad-hoc testing is done after the completion of the formal testing on the application or product.
  2. This testing is performed with the aim to break the application without following any process.
  3. The testers executing the ad-hoc testing should have thorough knowledge on the product.
  4. The bugs found during ad-hoc testing exposes the loopholes of the testing process followed.
  5. Ad-hoc testing can be executed only once until and unless a defect is found which requires retesting.

When Ad-hoc testing can be done?

Now, the question which may come to your mind is when we should do ad-hoc testing?

To answer this I can say that the Ad-hoc testing can be done at any point of time whether it’s beginning, middle or end of the project testing. This can be done only when the testers are having complete knowledge of the product.  This testing can also be done when the time is very limited and detailed testing is required.

 When Ad-hoc testing should NOT be done?

The decision of when not to execute the ad-hoc testing can be taken by the experienced and skilled tester. Even though there are few cases when ad-hoc testing should not be done:

  • Ad-hoc testing is not required when there is already an existing bug for the test case. In such cases the bug should be reported and it should be retested once it is fixed.
  • Ad-hoc testing should NOT be carried out while Beta testing of the software by the clients or customers.

What are the types of Ad-hoc testing?

Basically there are three types of Ad-hoc testing. They are:

   – Buddy testing: This type of testing is done by the developer and the tester who are responsible for that particular module delivery. In this type of testing the developer and tester will sit together and work on that particular module in order to avoid from building the invalid scenarios which also in other hand help the tester from reporting the invalid defects.

   -Pair testing: In this type of testing two testers work together on one module. They basically divide the testing scenarios between them. The aim of this type of testing is to come up with maximum testing scenarios so that the entire module should have complete test coverage. Post testing the entire module together they can also document their test scenarios and observations.

   –Monkey testing: In this type of testing some random tests are executed with some random data with the aim of breaking the system. This testing helps us to discover some new bugs which might not be caught earlier.

Advantages or benefits of Ad-hoc testing:

Below are few of the advantages or benefits related to the Ad-hoc testing:

  1. Ad-hoc testing gives freedom to the tester to apply their own new ways of testing the application which helps them to find out more number of defects compared to the formal testing process.
  2. This type of testing can be done at anytime anywhere in the Software Development Life cycle (SDLC) without following any formal process.
  3. This type of testing is not only limited to the testing team but this can also be done by the developer while developing their module which helps them to code in a better way.
  4. Ad-hoc testing proves to be very beneficial when there is less time and in-depth testing of the feature is required. This helps in delivering the feature with quality and on time.
  5. Ad-hoc testing can be simultaneously executed with the other types of testing which helps in finding more bugs in lesser time.
  6. In this type of testing the documentation is not necessary which helps the tester to do the focused testing of the feature or application without worrying about the formal documentation.

Disadvantages of Ad-hoc testing:

  1. Since ad-hoc testing is done without any planning and in unstructured way so recreation of bugs sometime becomes a big trouble.
  2. The test scenarios executed during the ad-hoc testing are not documented so the tester has to keep all the scenarios in their mind which he/she might not be able to recollect in future.
  3. Ad-hoc testing is very much dependent on the skilled tester who has thorough knowledge of the product it cannot be done by any new joiner of the team.

Best practices while executing ad-hoc testing:

If ad-hoc testing is not executed in the proper manner then it can result in total loss of time and effort. Below are few pointers to keep in mind as where and how to apply this ad-hoc testing:

  1. Good knowledge on the product:

    The tester who is going to execute the ad-hoc testing should have a very good knowledge of the product. He should be very well aware with all the features in the product. This helps the tester in error guessing and finding the maximum number of bugs from the defect prone areas.

  2. Prioritizing feature:

    When ad-hoc testing is to be done for the multiple features then the testers should first categorize and prioritize the features. Features which are highly used by the customers should be tested first so that if any priority bug exists in the feature can be reported and fixed early.

  3. Rough planning:

    Although there is no need of any documentation in ad-hoc testing as stated earlier but noting down the pointers to be tested during this testing will help the tester to remember all the possible areas for testing. This helps in having the maximum test coverage in lesser time.

  4. Usage of Tools:

    Sometimes during testing there are bugs or exceptions found in logs which are not seen in the UI or which is not obstructing the testing in any way. Such kind of bugs can also be of high severity. In order to catch such kind of bugs or exceptions we need to use tools like debuggers, profilers or task monitors.

  5. Documentation of observations:

    Even though the ad-hoc testing does not support documentation but it’s always better to write a note in brief about your testing, findings, deviations. If defects are found then the relevant test case should be created so that it will help the tester to retest the scenario in future.

What is Monkey testing? Types, Advantages and Disadvantages

Monkey testing is a technique used in software testing to test the application or product by providing random data and observing if the system or application crashes.

  • In Monkey testing the tester or sometimes developer also is considered like a monkey assuming that if a monkey uses the computer then he will enter some random data without any knowledge or understanding.
  • Here the tests done are very random and it may not be correct.
  • Because of such random testing the testers may not be able to recreate the issues or bugs.What is Monkey Testing?

Advantages of Monkey testing:

  • Monkey testing is a very good approach to find out some new bugs which may not be possible from the stated scenarios.
  • Monkey testing can also be a good way to perform stress testing and load testing since the scenarios tested are generally random and ad-hoc.
  • It is very easy to execute because it just requires some random data to run against some random tests.
  • Execution of test cases and setting up of environments expenses are very less in monkey testing.
  • By using tools the process of Monkey testing can be automated.
  • Monkey testing can be performed for desktop applications, web applications as well as mobile applications.

Disadvantages of Monkey testing:

  • The test carried out during monkey testing is so random that it is either not possible or very difficult to recreate any bug.
  • It’s very difficult and time consuming to analyze the unexpected issues found during the monkey testing.
  • Testers have difficulty in defining the exact test scenarios and they also cannot assure the accuracy of test cases.
  • Monkey testing may consume lots of time before finding a bug because it does not have any predefined tests.

Types of Monkey testing

There are three types of Monkey testing:

Dumb monkey tests: In Dumb monkey tests the testers have no knowledge of the product or application. They do not have any idea about their inputs whether it’s valid or invalid. They are also known as ‘Ignorant monkeys’.

Smart monkey tests: In Smart monkey tests the testers have a good idea of the system or application. They know exactly the product’s functionality. They provide the valid inputs to perform testing.

Brilliant monkey tests: In Brilliant monkey tests the testers have fair idea as how the users are using the product and they carry out their testing with the user’s perspective.

200+ Software Testing Interview Questions and Answers PDF

People often ask us for software testing interview questions and answers. At the end of this post you will find the link to download the PDF with 202 Software Testing Interview Question and Answers.

Before we get to that, it’s useful to understand the types of questions that are asked during interviews. The questions can be majorly categorized under three categories. [Read more…]

What is a proof-of-concept or piloting phase for tool evaluation in software testing?

One of the ways to do a proof-of-concept is to have a pilot project as the first thing done with a new tool. This will use the tool on a small scale, with sufficient time to explore different ways in which it can be used. Objectives should be set for the pilot in order to accomplish what is needed within the current organizational context. [Read more…]

What are the important factors for the software testing tool selection?

While introducing the tool in the organization it must match a need within the organization, and solve that need in a way that is both effective and efficient. The tool should help in building the strengths of the organization and should also address its weaknesses. The organization needs to be ready for the changes that will come along with the new tool. If the current testing practices are not good enough and the organization is not mature, then it is always recommended to improve testing practices first rather than to try to find tools to support poor practices. Automating chaos just gives faster chaos! [Read more…]

What is Performance testing, Load testing and stress-testing tools in software testing?

Performance testing tools are basically for system level testing, to see whether or not the system will stand up to a high volume of usage. A load testing is to check that the system can handle its expected number of transactions. A volume testing is basically to check that the system can handle a large amount of data, e.g. many fields in a record, many records in a file, etc. A stress testing is one that goes beyond the normal expected usage of the system (to see what would happen outside its design expectations), with respect to load or volume. [Read more…]

What is Dynamic analysis tools in software testing?

Dynamic analysis tools are ‘dynamic’ because they require the code to be in a running state. They are ‘analysis’ rather than ‘testing’ tools because they analyze what is happening ‘behind the scenes’ that is in the code while the software is running (whether being executed with test cases or being used in operation). [Read more…]

What are Security testing tools in software testing?

There are many tools that protect systems from external attack. Like firewall, this is very important for any system.

Security testing tools can be used to test security of the system by trying to break it or by hacking it. The attacks may focus on the network, the support software, the application code or the underlying database. [Read more…]