Exploratory Testing
Learn to explore an app like a professional tester, with charters, time-boxed sessions, heuristics and tours, good notes and a clear debrief, then run a real session on a buggy parking app.
It’s Thursday morning. A new build of ParkEasy, a street-parking app, has just landed on TestFlight. Your lead writes: “The new payment flow goes to the stores on Monday. The test cases all pass, but I don’t trust it yet. Can you spend 90 minutes exploring it and debrief me at 4?”
No script. No list of steps. Just you, the app and 90 minutes. Some testers love this moment, others freeze. This lesson gives you a method, so you’ll be in the first group.
What exploratory testing is
exploratory testingExploratory testingLearning, designing and running tests at the same time, guided by curiosity and a goal.Open in glossary → means learning about the app, designing tests and running them at the same time. Each thing you try teaches you something, and what you learn decides what you try next.
It’s not random clicking. Random clicking has no goal, no notes and nothing to report. Exploration has a mission (a charterTest charterThe goal and scope of an exploratory testing session, written before it starts.Open in glossary →), a time limit and a debrief.
The essentials
Exploratory vs ad-hoc vs scripted
Exploratory
“For 60 minutes, explore checkout with boundary amounts and double taps to discover how payments can go wrong.” Notes taken, findings reported.
Random clicking
“I tapped around for a while. Looks fine.” No goal, no notes, no idea what was covered.
Charters: your mission in one sentence
A popular formula:
Explore <target> with <resources> to discover <information>.
For example: Explore the parking payment flow with boundary durations and repeated taps to discover how ParkEasy handles money.
A session in three steps
- Charter and time box. Pick one charter and a fixed time, often 60 to 90 minutes.
- Explore and take notes. Write down what you tested, bugs, questions and ideas, with rough times.
- Debrief. Tell your lead what you covered, what you found, what blocked you and what’s left.
Heuristics: ideas for what to try
- Goldilocks: too small, too big, just right (0, 1, the maximum, more than the maximum, very long text).
- Interruptions: a call, lock screen, rotation, switching apps.
- Back button tour: press Back on every screen, especially after something is saved or paid.
- Empty states: open every screen before you have any data.
- Money tour: follow the features people pay for, and tap the important buttons twice.
What to note
| Note | Example |
|---|---|
| What you tested | “Duration stepper, all values 0 to 4 h” |
| Bugs | “Double tap on Pay charged €3.00 twice” |
| Questions | “Is 4 h the max in every zone?” |
| Ideas | “Next session: no network during payment” |
Switch to Detailed for session-based test management, more tours, pairing, how exploratory fits with scripted tests, and how to report your session.
What it is and what it isn’t
Every tester explores a little. The difference is whether you do it deliberately. Here’s how three common ways of testing compare:
| Scripted testing | Exploratory testing | Ad-hoc testingAd hoc testingInformal testing with no plan or documentation, trying things to see what breaks.Open in glossary → | |
|---|---|---|---|
| Plan | Written test casesTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary → | A charter and a time box | None |
| Design | Before running | While running | Not really |
| Notes | Pass/fail per case | Coverage, bugs, questions, ideas | Rarely |
| Best at | Repeatable checks, known rules | Finding the unknown | A quick look |
When exploratory testing shines
- New features before anyone has written test cases, like the brand-new ParkEasy payment flow.
- Unclear or missing requirements, when you learn the product by using it (see Testing Without Documentation).
- Risky areas like payments, sign-in and data that users can lose.
- After a big change, to find side effects that the regressionRegression testingRe-running tests to check that new changes didn't break things that used to work.Open in glossary → cases don’t look for.
- When the test cases all pass but something still feels off. Scripts only find what someone thought of in advance.
It’s less suitable as your only approach for rules that must be re-checked identically on every release (like “an account locks after 5 failed sign-ins”), for compliance evidence, or for things a machine checks better (thousands of users at once).
Charters
A test charterTest charterThe goal and scope of an exploratory testing session, written before it starts.Open in glossary → is the mission for one session. It keeps you focused without telling you every step. The most widely used template comes from Elisabeth Hendrickson’s book Explore It!:
Explore <target> with <resources> to discover <information>.
| Part | Question | Example |
|---|---|---|
| Target | Where will you explore? | the parking payment flow |
| Resources | With what tools, data, conditions or heuristics? | boundary durations and repeated taps |
| Information | What do you want to learn? | how ParkEasy handles money |
Focused charter
Explore order tracking with airplane mode and a slow 3G connection to discover how status updates recover after losing signal.
Too broad, too vague
Explore the app with a phone to discover bugs.
A good charter is big enough for a whole session and small enough to finish. If you’re done in 10 minutes, it was too narrow. If you’d need a week, split it. Try building a few:
Charter builder
Combine the three parts and see how strong your charter is.
Explore the checkout tip selector with a slow 3G connection and airplane mode to discover how the status updates recover after losing signal.
- Target: A clear, small area you can cover well in one session.
- Resources: Concrete conditions that change behavior. They tell you what to vary.
- Information: Specific information the team needs.
Strong charter: focused, with a clear way to explore and a clear goal.
Session-based test management
Exploration is easy to start and hard to account for. “I tested for three days” tells your lead nothing. Session-based test management (SBTM), created by Jonathan and James Bach, fixes that by cutting exploration into measurable chunks.
- One charter per session. You can note other ideas, but you don’t chase them now. They become future charters.
- A time box. Sessions are uninterrupted, typically 60 to 120 minutes, with 90 a popular default. Turn off chat. Short sessions (around 45 minutes) are fine for small charters.
- A session sheet. Charter, tester, start time, duration, the areas covered, bugs, issues (things that blocked or slowed you) and notes.
- A rough time split. Roughly how much time went into actually testing, investigating bugs and setting up (installing builds, creating test data). If setup takes 70%, that’s a problem worth raising.
- A debrief. A short conversation with your lead, right after the session, while it’s fresh.
The debrief: PROOF
A classic debrief checklist from SBTM is PROOF:
| Letter | Ask yourself | ParkEasy example |
|---|---|---|
| Past | What happened during the session? | Explored payment with all durations and repeated taps |
| Results | What did I find? | 3 bugs: €0 parking, double charge on double tap, Back after paying shows Pay again |
| Obstacles | What got in the way? | Wallet ran empty, needed a reset |
| Outlook | What still needs doing? | Payment with no network; zones with a 2-hour maximum |
| Feelings | How do I feel about this area? | Nervous about payments; would not ship Monday as is |
“Feelings” may sound soft, but a tester’s gut feeling about risk is real information. Say it, and back it with what you saw.
Heuristics and tours
A heuristic is a rule of thumb: a quick way to come up with ideas that are often useful but not guaranteed. Experienced testers carry dozens in their head. Here are the ones beginners get the most out of.
SFDIPOT: a map of what to look at
Part of James Bach’s Heuristic Test Strategy Model, often remembered as “San Francisco Depot”. Each letter is a different angle on the same app:
| Letter | Look at | ParkEasy idea |
|---|---|---|
| Structure | What it’s made of | App, wallet service, map, push notifications |
| Function | What it does | Start, extend and stop parking |
| Data | What it processes | Zone codes, plates, durations, money |
| Interfaces | How it connects | Payment API, the OS share sheet, other apps |
| Platform | What it depends on | iOS and Android versions, location services |
| Operations | How people really use it | In the rain, one-handed, in a hurry |
| Time | When things happen | Session expires at midnight, time zonesTime zoneThe local time of a region. Bugs appear when apps mix up the user's time zone with the server's.Open in glossary →, slow networks |
Quick heuristics and tours
A tour is a themed walk through the app, popularised by James Whittaker. Each one gives your session a theme:
You don’t need all of them in one session. Pick two or three that match your charter. Experienced testers combine heuristics with error guessingError guessingChoosing tests based on experience of typical mistakes developers make.Open in glossary →: “This kind of feature usually breaks here.”
Taking notes
Notes turn an exploration into evidence. Keep them short, timestamped and in four buckets:
- Tested: what you covered and how (“Duration: 0, 15, 60, 240, tapped + at 240”).
- Bugs: what went wrong, enough to reproduce later.
- Questions: things you’re unsure are bugs (“Should Back after paying go to Sessions?”).
- Ideas: things to try in a future session (“Payment with no network”).
SESSION: ParkEasy payment, 90 min, Thu 10:00
CHARTER: Explore the parking payment flow with boundary durations and
repeated taps to discover how ParkEasy handles money.
10:04 TESTED Duration stepper: 15 min up to 4 h, + disabled at 4 h. OK.
10:09 BUG - goes down to 0 min, Continue works, "Pay €0.00" accepted.
10:15 QUESTION Is 4 h the maximum in every zone, or does it depend on the sign?
10:21 BUG Double tap on Pay: wallet −€6.00, two identical sessions.
10:33 IDEA Next session: pay in airplane mode, kill app during "Paying…".
10:40 TESTED Back from Confirm returns to the form, values kept. OK.
10:41 BUG Back after "You're parked" shows Pay again. Paid twice.Pairing
Exploring in pairs often finds more than two people alone. One person drives (uses the device), the other navigates (watches, takes notes, suggests “now try rotating”). Swap every 20 minutes or so.
- Tester + tester: great for learning heuristics from each other.
- Tester + developer: the developer sees how real users break things and often knows exactly where the weak spots are.
- Tester + product owner or designer: quick answers to “Is this a bug or intended?”
How exploratory fits with scripted testing
They’re partners, not rivals. Scripted tests protect what you already know; exploration discovers what you don’t.
- Explore a new feature to learn it and find the first bugs.
- Turn the important findings into test cases (for example “Pay is disabled while paying”) and add them to the regression suite.
- Run the scripted cases on every release, by hand or automated.
- Keep exploring around changes and risky areas, because the scripts will never cover everything.
Many teams run their scripted checks first (a quick smoke testSmoke testingA quick check of the most important features to decide if a build is stable enough to test further.Open in glossary → to make sure the build is alive) and spend the rest of the time on charters.
Reporting what you found
Your lead doesn’t want a diary. They want to decide something. A good session report answers:
- What did you cover, and what didn’t you? (Coverage is as important as bugs.)
- What did you find? Bugs with links to their reports, sorted by importance.
- What questions need answers? Who should answer them?
- What’s your recommendation? “I’d ship” or “I wouldn’t ship Monday, because…”
- What’s next? Follow-up charters for the gaps.
Useful debrief
“Covered the full payment flow and all durations. 3 bugs, two of them charge customers twice (BUG-412, BUG-413). Didn’t cover offline payment yet. I’d hold the release until 412 and 413 are fixed, and I’d like one more session on offline payment.”
Diary
“I tested ParkEasy all morning. Found some stuff. Seems mostly OK.”
Common mistakes
Practice: your first exploratory session
Time to explore for real. ParkEasy has six hidden bugs that the happy path never shows. Pick a charter, start the 10-minute time box, use the app and the device buttons (System back, Rotate) and write notes as you go. When you end the session, the debrief shows which bugs you triggered, which you missed, and generates your session report.
Exploratory session: ParkEasy
A street-parking app with 6 hidden bugs. Pick a charter, explore, take notes, debrief.
Park
€25.00The code is on the parking sign.
Vehicle
Duration
1 h 00 min
Until 10:41
Max 4 h · €0.75 per 15 min
Pick a charter and press Start to unlock the app.
1. Pick your charter
2. You get a 10-minute time box. Real sessions usually run 60 to 120 minutes; this one is a short practice round. Use the device buttons under the phone too.
Before you start a session
Exploratory session checklist
0 of 10 checked
Check your understanding
Quick quiz
0/6 answered · 0 correct
1.What best describes exploratory testing?
2.Which charter is the strongest?
3.You're exploring payments and notice the profile photo upload looks broken. What should you do?
4.The Goldilocks heuristic means trying values that are…
5.What does the debrief after a session mainly give your lead?
6.How do exploratory and scripted testing relate?
Key takeaways
- Exploratory testing is learning, designing and running tests at the same time. It’s structured, not random clicking.
- A charter gives each session a mission: Explore target with resources to discover information.
- Sessions are time-boxed (often 60 to 120 minutes), with notes on what you tested, bugs, questions and ideas.
- Heuristics and tours give you ideas: Goldilocks, CRUD, interruptions, back button, money tour, empty states, double tap, long text.
- Debrief right after the session: coverage, findings, obstacles, what’s left and your gut feeling.
- Exploration and scripted tests are partners: turn important findings into regression cases, and keep exploring the risky parts.
Finished this page?Nice work, this page is complete!
Mark it as done to track your progress. It's saved in this browser, no account needed.
Its review cards are now in Bites ⚡