Exploratory testing

Exploratory testing is a manual testing approach in which the tester designs, executes and learns from tests at the same time, using what the last action revealed to decide the next one, instead of following a script written in advance. It is aimed by a charter, a sentence naming the area and the kind of risk to look for, and it produces notes as well as bug reports.

The longer version

A session starts with a charter: explore the checkout with expired cards, or explore the address form for what happens to characters nobody expected. The tester then works the product, forming a small hypothesis at each step and testing it immediately. A field that accepts an apostrophe raises the question of what it does with a quote. A page that survives a refresh raises the question of what it does with the back button. The tester keeps a running record of what was tried, what was seen and what questions opened up, and files a bug report for each confirmed defect as it is found.

Exploratory testing is often confused with ad hoc testing, and the difference is intent and record. Ad hoc testing has no charter and no notes; it is unplanned poking. Exploratory testing has a charter and leaves notes, which is what makes its coverage reportable; the formal method of time-boxed sessions, session reports and debriefs built on top of it is session-based testing. Against scripted testing the contrast runs the other way: a script fixes the steps before anyone touches the product, so it finds the defects the author imagined; exploration finds the ones nobody imagined, at the cost of not proving that any particular path was covered.

The bug count is the wrong output. A session that found nothing is still a result if the notes show what was covered, and a session that found six bugs and left no notes cannot be reviewed or extended. The second failure is the report of a defect found mid-exploration, which the tester writes from memory after the fact and which loses the exact sequence, the console error and the request that failed. Capturing the evidence at the moment of the finding, rather than reconstructing it afterwards, is what separates a useful exploratory session from a story about one.

Common questions

What is the difference between exploratory testing and ad hoc testing?

Exploratory testing is guided by a charter and recorded in notes, and in its session-based form bounded by a time box, which makes its coverage reportable. Ad hoc testing has none of those: it is unplanned, unrecorded interaction with the product. Both rely on the tester's judgement, but only one leaves a trace of what was tried.

Is exploratory testing the same as manual testing?

Exploratory testing is one kind of manual testing. Manual testing also includes scripted execution, where a tester follows written test cases step by step. The distinction is who decides the next step: in scripted testing the author decided beforehand; in exploratory testing the tester decides during the session, based on what the product just did.

When should exploratory testing be used?

Whenever the scripted tests have run and the team wants to know what they missed: before a release, on a new feature whose failure modes nobody has enumerated, after a bug report that suggests an untested area. It is also the fastest way to assess a build the team has no scripts for yet.

What is a charter in exploratory testing?

A charter is the one-sentence mission for a session: the area to explore, the kind of information to look for, and sometimes the resources to use. Explore the password reset with expired tokens, looking for ways to reach an account, is a charter. The charter aims the session without scripting it, and at the end the notes are read against it to say what was covered and what was left.

Who does exploratory testing?

Testers with enough product and domain knowledge to form a hypothesis at each step, because the technique is only as good as the questions the tester asks. Developers do it on their own features before handing over, product managers do it on a new flow, and in a bug bash the whole team does it at once. A tester new to the product still learns from a session, but their charters should be narrow and their notes reviewed.

Bug reports that arrive ready to triage.

Collect replay, console, network and browser context with the Free plan.

<script src="…/widget.js" data-key="pb_pub_…">