In this article, we will take a look at intuitive, or ad hoc, testing. We will consider what it is, discuss the different types of intuitive testing, examine its advantages and disadvantages, and learn who can use it and when to do so. Let’s go!
Ad hoc testing is a special type of testing that does not involve any preparation or preliminary planning. There are no test scenarios, nor are there any expectations about the result. In short, ad hoc testing involves the tester's improvisational skills. There is no need to develop and adhere to a plan or maintain documentation, and there are no test cases (although this can make it difficult to reproduce the error, since there are no plans and documents). At the same time, though, you should not think that this kind of testing is ineffective. Often it gives even better results than working according to a plan or script.
The who and when of intuitive testing
Sometimes we face a situation when there is no time for thoughtful and planned testing. For example, perhaps the development process has been delayed, or new requirements for the product have been put forward during the development process. In cases like this, you might find yourself running up against a deadline, or the product might need to be brought to market quickly. The software product, however, cannot be released without testing at all, as it could be full of bugs. This is the time when ad hoc testing comes into play. A tester who conducts such testing should understand in general terms how the product works, be able to execute its main functions under different conditions, and test the program's reactions to user actions within the framework of common sense.
That is why ad hoc testing can be performed only by a person who understands the product. The main problem is time. In these scenarios, there is not enough time to learn the product, make a detailed plan, or document the testing process. Everything must be done quickly, yet at the same time in the fullest possible manner.
Types of intuitive testing
Now let's look at the three types of ad hoc testing:
- Buddy testing. This means that there are two or more "buddies" who try to find bugs in the same functionality at the same time within the same module or system. For example, a programmer and a tester can be such buddies.
- Monkey testing. Monkey testing is most often used during the testing of various modules. Its essence is random (i.e., without any order) testing of a program or a particular module without any cases; that is, it is a completely random process. This helps to identify a program’s overall resilience to any failure.
- Paired testing. In many ways paired testing is similar to buddy testing, but in this case, a programmer will not act as a tester; two testers work together in paired testing. Also, unlike buddy testing, paired testing involves working only within a single module. Testers can divide roles among themselves; for example, one person runs the tests, and the other person documents the results.
Ad hoc testing benefits and drawbacks
In order to understand how well—or how poorly—such a scheme works, let's look at the following table:
Benefits of ad hoc testing
- Everything is done as quickly as possible; there is no need to carry out any preparation.
- The main and most critical bugs are found immediately.
- A new tester will be able to quickly and easily master the main points much faster than in the case of standard test cases.
- Testers can accidentally find even difficult-to-reproduce bugs that otherwise would have gone unnoticed.
Drawbacks of ad hoc testing
- There is no systematic approach, which means the probability of finding bugs is lower than with a planned approach.
- It can be very difficult to reproduce the conditions of the bug.
- General knowledge about the product is absolutely necessary, as such testing is impossible without it.
- It is difficult to plan resources for testing because it is not always clear how much time and people it will take to conduct tests.
How to improve the effectiveness of ad hoc testing
Here are some simple tips to help you to improve the overall efficiency of your ad hoc testing process:
- Prepare. Analyze defects in similar applications. This will increase the probability of finding such defects in the application under test.
- Form a draft. It doesn't have to be a detailed test plan, but create an outline of where to start and what problems to look for.
- Test by sessions. Test different functionalities of the product one by one—that is, not all at once. This helps to focus on and understand difficulties better.
- Pay attention to target areas. First, check those areas that are not covered by the existing test design and test documentation.
- Use various help programs. Some defects can be detected using debuggers, profilers, and monitoring. Knowledge of such utilities helps in testing.
- Record your test results. Keep a record of the bugs found and in which parts of the application they were found. Note also if there are more of them, and so on. Good records can help both developers and testers later on.
When used correctly and skillfully, ad hoc testing is a great tool to help you when you are short on time and can’t perform more detailed or planned testing. It also helps you spot bugs in unexpected places after basic testing is completed. But to get the most benefit out of it, the tester must have a general understanding of the process and know the product being tested well.