QA

Exploratory testing and session-based testing

There is a common misconception: that exploratory testing is "clicking around aimlessly". It's the opposite. Exploratory testing is an approach where design, execution and learning happen at the same time — each result you observe guides the next step. It's discipline, not chaos. And it is precisely the kind of testing that automation can't do: using your head in real time.

Scripted vs exploratory

In scripted testing, someone designs the cases up front and someone else executes them later — thinking and acting are separated in time. In exploratory testing, they are simultaneous:

  SCRIPTED:     think  →  write case  →  (later)  →  execute
                (the test only does what was anticipated)

  EXPLORATORY:  think + execute + learn   (in a loop, at the same time)
                   ▲                    │
                   └──── what I observed guides the next step ────┘

The two are complementary. Scripted testing (and automation) guarantees repeatable coverage of the expected; exploratory testing finds the unexpected — the bug nobody imagined when writing the cases.

Automation verifies what you already know how to ask. Exploratory testing discovers the questions you haven't asked yet.

The problem: how do you manage something so free?

If exploratory testing has no script, how do you plan, measure and report? The answer is Session-Based Test Management (SBTM), created by James and Jonathan Bach. It provides structure without killing freedom, through three ideas:

  • Charter (mission statement): a short sentence that defines the session's focus — what to explore and to what end. E.g.: "Explore file upload focusing on invalid formats and sizes."
  • Time-boxed session: an uninterrupted, timed block (typically 60–90 min) dedicated to one charter.
  • Notes and debrief: a record of what was tested, bugs, questions and ideas — followed by a quick conversation with the team.

This makes exploratory testing reportable: you can say "I ran 3 sessions on checkout, found 2 bugs and 4 business-rule questions" — a concrete metric for a creative activity.

Heuristics: what guides the investigation

Exploratory testing isn't random because the tester uses heuristics — mental shortcuts that point to where defects usually are. Two widely used ones:

SFDPOT (James Bach) — "tour" the product by dimensions:
  Structure   what the product IS (files, code, hardware)
  Function    what it DOES (features, calculations, error handling)
  Data        what it PROCESSES (inputs, outputs, large/empty data)
  Platform    what it DEPENDS ON (OS, browser, dependencies)
  Operations  how it is USED (usage profiles, environments)
  Time        how TIME affects it (timeouts, time zones, concurrency)
RCRCRC (regression) — where to look when time is short:
  Recent      what changed recently
  Core        the product's essential functions
  Risk        the highest-risk areas
  Configuration  configuration-sensitive items
  Repaired    what was fixed recently
  Chronic     what keeps breaking

Heuristics turn "testing for the sake of it" into "testing with hypotheses" — you attack the system from angles where experience says bugs hide.

Where this fits in the strategy

In the Agile Testing quadrants, exploratory testing is the heart of Q3 (tests that critique the product from the business perspective). It doesn't replace the automation at the base of the pyramid — it combines with it: automation covers repetitive regression and frees the human's time for the investigation that only a human does well.

Conclusion

Exploratory testing is critical thinking applied in real time, and session-based testing is what makes it manageable and reportable. Mastering charters, time-boxed sessions and heuristics like SFDPOT and RCRCRC is what distinguishes the QA who "tests the screen" from the one who investigates the product — and it's where the bugs no script predicted show up.

Read also

Back to the blog