Skip to content
Figure 1A day of session-based exploratory testing: charters, sessions and debriefs
A day of session-based exploratory testing: charters, sessions and debriefsCharter A: payment retriesCharter B: currency roundingCharter C: timeout0 min60 min120 min180 min240 min90 minute sessions, 15 minute debriefs, one charter per session, notes kept in the session sheet
Three charters in one day: 90 minute sessions, 15 minute debriefs, one charter per session, and a session sheet for each.

Exploratory testing: how to write charters and run sessions

Exploratory testing is simultaneous learning, test design and execution: you decide the next test based on what the last one showed you. Done without structure it is hard to defend to a manager. Done with charters, timeboxed sessions and debriefs, it is the most productive hour a tester spends, and it produces numbers.

Quick answer

To run exploratory testing that management can trust: write a charter in the form explore a target, with resources, to discover information; run it in a 60 to 120 minute uninterrupted session; keep notes of what you tested, found and could not do; debrief with a peer for 15 minutes; and track sessions, coverage and bugs per session.

Key figures

Session length
60 to 120 minutes; 90 is typical
Debrief
10 to 15 minutes
Charter template
explore X with Y to discover Z
Sessions per tester per day
3 to 4
Bugs per session (healthy range)
0.5 to 3
Notes time (setup, test, bug) target
10 / 70 / 20 percent

What exploratory testing is, and what it is not

Exploratory testing is not random clicking, and it is not what you do when there is no time to write test cases. It is a disciplined approach in which the tester designs the next test using what the previous test revealed, with the design, execution and learning happening in the same sitting. Scripted testing separates those activities across days or people. The exploratory approach keeps them in one head, which is why it finds the defects scripts miss: the ones that live in the interaction between features, in odd data, and in the assumptions nobody wrote down. It complements, and does not replace, the automated checks in your automation strategy.

James Bach and Jonathan Bach gave the approach a management shape around 2000 with session-based test management: timeboxed sessions, each with a charter, each producing a report, each debriefed. Elisabeth Hendrickson's Explore It! gave the charter a template and a large catalog of heuristics. Between them, they made exploratory work accountable without making it scripted.

How to run session-based exploratory testing

  1. Write the charter

    Use the template: explore a target, with resources, to discover information. Target is an area or feature. Resources are the tools, data, personas or conditions you will use. Information is the kind of problem you are looking for. One charter fits on one line; if it needs a paragraph, split it. Write 6 to 10 charters per feature before you start so the day has a shape.

  2. Set up the session

    Book 60 to 120 minutes with no meetings, no chat, no other tickets. Prepare the environment, test data and any observation tools before the clock starts, and note how long setup took. Open a session sheet with the charter, your name, the build number and the start time at the top.

  3. Test and take notes as you go

    Follow the charter, but let what you find redirect you within it. Write short timestamped notes: what you tried, what happened, what you expected. Mark bugs, questions and issues with a distinct symbol so they can be pulled out later. When you leave the charter to chase something interesting, note it; if it is a big enough detour it becomes a new charter.

  4. Close the session at the timebox

    Stop when the time is up, even if you are mid-flow. Fill in the session summary: roughly what percentage of the time went to setup, to testing, and to bug investigation; how much of the charter you covered; what you would do with another hour. Log defects properly, with steps, from your notes.

  5. Debrief with a peer for 15 minutes

    A lead or another tester reads the sheet and asks: what did you test, what did you find, what got in your way, what is left, and how do you feel about this area. Debriefs catch weak charters, share knowledge across the team, and are where new charters come from.

  6. Update the charter list and the coverage view

    Mark the charter done, partly done or blocked. Add the new charters the session produced. Keep a simple grid of feature areas against charters run so anyone can see where the team has and has not looked.

  7. Roll up the numbers weekly

    Count sessions run, charters completed, bugs found per session and the time split. Report them alongside the automated results. Two weeks of data is enough to see whether an area is drying up or still yielding defects.

Writing charters: the template and five examples

A good charter is specific enough to know when you are done and loose enough to follow a lead. Weak charters are either too vague (test the checkout) or a test case in disguise (verify that the coupon field rejects expired codes). The examples below follow the explore-with-to-discover template.

Five charters using the explore-with-to-discover template. Each fits one 90 minute session.
ExploreWithTo discover
the checkout discount rulesorders at 99.99, 100.00, 100.01 and combinations of coupon and loyalty statusrounding errors, stacking mistakes and cases where the cap is ignored
the password reset flowtwo browsers, an expired link and a user with two accounts on one emailstate problems, token reuse and messages that leak whether an account exists
the CSV importfiles with 0, 1, 10,000 and 1,000,001 rows, mixed encodings and a row of only commaslimits, encoding failures and error messages a user could not act on
the mobile order screena slow network profile, airplane mode toggled mid-request and the app backgroundedduplicate submissions, lost orders and stale totals
the admin permissions modela newly demoted user, a deleted role and two tabs open as different usersactions that remain possible after rights are removed

