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 Software Testing Life Cycle (STLC)?

Just like developers follow the Software Development Life Cycle (SDLC) likewise testers also follow the Software Testing Life Cycle which is called as STLC. It is the sequence of activities carried out by the testing team from the beginning of the project till the end of the project.

Software Testing Life Cycle is a testing process which is executed in a sequence, in order to meet the quality goals. It is not a single activity but it consists of many different activities which are executed to achieve a good quality product. There are different phases in STLC which are given below:

  1. Requirement analysis
  2. Test Planning
  3. Test case development
  4. Environment Setup
  5. Test Execution
  6. Test Cycle Closure

Software testing life cycle (STLC)Each of the step mentioned above has some Entry Criteria (it is a minimum set of conditions that should be met before starting the software testing) as well as Exit Criteria (it is a minimum set of conditions that should be completed in order to stop the software testing) on the basis of which it can be decided whether we can move to the next phase of Testing Life cycle or not.

Let us discuss about each phase in detail:

Requirement Analysis

This is the very first phase of Software testing Life cycle (STLC). In this phase testing team goes through the Requirement document with both Functional and non-functional details in order to identify the testable requirements.

In case of any confusion the QA team may setup a meeting with the clients and the stakeholders (Technical Leads, Business Analyst, System Architects and Client etc.) in order to clarify their doubts.

Once the QA team is clear with the requirements they will document the acceptance Criteria and get it approved by the Customers.

Activities to be done in Requirement analysis phase are given below:

  • Analyzing the System Requirement specifications from the testing point of view
  • Preparation of RTM that is Requirement Traceability Matrix
  • Identifying the testing techniques and testing types
  • Prioritizing the feature which need focused testing
  • Analyzing the Automation feasibility
  • Identifying the details about the testing environment where actual testing will be done

Deliverables (Outcome) of Requirement analysis phase are:

  • Requirement Traceability Matrix (RTM)
  • Automation feasibility report

Test Planning

Test Planning phase starts soon after the completion of the Requirement Analysis phase. In this phase the QA manager or QA Lead will prepare the Test Plan and Test strategy documents. As per these documents they will also come up with the testing effort estimations.

Activities to be done in Test Planning phase are given below:

  • Estimation of testing effort
  • Selection of Testing Approach
  • Preparation of Test Plan, Test strategy documents
  • Resource planning and assigning roles and responsibility to them
  • Selection of Testing tool

Deliverables (Outcome) of Test Planning phase are:

  • Test Plan document
  • Test Strategy document
  • Best suited Testing Approach
  • Number of Resources, skill required and their roles and responsibilities
  • Testing tool to be used

Test Case Development

In this phase the QA team write test cases. They also write scripts for automation if required. Verification of both the test cases and test scripts are done by peers. Creation of Test Data is done in this phase.

Activities to be done in Test Case Development phase are given below:

  • Creation of test cases
  • Creation of test scripts if required
  • Verification of test cases and automation scripts
  • Creation of Test Data in testing environment

Deliverables (Outcome) of Test Case Development phase are:

  • Test cases
  • Test scripts (for automation if required)
  • Test Data

Test Environment setup

This phase includes the setup or installation process of software and hardware which is required for testing the application. In this phase the integration of the third party application is also carried out if required in the project.

After setting up the required software and hardware the installation of build is tested. Once the installation of build is successful and complete then the Test Data is generated.

After the creation of Test data the Smoke testing is executed on the build in order to check whether the basic functionalities are working fine or not. This phase can be done in parallel with the Test Case Development phase.

Activities to be done in Test Environment Setup phase are given below:

  • As per the Requirement and Architecture document the list of required software and hardware is prepared
  • Setting up of test environment
  • Creation of test data
  • Installation of build and execution of Smoke testing on it

Deliverables (Outcome) of Test Environment Setup phase are:

  • Test Environment setup is ready
  • Test Data is created
  • Results of Smoke testing

Test Execution

Before starting the Test Execution phase the Test Environment setup should be ready. In Test Execution phase the test cases are executed in the testing environment.

While execution of the test cases the QA team may find bugs which will be reported against that test case. This bug is fixed by the developer and is retested by the QA.

Activities to be done in Test Execution phase are given below:

  • Execution of Test Cases
  • Reporting test results
  • Logging defects for the failed test cases
  • Verification and retesting of the defect
  • Closure of defects

Deliverables (Outcome) of Test Execution phase are:

  • Test execution Report
  • Updated test cases with results
  • Bug Report

Test Cycle Closure

In order to start the Test Cycle Closure activity the Test Execution phase should be completed. In Test Cycle phase the QA team will meet and discuss about the testing artifacts.

The whole intent of this discussion is to learn lessons from the bad practices. This will help in future projects.

Activities to be done in Test Cycle Closure phase are given below:

  • To evaluate the test completion on the basis of Test Coverage and Software Quality
  • Documentation of the learning from the project
  • Analyzing the test results to find out the distribution of severe defects
  • Test Closure Report preparation

Deliverables (Outcome) of Test Cycle Closure phase are:

  • Report of Test Closure

The below table briefly explains the Software Testing Life Cycle along with the Entry Criteria, Activity, Exit Criteria and Deliverable associated with each phase:

STLC phases Entry Criteria Activity Exit Criteria Deliverables (Outcome)
Requirement analysis Availability of Requirement document both Functional as well as non-functional

Architectural document of the application or the product should be available

