Free testing (ad-hoc testing) is a type of testing that is performed without preparation for testing a product, without defining expected results, or designing test scenarios. This is an informal, improvisational test. It does not require any documentation, planning, processes to be followed while performing testing. This method of testing in most cases produces a larger number of bug reports. This is due to the fact that the tester in the first steps begins testing the main functional part of the product and performs both positive and negative versions of possible scenarios.
Most often, such testing is performed when the product owner does not have specific goals, design documentation and previously set tasks. In this case, the tester relies on his general understanding of the product, comparison with similar products, and his own experience. However, when testing ad-hoc, it makes sense to have 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 free testing (ad-hoc testing):
Buddy testing is a process where two people, usually a developer and a tester, work in parallel and find defects in the same module of the product being tested. This type of testing helps the tester to perform the necessary checks and the developer to fix many defects in the early stages.
Pair testing is a process where 2 testers test one module and help each other. For example, one can look for defects, and the second can document them. Thus, one tester will have the function of, so to speak, a detector, and the other will have a descriptor function.
Monkey testing is arbitrary testing of a product with the goal of breaking the program or causing it to stop as quickly as possible, using various variations of input data (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 - 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 often detected in the early stages;
often used when hiring a new employee. Using this method, a person learns in 3 days what it would take a week to deal with test cases - this is called forced training for new employees;
the ability to find hard-to-reproduce and elusive defects that would be impossible to find using standard test scripts.
Example of free testing (Ad-hoc testing):
We often use ad-hoc testing in our lives, take, for example, a regular trip to the supermarket.
After entering the supermarket, right at the entrance you can find a basket/trolley for groceries, but if it is not in your usual place, this can be considered a bug. When choosing milk, pay attention to the expiration date and if the milk is expired, again it will be a bug. It's the same with other products. And, if in the end, when paying for purchases at the checkout, a bottle of wine that had a price tag of 100 turns out to be priced at 200, this will also be a bug.
If we need to do ad-hoc testing of an online store, then this short list can help with what needs to be checked:
all site features are available without registration;
correct display of animations and pictures;
all site features are available after registration;
registration process;
process of adding/removing from cart;
process of payment 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 they can show all their knowledge and perform the most difficult to predict scenarios, that is, they provide the opportunity for pure improvisation.
Ways to increase the efficiency of Ad-hoc testing
Preparation. Analyze defects in similar applications, thereby increasing the likelihood of finding similar defects in the application under test.
Formation of a draft. This should not be a detailed test plan, but an outline of where to start and what problems to look for.
Session testing. Test various product functionality one by one, i.e. not all at once. This helps you focus better and understand the problems.
Focus on target 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 debuggers, profilers and monitoring. Knowledge of such utilities helps in testing.
Record test results. Records of what bugs were found, in which parts of the application there are more of them, etc. This can help both developers and testers of future versions of the application. You can also write down what didn’t work, because... It can be helpful for analysts to see what worked well.
Exploratory testing
Free testing (ad-hoc testing) is a type of testing that is performed without preparation for testing a product, without defining expected results, or designing test scenarios. This is an informal, improvisational test. It does not require any documentation, planning, processes to be followed while performing testing. This method of testing in most cases produces a larger number of bug reports. This is due to the fact that the tester in the first steps begins testing the main functional part of the product and performs both positive and negative versions of possible scenarios.
If each subsequent test that a tester performs is selected based on the results of the previous test, this means that we are using exploratory testing.
The main thing to remember about exploratory testing is that it is not a testing technique in 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 running tests. Testers can use an exploratory approach both when developing new tests at the beginning of an iteration and when reviewing completed tests. Also, exploratory testing should not be performed carelessly, hastily or without preparation. The research approach can require very careful and lengthy preparation for certain tests, and the accumulated knowledge and skills of the tester using this approach over many years is an often invisible but important form of preparation. Exploratory testing can be carried out manually, or can be carried out with extensive use of automation tools, i.e. any auxiliary testing tools.
When should exploratory testing be used?
The most common cases:
when you need to provide quick feedback for a new product or new product functionality;
when you need to quickly familiarize yourself with a product;
when the main types of testing have already been carried out and time allows for diversifying testing methods;
when you need to find a defect localized in a specific module in the shortest possible time;
when the work of another testing specialist is checked;
when it is necessary to study the state of a specific risk in order to decide whether it is necessary to cover a specific area with tests.
Useful Links:
Ad-hoc testing article/eng
Ad-hoc testing article/rus
Ad-hoc testing video tutorial/eng