Session notes: what to capture

The session sheet is the evidence. Keep it short and structured so it can be read in the debrief in under five minutes. A working structure: charter and build at the top; tester and start time; a running log of tests and observations with timestamps; bugs marked with a symbol and a one-line summary each; issues (things that blocked or slowed you, such as a missing test account); questions for the product owner; and a closing summary with the time split, coverage estimate and suggested next charters. Percentages for setup, testing and bug investigation are estimates, and that is fine; the pattern across sessions is what matters. A healthy session spends about 10 percent on setup, 70 percent testing and 20 percent investigating bugs. When bug investigation climbs past 40 percent for several sessions, the build is not ready for exploration and you should say so.

Debrief questions

Five questions cover it: What did you test? What did you find? What got in your way? What is still untested in this charter? How confident are you in this area now, on a scale you would defend to a manager? Fifteen minutes, one sheet, no slides.

Heuristics: tours and SFDPOT

Charters tell you where to look; heuristics tell you how. Tours, from James Whittaker's work, are ways to walk through a product with a purpose. The money tour follows the features customers pay for. The landmark tour jumps between the main screens and checks the transitions. The garbage collector tour visits every corner methodically. The back alley tour uses the features nobody uses. The intellectual tour asks the hardest question the product could be asked. Pick one per session and name it in the charter.

SFDPOT is James Bach's checklist of product dimensions, and it works as a prompt when a session goes quiet. In plain words: Structure is what the product is made of (files, components, services). Function is what it does, including the error handling and the administrative features. Data is everything it reads, writes and remembers, including the odd values. Platform is what it depends on: operating systems, browsers, devices, networks, third-party services. Operations is how real people actually use it, including the ways the designers did not intend. Time is every clock: time zones, timeouts, sequences, concurrency and what happens after a year of data. Run down the list and ask, for each letter, what have I not tried.

Metrics and reporting to management

Exploratory testing earns trust when it produces numbers that mean something. Report four: sessions run this week (throughput), charters completed against charters planned (coverage), bugs found per session (yield), and the time split (health of the build). A yield that falls from 3 bugs per session to 0.5 over three weeks, with coverage rising, is evidence the area is stabilizing. A yield that stays high is evidence it is not, however green the pipeline looks. Present the coverage grid next to the code and requirement coverage figures, and be explicit that they measure different things. For the vocabulary, the glossary defines charter, session and debrief in one line each.

Keep the story simple for people outside the team: here is where we looked, here is what we found, here is where we have not looked yet and why. Managers do not need the session sheets. They need to know that the sheets exist and that someone reads them.

A note on provenance: the address this guide now occupies once served a PDF article on exploratory testing hosted by the original magazine site. That article is no longer available here; what follows is a current, independent explanation of the practice rather than a reproduction of it.

Common questions

How long should an exploratory testing session be?

Sixty to 120 minutes, with 90 as the usual default. Shorter than 60 and setup eats the session; longer than 120 and attention drops and notes get thin. Three or four sessions a day is a full day for one tester, once debriefs and defect logging are added.

Is exploratory testing the same as ad hoc testing?

No. Ad hoc testing has no charter, no timebox, no notes and no debrief. Exploratory testing has all four. The testing activity may look similar from the outside; the accountability is completely different.

Can exploratory testing be automated?

The exploration cannot, because its value is human judgment about what to try next. The setup can, and so can the checks you discover: when a session finds a boundary that matters, add an automated check for it so the next session can look elsewhere.

How do I estimate exploratory testing for a sprint?

Count the charters. Write the charters for the stories in refinement, allow one session per charter plus 15 minutes for the debrief, and add 20 percent for the charters the sessions will generate. Eight charters is roughly two tester-days.

What should a charter not contain?

Expected results and step lists. A charter names an area, the resources and the kind of information sought. If you can already write the expected result, you are describing a test case, which belongs in the automated suite, not in a session.

How do I report exploratory testing when there are no test cases to count?

Report sessions, charter coverage and bugs per session. Show the coverage grid of areas against charters. Those three numbers and one grid tell a manager more than a count of passed test cases does.

Who should run the debrief?

A test lead, or a peer tester when there is no lead. The debriefer's job is to ask the five questions and listen, not to grade the tester. Rotating the role across the team spreads product knowledge quickly.

Sources

  1. Jonathan Bach, Session-Based Test Management
  2. Elisabeth Hendrickson, Explore It! (The Pragmatic Bookshelf)
  3. ISTQB Glossary of software testing terms

Further reading named in the text

  • James Bach, Heuristic Test Strategy Model (Satisfice, 1996 onward)
  • James A. Whittaker, Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design (Addison-Wesley, 2009)
  • Cem Kaner, James Bach and Bret Pettichord, Lessons Learned in Software Testing (Wiley, 2001)

This guide is part of the agile testing hub. It is best read alongside role of tester in agile teams and acceptance test driven development, which cover the neighbouring questions.