Acceptance criteria defined and duly signed by the customers


Analysis of System Requirement specifications to understand the different business modules and it’s functionalities

To identify the user profile, user interface and user authentication

Types of tests to be performed on the application or product should be identified

Should collect the details about testing priorities

Preparation of RTM that is Requirement Traceability Matrix

Test Environment details should be identified in order to do testing

Analysis of automation possibility if it is required

RTM should be signed off

The customer should sign off on the test automation feasibility

Requirement Traceability Matrix (RTM)

Report on Automation Feasibility if it is applicable

Test Planning Detailed requirement document

Requirement Traceability Matrix (RTM)

Automation Feasibility Report


Preparation of Test Plan document

Preparation of Test strategy document

To analyze the best suited testing approach for the application or product

To analyze the testing techniques and the types of testing to be carried out in order to maintain the quality

Selection of the testing tool

Estimation on the testing efforts

Resource planning as per the skill required for testing and also assigning roles and responsibility to them

Approved Test Plan document

Approved Test Strategy document

Document of Effort estimation

Test Plan document

Test Strategy document

Effort estimation document

Test case development Detailed Requirement document

Test Plan and Test strategy documents

Automation Feasibility Report



Creation of test cases for all the modules or features in the application or product

Creation of automation scripts if required

Review of test cases and test automation scripts

Test data creation

Reviewed Test cases

Reviewed Test automation scripts

Test data creation ready for testing


Test cases

Test automation scripts

Test data

Test Environment setup System design documents should be available

Architectural document of the application should be available

Environment set-up plan document should be available


Understanding the design and architecture of the application

Setting up the test environment

Installation of required hardware and software in order to start testing the application

Integration of any third party application (if required)

Installation of build

Creation of test data

Execution of smoke testing on the build

Accepting or rejecting the build as per the smoke test result

Environment setup is ready for testing

All the required software and hardware are installed

Build installation is complete and successful

Test data creation is complete

Smoke testing is done

Test environment along with test data

Smoke test result

Test Execution Documents like RTM, Test Plan, Test strategy, Test cases and Test scripts should be ready

Test environment should be ready

Test data should be ready

Integration of third party application (if required) should be successful

Smoke testing of the application should be successful


Execution of test cases

Preparation of test result document

Logging defects for the failed test cases

Mapping of defects with the test cases

To update the test cases and test strategy if required

Fixed defects should be retested

Closure of the defects if they are working as expected

Execution of regression testing of the application or product in order to ensure its stability post defect closure


All test cases are executed

Defects are logged and tracked for closure

Completed the test case execution

Updated the test cases wherever required

Defects reported

Test cycle closure All the test cases are executed and updated

Test results are documented

Defect logs are available

Evaluation of the test completion on the basis of Test Coverage and Software Quality

Preparation of Test Closure report

Analyzing the test results to find out the distribution of severe defects

Signed off Test Closure report by the client


Test closure Report

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.

Difference between regression testing and retesting

Before we start with the differences between regression testing and retesting it’s good to have simple understanding of each topic. Basically, regression testing is carried out to ensure that the existing functionality is working fine and there are no side effects of any new change or enhancements done in the application. In other words, Regression Testing checks to see if new defects were introduced in previously existing functionality. [Read more…]

What is Retesting? When to use it? Advantages and Disadvantages

Retesting is testing of a particular bug after it has been fixed. Usually tester raises the bug when they find it while testing the product or its component. This bug is assigned to a developer and he fixes it. Post fixing the bug is assigned to the tester for its verification. This testing is known as retesting. [Read more…]

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 software testing interviews. The questions can be majorly categorized under three categories. [Read more…]

21 Qualities Of A Good Software Tester

Every organization is using technology these days. From big media to textile giants, mutual funds to startups, each one has their unique requirements for software and automation. While development and implementation of the software is vital to these organizations, there is a growing need for good software testers who love testing. There is no shortage of software tester jobs that pay a good salary. One commonly asked question is “How to become a software tester?” Before one goes into the technical details of software testing, its important to ensure that you have the characteristics required for a tester. [Read more…]

Best Test Management Tools – Web based

Test management tools take care of the entire end to end QA processes. It is used to keep track of the information like Test strategy, Test planning, Test cases and it also keeps the track of all the bugs raised and much more. There are many different types of test management tools which come with different features which are suitable for different types of testing. Most test management tools allow you to start working with them without having to install anything on your machine. This allows the tester to collaborate with his/her team from any where. Below we list some of the best web based test management tools. [Read more…]

Best Desktop Test Management Tools

Test Management tools are used for planning the testing activities and for storing the information about the project and also reporting the status of the testing activities. These tools are installed on your desktop and are used to manage the testing efforts. Some tools have a common database or a web based back end, which is used to share data across multiple desktops. Some of the widely used Desktop test management tools are listed below. [Read more…]

Best Bug Tracker – Top free and paid issue tracking software tools

Bug trackers are nothing but bug tracking software tools which are used for tracking bugs or issues found during the testing of any software application or product. These tools are basically used by the testers and to some extent by the developers as well. Bug tracker tools keep the records of all the bugs raised through their issue tracking system. It helps us in predicting the completion of milestone based on the bugs raised. This also helps us in deciding the regression testing to be performed around the features. The tools help us in monitoring the features which have the most bugs. They also helps us to find the bug fix rate per developer. Below are some of the best bug trackers available : [Read more…]