February 20, 2020
Planning For Ad Hoc Testing
In this article, we have covered Ad hoc testing, its types, its advantages, its disadvantages, and the best practices to conduct Ad hoc testing.
What Is Ad Hoc Testing?
Ad hoc testing sometimes referred to as ‘random testing’ or ‘monkey testing’, is defined as an informal testing type. The aim of this process is to break the system using unconventional methods. This type of software testing is generally unplanned and does not follow any specific test design techniques to create test cases.
The main aim of ad hoc testing is to find any defects through random checking. The tester improvises the steps by arbitrarily executing them. This can uncover very specific and interesting defects, which are easily missed when using other methods.
The most surprising aspect of ad hoc testing is that it does not include any test design techniques. This means that though this method does find defects that may not usually be found, it is more difficult to reproduce, as there are no written test cases or documentation.
The success of ad hoc testing really comes down to the creativity and persistence of the tester and is sometimes just due to pure luck. The ad hoc testing technique falls directly under the ‘unstructured testing’ category.
Structured Vs. Unstructured Testing
This approach ensures that every activity that takes place during the testing procedure is scripted, from the creation of test cases to sequential execution. The tester will follow the script in order to successfully conduct the tests.
This approach involves testing through error guessing. The tester will create test cases during the testing process.
Types of Ad Hoc Testing Method
1. Buddy Testing
This type of ad hoc testing is conducted with a minimum of two people. It takes place after unit testing of a module has been conducted and completed. This type of testing can also be considered a combination of both system and unit testing.
The main aim is for two ‘buddies’ to work on identifying defects or bugs in the same module at the same time. This team will generally consist of one software developer and one software tester.
The two ‘buddies’ work together on that module to create valid test cases. This process ensures that the tester does not report any errors that invalid test cases may have generated.
Buddy testing has proved successful as it helps the tester develop better test cases and allows the development team to make design changes as early as possible.
2. Monkey Testing
Due to the random nature of the testing, this method has earned the name ‘monkey testing’. Monkey testing is most commonly done in the unit testing level. Here, testers randomly test the application or product without test cases. The tester’s main goal is to analyze the data or tests in completely random ways, ensuring that the system is able to withstand any crash.
Testers provide the software with random inputs and observe their corresponding outputs. Based on the output data, they can determine any errors, inconsistencies or system crashes better.
3. Pair Testing
Similar to ‘buddy testing’ in some ways, ‘pair testing’ involves a pair of testers working together on the modules for testing. The two testers will share ideas, knowledge, and opinions over the same machine in order to identify defects or errors.
This method of testing involves using testers who are paired according to their expertise and knowledge levels, allowing for different insights to any problem they identify. The two testers will share the same setup, also sharing the work of testing and documenting all observations between them. This method of testing also allows for one tester to execute the tests, while the other can take notes on the findings.
Also read: Use pair-testing for better acceptance testing
Buddy vs. Pair Testing
The main difference between buddy testing and pair testing is that buddy testing is a combination of unit and system testing. Another key difference is that buddy testing is executed by developers and testers together. Pair testing, however, is done only by testers who have different levels of knowledge.
When And When Not To Conduct Ad hoc testing
Ad hoc testing is commonly conducted when there is a lack of time to perform longer and more exhaustive testing processes. The more thorough testing method includes preparing test requirements documents, test cases, and test case designs.
The ideal time to conduct ad hoc testing is after the completion of all formal testing techniques. However, ad hoc testing can also be conducted in the middle of the software development, after the complete development of the software, or after a few modules have already been developed.
It is important to take note of the few scenarios when ad hoc testing is not recommended. A few conditions when ad hoc testing should not be conducted include:
When Beta testing is being conducted
In test cases which already have existing errors
Advantages Of Ad Hoc Testing
One of the main advantages of ad hoc testing is that it is able to identify any errors that would usually go unnoticed during formal testing methods. This can save a lot of time as it requires none of the planning that structured testing does.
Another advantage is that testers get to explore the application freely, according to their own knowledge and understanding of the application. They can then execute various tests as they go along, helping identify errors throughout the process.
Thirdly, testers and developers of the application can easily test the app themselves, as it does not require test cases. This allows the developers to create more efficient and bug-free code easily.
Ad hoc testing can also be combined with other testing techniques and executed thereafter to produce more effective and informative results overall.
Disadvantages Of Ad Hoc Testing
One of the main disadvantages of ad hoc testing is that the actual testing process is not documented since it does not follow a particular test case. This makes it more difficult for the tests to regenerate an error. Because, in order to get that error, the tester will need to remember the exact steps he/she took to get there, which is not always possible.
Occasionally, as a result of invalid test cases that are developed by the tester, invalid errors are reported. This can become an issue in the following error fixing processes. If the tester does not have prior knowledge about the functionality of the application under test, ad hoc testing will not be useful and won’t be able to identify any errors.
Ad hoc testing also does not guarantee that all errors will be found. The success of ad hoc testing relies on the skill and knowledge of the tester. Since there are no previously created or documented test cases, the amount of time, effort and resources that go into these tests remains unspecified. Finding one error could take anything from a few minutes to a few hours or longer.
Best Practices When Conducting The Testing
Tests that are not conducted in the right way can cause unnecessary time wastage. With this in mind, it is crucial to know how to optimize the process in order to efficiently perform successful ad hoc testing.
The following best practices will ensure that the time spent undergoing the process is spent wisely with the best chance of obtaining the desired results.
Be Familiar With The Software
It is imperative that the tester conducting the ad hoc testing has solid knowledge and hold on the application. It is important that the tester is familiar with all the main features of the application to ensure better ‘error guessing’. With the right knowledge, the tester will be able to find more bugs, errors and general inconsistencies.
Identify Areas Likely To Have Errors
If testers are not familiar with the application, then it is recommended that they identify the error-prone areas of the applications and start from there. Selecting sensitive areas to conduct ad hoc testing will allow testers to find errors with more ease.
Prioritize Areas The End-User Accesses Most Readily
Start by testing the areas of the application that are most used by the customers and end-users. By doing so, they will assess the important features first, which enables them to report any bugs beforehand.
Loosely Formulate The Test Plan
While ad hoc testing does not require any prior planning or documentation, it is useful to do some rough planning beforehand. Taking note of the main areas that require testing will help the tester to cover as much as possible in the shortest amount of time.
Increase Efficiency With The Right Tools
It is crucial to use the right tools, such as task monitors, debuggers, and profilers, to ensure the process runs efficiently. They supplement the testers’ ability to isolate errors, as there may be instances where exceptions are not identified while testing.
Ad hoc testing does not require elaborate planning, documentation, and test-case designs. Instead, it saves time due to its ad hoc nature, and by selecting testers who are creative and have prior knowledge of the application’s functionality. This testing can help find more defects than planned testing.