Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
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:

  1. Before product release: To quickly detect potential bugs before the product is widely released.

  2. After formal testing methods: To supplement structured testing methods and detect bugs these methods might miss.

  3. When time is limited: In cases where testing time is limited, AD-hoc testing can help detect critical bugs quickly.

  4. To better understand the system: AD-hoc testing can help testers gain a deeper understanding of how the system works and its features.

  5. 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:

  1. Explore the user interface: You freely explore the pages, menus, buttons, and links to see if they work correctly.

  2. Try basic features: You try features such as registration, login, product search, adding products to the cart, checkout, etc.

  3. 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.

  4. 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:

  1. Test on different devices: You try the application on devices with different screen sizes, resolutions, and operating systems.

  2. Try offline features: You try using the application when there's no internet connection to see if it works correctly.

  3. Try complex interactions: You try complex interactions such as swiping, pinch-to-zoom, double tap, etc.

  4. 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

  1. Myers, G. J., Sandler, C., & Badgett, T. (2011). The Art of Software Testing. Wiley.
  2. Whittaker, J. A. (2009). Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design. Addison-Wesley Professional.
  3. Kaner, C., Bach, J., & Pettichord, B. (2008). Lessons Learned in Software Testing: A Context-Driven Approach. Wiley.
  4. ISTQB Glossary of Testing Terms: https://glossary.istqb.org/
  5. Software Testing Help: https://www.softwaretestinghelp.com/