What is Ad Hoc Testing?

Ad hoc testing is an informal testing technique in which an application is tested without a documented test plan or procedure.

It is typically performed at an early stage of software development, usually after unit testing, to weed out bugs. Ad hoc testing relies on testers' intuition - testers who have an in-depth knowledge of the software.

Ad hoc testing is also used when testing time is limited or when the cost of quality is low - for example, testing a prototype.

Types of Ad Hoc Testing

Buddy Testing

Two individuals, typically one tester and one developer, come together to do ad hoc testing. This type of testing usually takes place after the completion of the unit testing of a module. The tester does not formally report the testing results; instead, the developer takes cues from the test results to improve the code and unit tests.

Pair Testing

This testing is just like buddy testing, where two individuals test the software subsystem. However, unlike buddy testing, where the pair comprises a tester and a developer, both individuals in pair testing are testers.

Testers in a pair often have complementary knowledge about the software for better testing outcomes.

Also, contrary to buddy testing, test results are recorded and reported to the developers.

Monkey Testing

Monkey testing is a testing technique in which testers check the application's response to random inputs. Defects, inconsistencies, and system crashes are recorded and reported.

Ad Hoc Testing Best Practices

Ad hoc testing, if not done right, can waste time and incur high costs. The following best practices are recommended to increase the testing efficacy:

Use testers that are conversant with the software

Testers doing ad hoc testing should be familiar with the software's key features and the primary problems it tries to solve. This awareness will maximize their chance of guessing the potential defects in the software.

Identify areas likely to have errors

Ad hoc testing is a manual process and is often utilized when time is premium. To maximize effectiveness, target areas that are sensitive or complicated.

Prioritize areas most used by end-user

The Pareto principle applies to most applications - 80% of the users use 20% of an application. If ad hoc testing is being used for system testing, validate the areas most used by end-users first.

Have a rough test plan

While ad hoc testing does not require any prior planning or documentation, it will help do some rough planning beforehand. A loose test plan will ensure that you test the right areas, prioritize them correctly and minimize the chances of missing key functionality.

Advantages of Ad Hoc Testing

  • Realizable anywhere in the SDLC
  • Faster and cost-effective during the early phase of software development
  • Requires lesser effort, is faster, and costs less than conventional testing - helpful when time is at a premium
  • Forms a good base for formal testing
  • Executable in conjunction with traditional testing

Disadvantages of Ad Hoc Testing

  • Recreating bugs is difficult.
  • Potential to miss critical bugs - cannot use in final stage testing.
  • High chance of redundant testing