Today’s topic is exploratory testing. In a nutshell, exploratory testing is manual, unscripted testing. Some might argue that this type of software testing is at odds with our customary push towards test automation, but we beg to differ.
As you’ll soon see, rather than conflicting with automated testing, manual exploratory testing can complement it, resulting in a well-rounded QA strategy.
By the end of the post, you’ll have learned what exploratory testing means in detail and what its benefits are, besides understanding its role in an overall quality strategy. Additionally, you’ll be able to determine if exploratory testing is the right approach for your team right now. You’ll also know more about performing this type of testing, including how to circumvent some of its main pitfalls.
Starting With the Fundamentals
As promised, we’ll start with some basics on our subject matter. Let’s start by discussing in more detail exactly what we mean when we say “exploratory testing.”
What Is Meant by Exploratory Testing?
Exploratory testing is a form of software testing in which the actual test cases the tester will perform aren’t defined beforehand. Instead, the person or group performing the testing decides what they will do while performing the tests. So, exploratory testing is the exact opposite of having a formal, structured testing plan, which details each step belonging to the test case, along with the expected result.
This approach to testing relies heavily on the creativity, experience, and knowledge of the tester. The tester performing exploratory testing must have strong self-learning skills. Also, they have to make decisions at every moment, like defining what they should test next and how to prioritize and allocate the limited amount of time they have.
Why Do We Do It?
Doesn’t this kind of improvisational testing go against the push for automation and efficiency—the dominant view in the industry in recent times? What are the motivations behind exploratory testing, after all?
The main motivation behind exploratory testing is to find defects that the other, more formal, types of testing might have missed. Exploratory testing is unstructured by design. While doing it, testers might stumble upon weird edge cases and bugs they wouldn’t find otherwise.
And to answer the question we’ve posed at the beginning of this section: no, manual exploratory testing isn’t at odds with test automation—quite the contrary. Exploratory testing, if done it right, might act as a bridge to automation. It might serve as a discovery phase to figure out the test cases that are worth automating.
What Techniques Are Used?
Just because exploratory testing doesn’t follow a predefined plan doesn’t mean it’s chaotic or random. To continue in the spirit of the musical analogy we’ve used earlier, musical improvisation isn’t just playing whatever. Quite the opposite, in fact. High-level improvising requires tremendous knowledge of harmony, scales, and other subjects. It’s also vital to be comfortable with the language of the genre in which you’re improvising.
The same is true for exploratory testing. Not only does it require you to know about software testing in general, but you also have to be well-versed in the domain of the system under test.
And how is exploratory testing actually done? Which techniques are used? It actually does vary a lot, depending on the amount of structure that you actually employ. Things can range from totally impromptu exploratory testing, sometimes called freestyle exploratory testing, to more structured approaches, such as session-based testing.
Regardless of the variation, you must generate at least some documentation after the testing sessions. That can range from a simple list of the defects found to very detailed notes on how the testers conducted the test cases. The QA team can employ techniques such as pair testing to improve the efficacy of the testing sessions.
Benefits and Pitfalls
There’s no silver bullet in software development. Every process, technique, or tool has its share of flaws, and exploratory testing isn’t an exception. Here are some of the most important benefits of exploratory testing:
- There’s less preparation required. Since exploratory testing doesn’t require predefined test plans, less preparation is required, meaning you can start testing earlier.
- It fills the gaps left by automated testing. Not everything is automatable. Often, manual exploratory testing can go where automated testing can’t.
- It detects edge-case defects and unexpected behaviors. Scripted testing tends to focus on the happy path, while exploratory testing isn’t bound to any particular approach.
- It helps testers, and QA professionals know a given system. Exploratory testing helps newcomers to a team get to know a given application, for instance.
- It can be a precursor to automated testing. While performing exploratory testing, testers might discover test cases that are good candidates for automation.
Make no mistake: exploratory testing is no bed of roses. What follows are some of the main pitfalls of this testing approach:
- There’s poor traceability. Exploratory testing doesn’t make it easy for QA people to record what they did in an exploratory testing session. This poor traceability might lead to waste, among other things (e.g., same test cases being performed more times than necessary by different people).
- Oftentimes, reproducing a bug is hard. The lack of traceability in exploratory testing might make it hard for QA professionals to reproduce a defect they found due to not remembering the exact steps.
- It requires experienced/knowledgeable testers and QA professionals. Testing without a predefined plan might require highly experienced professionals with domain knowledge related to the application under test.
When to Use and Not to Use Exploratory Testing
Exploratory testing isn’t necessarily applicable to every scenario. Rather, it’s an approach that might suit certain teams and scenarios while not being particularly recommended for others. And that’s A-OK. But if you want to make an educated decision on whether exploratory testing is for you, you’ve got to be able to determine which of those scenarios you’re currently in.
It’s for You If…
- You don’t have time to structure test plans, like when you’re in an early iteration.
- You must learn the ins and outs of an application quickly to provide feedback.
- You want to improve test coverage by discovering more test scenarios for test automation.
- You are worried about missing edge cases.
It Might Not Be for You If…
- Your field is highly regulated, and your testing process needs to comply with legislation and regulations.
- You need to perform acceptance testing according to well-defined specifications.
- The system under test doesn’t have a UI—for instance, you’re testing a REST API.
Life With Exploratory Testing Is Good…But It Can Be Better!
As regular readers know, here on the Testim blog, we’re firm believers in automated testing. So, at first, it might seem weird for us to cover a topic exploring—let alone endorsing—a type of testing that is mostly manual. It doesn’t contradict automated testing. In fact, it might even help it!
Unfortunately, as you’ve also seen, exploratory testing also has its share of disadvantages. Among them, the most relevant ones are those related to a lack of traceability. It’s often hard for testers to record the steps they’ve taken during an exploratory testing session. That can make it hard to reproduce bugs or and you might waste due to test cases being duplicated unnecessarily.