Most teams already do exploratory testing. They just do not call it that, and they do not do it well.

A developer asks a tester to "just take a look" at a feature before it ships. The tester pokes around, finds something odd, files a bug, and moves on. That is exploratory testing in its roughest form. The problem is not the activity. It is the lack of intention, structure, and record.

Exploratory testing, done well, is something else entirely.

The tourist and the traveller

The difference between scripted and exploratory testing is easier to understand than to define. Think about two people visiting the same city for the first time.

The tourist follows the itinerary. They know where they are going, visit the landmarks on the list, follow the guide, and return with photos of the places they came to see. The trip is planned, predictable, and repeatable. That is the point.

The traveller has a destination, but not a fixed route. They pay attention to what they find along the way. A side street looks interesting. A local recommends a restaurant that was never on the list. They take a wrong turn, learn something from it, and come home with a story they did not expect.

Both visited the same city. One confirmed what they already knew to look for. The other discovered something new.

Scripted testing is the tourist. The tester follows a defined path, verifies expected behavior, and records what passes or fails. That work has real value. Some things need to be checked reliably, every time.

Exploratory testing is the traveller. The tester starts with a purpose and a direction, but what they learn shapes where they go next. They observe, question, adapt, and follow interesting clues.

They are not just executing a test. They are using the test to learn.

Checking vs. exploring

Put simply, testing involves both checking and exploring.

Checking answers a specific question: Does the software meet the expected criteria? Take a login form. Can a user log in with valid credentials? You define the steps, run them, and get a result: pass or fail. It is scripted, repeatable, and focused on what we already know to check.

Exploring asks a different question: What could go wrong? With the same login form, you might ask: What happens with special characters in the password? Can a user stay logged in across multiple tabs? What happens to the forgot-password flow on a small screen with a slow connection?

These questions may not be in the requirements. You discover them by observing the system, asking questions, and following what you learn.

Checking confirms what we expect. Exploring helps us discover what we don't. Good testing needs both.

The definition that matters

Exploratory Testing

Simultaneous learning, test design, and test execution.

James Bach

The important word is simultaneous.

In scripted testing, test design and execution happen separately. Someone defines the test cases first, and someone later follows those steps to verify the expected result. The tester mainly executes what has already been decided.

In exploratory testing, those activities happen together. You learn about the system while testing it, use what you discover to shape your next test, and adapt your approach in real time.

What you learn changes what you test next. That's what makes exploratory testing different from simply executing a test plan.

What it is not

Exploratory testing is not random or unstructured testing.

It is not:

  • Clicking around hoping to find bugs
  • Testing without a purpose
  • Trying to break things until something fails
  • Skipping planning altogether

From the outside, ad hoc testing and exploratory testing can look similar because neither follows a fixed step-by-step script. The difference is how the tester thinks and works.

A skilled exploratory tester brings:

  • A model of how the system works
  • An understanding of the domain and users
  • Heuristics for generating test ideas
  • An awareness of where risks may exist
  • The discipline to track what has been explored and what has not

Without these, freedom can quickly become randomness.

As Cem Kaner described it, exploratory testing gives the tester the freedom and responsibility to make decisions that improve the quality of their testing.

The two go together. Freedom gives you room to explore. Responsibility gives that exploration purpose.

The skills involved

Exploratory testing is a thinking skill. The same product can produce very different testing results depending on the knowledge, experience, and attention of the person exploring it.

The skills that matter most are:

Domain knowledge Understanding what the product does, who uses it, and what matters to them.

Technical knowledge Understanding how the system works, what it connects to, and where technical boundaries and failure points may exist.

Heuristics Using useful prompts and patterns to generate test ideas, uncover edge cases, and explore potential risks.

Modelling Building a mental picture of the system and updating it as you learn more.

Attention Noticing things that seem unusual, inconsistent, or slightly wrong, even when they do not immediately look like bugs.

These skills improve through practice, observation, and feedback. The rest of this series explores the practices that help develop them.