- Authors
- Name
- Nguyễn Đức Xinh
- Published on
- Published on
What is AD-hoc Testing? An Informal Yet Effective Software Testing Method
What is AD-hoc Testing?
AD-hoc testing is a software testing method performed without following any pre-defined plans, documentation, or formal procedures. True to its name, "ad-hoc" means "for this specific purpose" or "as needed," and this testing approach is carried out spontaneously, without structure, often relying on the tester's experience and intuition.
In the software development process, AD-hoc testing is typically viewed as a supplementary testing method, performed alongside more formal testing approaches to detect bugs that structured testing methods might miss.
Characteristics of AD-hoc Testing
Informal and Unplanned
Unlike traditional testing methods such as Unit Testing, Integration Testing, or System Testing, AD-hoc testing doesn't require detailed plans or documentation. Testers can start testing immediately without preparing test cases or scripts.
Experience and Knowledge-Based
The effectiveness of AD-hoc testing heavily depends on the tester's experience and knowledge of the system. Testers with more experience can often detect potential bugs quickly and more efficiently.
Flexible and Fast
Since there's no need to follow specific procedures or documentation, AD-hoc testing can be performed quickly and flexibly, saving time and resources.
Exploratory and Creative
AD-hoc testing allows testers to freely explore and experiment with the software's features in their own way, potentially leading to the discovery of bugs that structured testing methods might miss.
When to Use AD-hoc Testing?
AD-hoc testing is typically used in the following situations:
-
Before product release: To quickly detect potential bugs before the product is widely released.
-
After formal testing methods: To supplement structured testing methods and detect bugs these methods might miss.
-
When time is limited: In cases where testing time is limited, AD-hoc testing can help detect critical bugs quickly.
-
To better understand the system: AD-hoc testing can help testers gain a deeper understanding of how the system works and its features.
-
To test real-world scenarios: AD-hoc testing helps simulate how real users interact with the software.
AD-hoc Testing Implementation Process
Although AD-hoc testing doesn't have a formal process, it can still be organized into the following basic steps:
1. Define Objectives
Before starting, testers should clearly define the objectives of the testing. This could be testing a specific feature, a part of the system, or the entire system.
2. Understand the System
Testers should spend time understanding the functions and how the system works. This will give them an overview and help them know where to focus their testing.
3. Perform Testing
Based on the objectives and understanding of the system, testers begin performing operations and interacting with the system to detect bugs. They might try random cases, uncommon situations, or complex interactions.
4. Record Detected Bugs
When a bug is detected, testers should record details about it, including how to reproduce the bug, the environment in which it occurred, and any other relevant information.
5. Report Results
After completing the testing process, testers should compile and report the detected bugs to the development team so they can fix them.
Common AD-hoc Testing Techniques
1. Monkey Testing
Monkey Testing is a technique where testers perform random operations on the software without following any rules or plans, similar to a monkey using a computer. The purpose of Monkey Testing is to find unexpected bugs or system crash situations.
2. Buddy Testing
Buddy Testing is a technique where two people work together on the same computer to test the software. One person is usually a developer, and the other is a tester. They discuss, explore, and test the software's features together.
3. Pair Testing
Similar to Buddy Testing, Pair Testing also involves two people working on the same computer. However, both people are testers, and they typically have different experience and skills, allowing them to complement each other during the testing process.
4. Error Guessing
Error Guessing is a testing technique based on the tester's experience to predict where bugs are likely to occur in the system. They create test scenarios based on these predictions and check if the system works correctly.
5. Exploratory Testing
Exploratory Testing is a technique where testers simultaneously learn about the system, design test cases, and perform testing. It's a very flexible and creative testing technique, focusing on exploration and learning.
Benefits of AD-hoc Testing
1. Quick Bug Detection
AD-hoc testing allows testers to quickly detect basic bugs without having to go through a complex testing process.
2. Time and Cost Saving
Since it doesn't require careful preparation or detailed documentation, AD-hoc testing helps save time and cost for the testing process.
3. Detection of Unexpected Bugs
AD-hoc testing often detects bugs that structured testing methods might miss, especially bugs arising from uncommon or unforeseen situations.
4. Enhanced System Understanding
The process of performing AD-hoc testing helps testers better understand how the system works and its features, enabling them to suggest improvements or identify potential issues.
5. Supplement to Other Testing Methods
AD-hoc testing is an effective supplementary testing method for structured testing methods, helping enhance system reliability.
Limitations of AD-hoc Testing
1. Difficult to Reproduce Bugs
Due to the lack of documentation or specific procedures, reproducing bugs detected through AD-hoc testing can be challenging.
2. Cannot Ensure Coverage
AD-hoc testing doesn't follow a specific plan, so it cannot ensure that all parts of the system are adequately tested.
3. Dependent on Skills and Experience
The effectiveness of AD-hoc testing heavily depends on the tester's skills and experience; less experienced individuals might not detect critical bugs.
4. Difficult to Track and Manage
Due to the lack of specific procedures or documentation, tracking and managing the testing process can be challenging.
5. Not Suitable for Complex Systems
For complex systems with many features and functions, AD-hoc testing might not be sufficient to ensure quality.
Comparing AD-hoc Testing With Other Testing Methods
Criteria | AD-hoc Testing | Unit Testing | Integration Testing | System Testing | Acceptance Testing |
---|---|---|---|---|---|
Formality | Informal | Very formal | Formal | Formal | Very formal |
Documentation | Little or none | Detailed | Detailed | Detailed | Detailed |
Process | No specific process | Clear process | Clear process | Clear process | Clear process |
When performed | Anytime | After writing code | After Unit Testing | After Integration Testing | Before release |
Who performs it | Tester or Developer | Developer | Tester or Developer | Tester | End-user or Tester |
Objective | Find bugs quickly | Test each unit of code | Test interaction between modules | Test the entire system | Test according to user requirements |
Coverage | Not guaranteed | High | Medium | Low | Low |
Cost | Low | Low | Medium | High | Very high |
How to Improve the Effectiveness of AD-hoc Testing?
1. Record Testing Steps
Although AD-hoc testing doesn't require detailed documentation, recording the testing steps can help reproduce bugs and better understand what caused them.
2. Use Testing Tools
Testing tools such as screen recording, bug tracking tools, or automation tools can help improve the effectiveness of AD-hoc testing.
3. Combine With Other Testing Methods
AD-hoc testing should be used as a supplementary testing method, combined with other formal testing methods to ensure coverage and quality.
4. Train Testers
Since the effectiveness of AD-hoc testing heavily depends on the tester's skills and experience, training and improving skills for the testing team is very important.
5. Distribute Responsibilities
Distribute testing responsibilities among team members, with each person focusing on a specific part of the system to ensure coverage.
Real-World Examples of AD-hoc Testing
Scenario 1: Testing an E-commerce Web Application
Suppose you're testing a newly developed e-commerce web application. Instead of following a specific testing plan, you might perform AD-hoc testing as follows:
-
Explore the user interface: You freely explore the pages, menus, buttons, and links to see if they work correctly.
-
Try basic features: You try features such as registration, login, product search, adding products to the cart, checkout, etc.
-
Try uncommon situations: You might try situations such as adding a very large quantity of products to the cart, entering invalid values into fields, uploading large files, etc.
-
Record bugs: When you detect a bug, you record how to reproduce it and report it to the development team.
Scenario 2: Testing a Mobile Application
For a mobile application, you might perform AD-hoc testing as follows:
-
Test on different devices: You try the application on devices with different screen sizes, resolutions, and operating systems.
-
Try offline features: You try using the application when there's no internet connection to see if it works correctly.
-
Try complex interactions: You try complex interactions such as swiping, pinch-to-zoom, double tap, etc.
-
Check performance: You try using the application for an extended period to see if it encounters performance issues.
Conclusion
AD-hoc testing is an informal yet highly effective testing method, especially in detecting bugs that structured testing methods might miss. Despite some limitations, when used correctly, AD-hoc testing can be a powerful tool in your testing arsenal.
To maximize the benefits of AD-hoc testing, combine it with other formal testing methods, use testing tools, and invest in training and improving skills for your testing team.
Finally, remember that the ultimate goal of testing is to ensure the software works correctly and meets user needs. AD-hoc testing, along with other testing methods, will help you achieve this goal.
References
- Myers, G. J., Sandler, C., & Badgett, T. (2011). The Art of Software Testing. Wiley.
- Whittaker, J. A. (2009). Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design. Addison-Wesley Professional.
- Kaner, C., Bach, J., & Pettichord, B. (2008). Lessons Learned in Software Testing: A Context-Driven Approach. Wiley.
- ISTQB Glossary of Testing Terms: https://glossary.istqb.org/
- Software Testing Help: https://www.softwaretestinghelp.com/