What exactly is Ad Hoc Testing? When Will you use Ad Hoc Testing ?
Ad-hoc testing is an unscripted software testing method. Often, people confuse it with the exploratory, negative and monkey testing. In the domain of software testing, the word “ad-hoc” means that the test is for a particular purpose at hand only. You cannot use the same test another time. It is almost like a “single-use” test. Thus, it has to be very effective and efficient.
The following characteristics will provide the real meaning of ad-hoc testing:
- Ad-hoc testing is a random and unscripted test, performed without a formal test plan, procedures or documentation of results. These characters of ad-hoc testing coincide with those of monkey and exploratory testing.
- You will need to perform this test only once unless there are some defects. If you find a defect, the action plan that you create depends on the kind of defects found and the frequency of occurrence. You can also revise the regular and scripted testing plan after finding those defects.
- Ad-hoc testing is also known as free hand testing. To conduct this test, you just need to have the knowledge and skills about the system. In addition, the tester is at freedom to proceed as he or she feels necessary. However, the tester will need to improvise the test to find additional bugs.
- It is a functional test as the tester attempts to “break” open the system’s functionality.
During 1990’s, ad-hoc testing experienced a bad reputation, for people presumed that, it was a careless way of testing. Therefore, a group of professionals started to name their random and unscripted testing method as exploratory testing. The belief that ad-hoc and exploratory testing are similar is partly true. In exploratory testing, the next test will rely on the result of the just completed test.
If you conduct, a test only once in the series of different tests, then you can call it as ad-hoc test. In essence, ad-hoc testing acts as an improvisation on a test procedure. The test starts with a documented test procedure but introduces further improvisations as the test progresses based on the needs and requirements. Some people compare this test to classical jazz where you can still recognize the original track but the musical arrangement slowly introduces subtle variations to the original track. To summarize, you can conduct an ad-hoc test as an exploratory test just once unless you find out defects in the software. However, supporters of exploratory test may not agree to this.
Does Ad Hoc Testing fit in the SDLC?
Ad-hoc testing is a unique test with its own inherent strengths and merits. However, this testing system may not be appropriate in certain stages of the software developmental cycle. A random and unscripted test runs just once it does not require documentation of results. However, this could be a big bottleneck if not used properly.
Here are some situations where ad-hoc testing is inappropriate:
Ad-hoc testing may not be an appropriate testing method in cases when there is a test failure or when documentation is necessary. When there is a need for authorizing a re-test, repairs or any other corrective measures to make the product acceptable to end users, then ad-hoc testing may not be useful. Alternatively, when the re-test needs a repetition, then ad-hoc testing may not be applicable.
In practice, acceptance and release testing, usually performed after product verifications, is one of the means to validate that the software meets all the agreed requirements or specification. To perform an acceptance test, the test plan should ensure that all the specified needs and requirements have been checked and validated. To ensure that checks and validations are conducted, testers should provide documentation of test plan as well as the corresponding proofs related to every requirement those are aligned with the corresponding results.
The customers or their representatives do not necessarily have to be present during the test itself but they need the documents to act on the delivery and payment of the product. An acceptance test may be conducted along with the client or customer’s presence. Depending on the pre-development agreements, acceptance may also be performed at the client’s site.
Except for the above-mentioned cases, ad-hoc testing is quite appropriate to use in any stage of the software development cycle. There is a planned test during the different stages of the development cycle. They are effective in detecting routine or expected errors as well. Testing, however, will be limited by the designed testing scope and procedure. If the technical personnel or engineers see the probability or potential of a defect, a simple ad hoc test can be conducted without delay, unlike the other tests which require a test plan. So, a probable or potential problem is verified and acted upon without any delay.
Advantages of Ad Hoc Testing
Like other software testing methods, even ad-hoc testing is an important test that is used at different stages of software development. During the early phase of software development, this test allows the developers to conduct random and cost effective tests, which would eventually help them to comprehend the program in an effective manner. During later stages, the inputs and results accumulated from the earlier tests would assist in more advanced scheduling and setting priorities. The critical information and data gathered during the testing phase acts as a great guide in predicting potential problems at the later stage of the development and during the acceptance testing.
Ad-hoc testing could be very effective when used with other testing methods. Ad-hoc testing will allow a skilled and knowledgeable tester to conserve more time in the actual testing process than the preparation prior to the test. In essence, the tester will have additional time to improvise the process, thus making the testing experience more mentally stimulating than that with scripted testing. The results obtained during the testing will help the testing team learn and understand more about the software system being developed. It will also help the tester to further improve the scripted testing method as new information and details are incorporated into the test plan.
One of the most significant benefits of using this test is its ability to provide very quick tests because of much lower levels of preparation time needed prior to testing. Unduly longer time for conducting a test could eventually cause unacceptable delays in the production of development of software products. However, ad-hoc testing has the ability to provide quicker results when compared to other methods.
There is no need to document or summarize the results of the test which will eventually help the testers to concentrate on the test without any disturbance. This is very beneficial to the tester because he or she can collate or accumulate more valuable information about the software being developed. It is also possible to define robust preventive measures to prevent future errors.
Disadvantages of Ad Hoc Testing
Lack of documentation seems to be one of the biggest pitfalls of ad-hoc testing. During the testing procedure, you can find a number of useful information about the software. This hitherto new information will be known to a select few testers unless they decide to share the information with others who are involved in the testing process.
Absence of documentation means lack of availability of sensitive information to testers who may be unaware of previous errors. If proper documentations are made available to the testing team, they would never repeat the same errors or mistakes those were committed previously. Documentation also acts as very good and useful references with an ability to guide the testers in an effective manner to achieve better results.
An ad-hoc test provides a one-time result without any documentation to back the results. Software management team often considers this test as a wasteful activity as it does not provide information on how the testing team spent its time towards testing activities. Testers, who work for the testing activities are highly skilled, better paid and are knowledgeable in the testing domain. Thus, the management team that hires such skilled people is always concerned about how they could keep their cost of operations down and at a reasonable level.
Whatever the advantages or demerits of ad-hoc testing are, you still need to hire a qualified and skilled tester to perform the testing. A skilled tester would be able to design and perform tests to find out possible errors or addresses some critical concerns. In some cases, a number of quality controls may not be covered in the designed test plan. This may eventually lead to potential problems undetected until the end of the testing. Skilled testers will have the ability to anticipate all potential problems and obstacles during the testing phase.
An effective management team always requires careful balancing among various quality, productivity and cost factors. It is very critical to effectively utilize the human and technological resources by planning for optimum methods of developing the product. To conduct a result oriented test, you will need a subtle combination of appropriate methods based on effectiveness and cost.
Those who are skeptical of ad-hoc testing as a wasteful activity may need to find further proof of performance of their testers aside from collating recordings of test results. In fact, there may be other ways of measuring and quantifying performance, even creative and intelligent ones. Not all programs are created equal nor are they similar. Some of them are very complex while others are very simple.
To summarize, ad-hoc testing is quick, inexpensive, and cost-effective during the early phase of the developmental cycle. Ad-hoc testing may prove to be an adequate plan that ensures both quality and customer satisfaction.