What is «Ad-hoc testing», or «Free or Intuitive testing»? It is often confused with another type of testing – «Exploratory testing».
Difference between exploratory and Ad-hoc testing
Ad-hoc testing is a type of testing that is performed without preparation for product testing without determining the expected results, designing test scenarios. This is an informal, improvisational test. It does not require any documentation, planning, processes to be followed during the testing. This method in most cases gives a bigger number of error reports. This is due to the fact that the tester in the first steps begins to test the main functional part of the product and performs both positive and negative versions of the possible scenarios.
Most often, such testing is performed when the product owner does not have some specific goals, design documentation and previously set tasks. In this case, the tester relies on his general idea of the product, comparison with similar products, and his own experience. However, while ad-hoc testing, it is crucial to have some general information about the product, especially if the project is very complex and large. Therefore, you need a good understanding of the goals of the project, its purpose and the main functions and capabilities. And then you can start ad-hoc testing.
Types of ad-hoc testing:
- Buddy testing is a process when 2 people, usually a developer and a tester, work in parallel and find defects in the same unit of the product being tested. This type of testing helps testers perform the necessary checks and helps the developer fix many defects early on.
- Pair testing is a process when 2 testers check one module and help each other. For example, one can look for defects, and the other can document them. Thus, one tester will have a function, let’s say, a researcher and another – a correspondent.
- Monkey testing random testing of a product with the goal of breaking the program or causing it to crash as quickly as possible, using various input data variations (in simple words, to break it).
Differences between Buddy testing and Pair testing:
- Buddy testing is a combination of unit testing and system testing between a developer and a tester.
- Pair testing is performed only by testers with different levels of knowledge and experience (this combination will help to share views and ideas).
The main advantages of ad-hoc testing:
- there is no need to waste time preparing documentation;
- the most important defects are most often found in the early stages;
- often used when hiring a new employee. Using this method, a person learns in 3 days what, dealing with test cases, they would take a week to analyze – this is called force training of new employees;
- the ability to find hard-to-reproduce and elusive defects that could not be found using standard test scripts
An example of ad-hoc testing:
We use ad-hoc testing a lot in our life, take, for example, a regular trip to the supermarket.
After entering the supermarket, you can immediately find a basket / cart for groceries at the entrance, but if it is not in the place we are used to, this can be considered a bug. When choosing a milk, pay attention to the expiration date and if the milk turns out to be expired, again it will be a bug. So it is with other products. And if in the end, when paying for purchases at the checkout, a bottle of wine with a price tag of 100 turns out to be a price of 200, this will also be a bug.
If we need to conduct ad-hoc testing of an online store, then this short list can help with what to check:
- all site features are available without registration;
- correct display of animations and pictures;
- all site features are available after registration;
- registration process;
- the process of adding / removing from the cart;
- payment process for purchases;
- ease of use for beginners, simplicity, tips, help.
It is also worth noting that ad-hoc testing is often a favorite type of testing for testers, where you can demonstrate all your knowledge and execute the most presumed scenarios, that is, an opportunity for pure improvisation is provided.
Ways to improve the efficiency of ad-hoc testing:
- Preparation. Analyze flaws in similar applications, thereby increasing the likelihood of detecting such flaws in the software under test.
- Formation of drafts. It doesn’t have to be a detailed test plan, but an outline of where to start and what problems to look for.
- Session testing. Test various functionalities of the product in turn, that is not all at once. This helps to better focus and understand problems.
- Pay attention to targeted areas. First of all, check those areas that are not covered by the test design and test documentation.
- Use of various auxiliary programs. Some defects can be detected using a debugger, profilers and monitoring. Familiarity with such utilities helps in testing.
- Record test results. Records of which bugs were found, in which parts of the software there are more of them, etc. This can help both developers and the testers of the next versions of the program. It is also useful to write down what did not work, because it can be helpful for analysts to see what worked well
Exploratory testing
Exploratory testing is the simultaneous study of a software product, design of tests and their execution. It is an informal test design method in which the tester actively monitors the design of the tests while the tests are being executed and uses the information gained during the testing to design new tests.
If each subsequent test that the tester performs is selected based on the results of the preliminary test, this means that the exploratory testing is being used.
The main thing to remember about exploratory testing is that it is not a testing technique in and of itself. Rather, it is an approach that can be applied to any type of testing. Another important point is that exploratory testing is not just about executing tests. Testers can take an exploratory approach both when developing new tests at the beginning of an iteration and when analyzing tests that have already been completed. Also, exploratory testing should not be done carelessly, hastily and without preparation. An exploratory approach may require a very thorough and lengthy preparation for certain tests, and the knowledge and skills accumulated over many years by the tester that applies this approach is often an invisible, but important form of preparation. Exploratory testing can be done manually, or it can be done with extensive use of automation tools, that is, any auxiliary testing tools.
Pros and cons of exploratory testing
Pros:
- most often used when the required documentation is unavailable or only partially available;
- includes a research process that helps detect more bugs;
- allows finding bugs that are usually missed during the use of other testing methods.
- helps expand testers' imagination by performing more and more tests which in the end improves overall performance;
- covers the smallest part of the software in detail as well as all the requirements;
- covers all types of testing, different scenarios and cases;
- encourages creativity and intuition;
- allows generating new ideas during the test execution.
Cons:
- dependence on testers' skills;
- limited by the tester's knowledge;
- not suitable for long-term execution.
When should Exploratory testing be applied?
The most common cases are:
- when a quick feedback for a new product or new product functionality needs to be provided;
- when you need to quickly familiarize yourself with the product;
- when the main types of testing have already been carried out and the time allows you to diversify the testing methods;
- when you need to find a defect localized in a specific module as soon as possible;
- when the work of another tester is being reviewed;
- when you need to study the state of a particular risk to decide whether to cover a specific area with tests.
Conclusion
The test methods described above have deep similarities and differences, so it is worth separating these to popular test methods as part of testing. The difference between ad-hoc and exploratory testing is that, theoretically, anyone can do ad-hoc testing, and exploratory testing requires skill and mastery of certain techniques. However, certain techniques are not only testing techniques.
Both methods are often used in projects and are also an integral part of the knowledge and experience of a modern software tester.