In this article, we will analyze what ad-hoc testing is and what advantages and disadvantages it has. We will also consider best practices in this type of testing.
What is ad hoc testing?
“Ad hoc” is translated from English as “accidental, ill-conceived, spontaneous.” Such testing is also called “random testing” or “monkey testing”.
When conducting ad-hoc testing, the tester tries to break the system using non-standard methods. Usually this testing does not have a clear plan, and testers do not adhere to any special methodologies for creating test cases.
The main purpose of ad-hoc testing is to find bugs through random checks. At each step of testing, the tester improvises. In this way, it is possible to catch very specific and interesting bugs that are easy to miss using other methods.
The most interesting aspect of ad-hoc testing is the absence of any test thinking techniques. Thanks to this, you can find bugs that usually slip unnoticed. But at the same time, it is difficult to reproduce this testing, since there are no written test cases or documentation.
The success of ad-hoc testing depends entirely on the creativity and perseverance of the tester, and sometimes on pure luck.
Types of ad hoc testing
1. Buddy Testing
The essence of Buddy Testing is that at least two “companions” (translated from English as buddy – friend, companion) simultaneously try to identify bugs in the same module.
Buddy Testing can be thought of as a combination of system and unit testing. It is carried out after unit testing of the module.
Companions are usually a developer and a tester. Together they work on a module for creating valid test cases.
2. Monkey Testing
Monkey testing is often used to test individual modules. Its essence is that testers test an application or product randomly, without test cases.
The main task of the tester is to analyze the operation of the application in a completely random way. This helps to ensure that the system is able to withstand any failure.
Testers give random input to the program and observe the results. The output helps identify errors, inconsistencies, and failures in the system.
3. Pair testing
Pair testing is similar to Buddy Testing, but there are two testers working on the module instead of a tester and a developer. Also, Buddy Testing is a combination of unit and system testing, while pair testing is purely unit testing.
The essence of pair testing is that testers work together on the same machine and at the same time share ideas and knowledge. The latter is especially useful when the level of knowledge among testers varies. In this case, the less experienced can learn a lot from the older colleague.
Working in pairs, testers can assign roles: say, one conducts tests, and the other takes notes.
When to do ad hoc testing
Ad-hoc testing can be useful when you don’t have time for a long and comprehensive testing process that requires preparation of requirements and test cases.
The ideal time for ad-hoc testing is after all the formal tests have been completed. But it can also be carried out during the development process, and after its completion.
It is worth noting a couple of scenarios in which ad-hoc testing is not recommended:
- during beta testing
- if all test cases are not completed.
Benefits of ad-hoc testing
- The main advantage of ad-hoc testing is the ability to identify bugs that would go unnoticed by other checks. And since such testing does not need to be planned and structured, it saves a lot of time.
- An additional plus of ad-hoc testing is that the tester conducts it in a free form, according to his understanding of the system. He can add various checks as he goes along, which helps to identify errors.
- Such testing can be carried out by software developers themselves.
Disadvantages of ad-hoc testing
- The main disadvantage of ad-hoc testing is that the testing process itself is not documented, since it does not follow a specific set of test cases. As a result, it is more difficult to reproduce the observed error. To do this, the tester has to remember what steps led him to the desired point.
- In addition, if the tester does not have prior knowledge of the functionality of the application under test, ad-hoc testing will be useless, it will not reveal any errors.
- Also, ad-hoc testing does not guarantee that all bugs will be found. The success of this testing generally depends on the knowledge and skills of the tester.
- Since such testing involves the absence of pre-prepared or documented test cases, it is difficult to predict how much effort, time and resources will be required to conduct tests. It may take several minutes or several hours to find one error.
Best Practices in ad-hoc testing
If the tests are done incorrectly, time is wasted. Therefore, to successfully conduct ad-hoc testing, it is important to know how to optimize the process.
The following best practices ensure that testing time is wisely spent and the chances of success are maximized.
Check out the specification
A QA specialist conducting ad-hoc testing should have a good knowledge of the application being tested and its main functions. Only thanks to this, he will be able to “guess” where errors and bugs are hidden.
Identify the most “suspicious” parts of the application
If the tester is not familiar with the application, it is recommended to identify areas of the program where the probability of errors is the highest and start testing from there.
Features that the end user has access to should be prioritized
Start testing with the parts of the application that are most commonly used by clients and end users. Thus, it will be possible to catch the most noticeable bugs for users in advance.
Formulate a free-form test plan
Yes, ad-hoc testing does not require pre-planning or documentation. However, it will be useful to sketch out at least some plan. Make notes about the parts of the program that need to be tested: this will help you cover as much as possible with tests as quickly as possible.
Use the right tools
It is very important to use the right tools: debuggers, profilers, etc. They help the tester isolate bugs.
Ad-hoc testing does not require pre-planning, documentation and design of test cases. And if such a task is entrusted to specialists who are creative and have good knowledge of the system, this testing can save a lot of time and reveal more bugs than planned.