Exploratory Testing Questions
A disciplined, human-driven testing technique in which the tester simultaneously learns the product, designs test ideas, and executes them without a predefined script, and how it differs from scripted or automated test execution. Covers using heuristics to generate test ideas on the fly, session-based test management (writing a test charter with a mission and scope, time-boxing a session, prioritizing sessions by risk, and running a debrief), documenting findings and evidence captured during a session, and reporting session metrics and artifacts to stakeholders. Also covers judging when exploratory investigation will surface risks that a scripted or automated suite would miss. Distinct from designing and writing predefined manual test cases and from deciding when manual testing is worth doing versus automating, which are covered by other topics.
Write a 60-minute exploratory test charter for the new checkout flow in a web app. The charter should include a mission statement, scope, specific areas to explore (payments, coupons, order summary), test data to use, risks to focus on, success/failure criteria, and a logging approach for notes and findings.
Sample Answer
Direct answer
A charter is a short brief that gives a time-boxed exploratory session a mission, a scope, and a definition of done, without dictating exact steps, since dictating steps would turn it back into a script. Below is a complete 60-minute charter for the new checkout flow, covering payments, coupons, and order summary, with the mission, scope, target areas, test data, prioritized risks, success and failure criteria, and a logging approach for the session.
Structured elaboration
A charter earns its name by staying at the level of what to investigate and why, not click here, then here. Two properties separate a good charter from a bad one: the mission answers why this session exists in one sentence, and the scope states both what is IN (so the tester has a clear target) and what is explicitly OUT (so the tester does not silently expand a 60-minute session into an audit of the entire application). A common shape for the 60 minutes is roughly five to ten minutes of setup (accounts, test data, confirming the environment is in the expected starting state), the bulk of the time actually exploring, and the last several minutes writing up notes into a short session report rather than trusting memory after the fact.
Worked example
Mission: Determine whether a shopper can complete checkout with an accurate final charge across normal and adversarial payment and coupon combinations, and surface anything that would cause an incorrect charge, a stuck order, or a confusing dead end.
Scope:
- In: the flow from a populated cart through payment entry, coupon application, the order summary, and the confirmation page.
- Out: anything before the cart (product search, browsing), backend settlement or reconciliation beyond what is visible to the shopper, and load or performance testing.
Areas to explore:
- Payments: a valid card, a card that gets declined mid-submit, a saved or stored payment method, and what happens if the network drops right after the shopper clicks Pay.
- Coupons: applying a valid coupon, applying an expired one, applying two coupons where only one should be allowed, and removing a coupon after it has already changed the displayed total.
- Order summary: whether the displayed total (items, tax, shipping, discount) actually equals what gets charged, and whether that stays consistent if the shopper edits quantity after a coupon is already applied.
Test data: one card that always succeeds and one that always declines (using the payment provider's designated sandbox test numbers, never a real card), one coupon that is valid and unexpired, one that is expired, one that has a minimum-order-amount requirement, and at least one address that requires tax calculation to differ from an address that does not.
Risks to focus on, ranked: (1) the shopper is charged a different amount than the order summary displayed, (2) the shopper is charged twice for one order, for example a retry after a slow response actually double-submits, (3) a coupon miscalculates the discount rather than being simply rejected, (4) the flow leaves the shopper in an ambiguous state after an interruption, unclear whether it charged or not.
Success and failure criteria: the session is a success if every scenario above either completes with a charge that exactly matches the displayed order summary, or fails cleanly with a clear message and no charge; it is a failure signal, something to log as a bug rather than a session failure, if any scenario produces a charge that does not match the summary, a duplicate charge, or a state where the shopper cannot tell whether they were charged.
Logging approach: a running note, timestamped, one row per scenario tried: the scenario, the exact steps and test data used, the expected outcome, the actual outcome, and a tag (bug, note, or question). Anything tagged bug gets a screenshot of the order summary and, where visible, any payment confirmation or error reference.
Trade-offs and pitfalls
- Over-specifying the charter defeats its purpose. A charter that lists exact click-by-click steps for every scenario is a script wearing a charter's name; it removes the room for the tester to notice something unplanned and follow it, which is the entire value of the technique.
- Under-specifying it wastes the session. A charter that just says "test checkout" gives no risk focus and no scope boundary, so a 60-minute session is as likely to spend most of its time on font rendering as on the double-charge risk that actually matters.
- Test data realism matters. Using an obviously fake card or a coupon that could never occur in production risks missing the exact validation logic that would run on realistic input; sandbox test values from the real payment provider, not hand-typed fake numbers, exercise the real validation path.
- Common mistake: no environment reset between scenarios. If a coupon or cart state from one scenario leaks into the next, a bug in the second scenario becomes hard to attribute; each scenario should start from a known, stated starting state, an empty cart, a fresh test account, and that reset should be explicit in the session notes, not assumed.
Explain how session-based exploratory testing (SBTM) works and propose a set of metrics, artifacts, and reporting practices to measure and communicate coverage and outcomes from manual SBTM sessions to stakeholders.
Sample Answer
Direct answer
Session-Based Test Management (SBTM) turns exploratory testing into something a manager can track: instead of one continuous, unbounded activity, the work is broken into individually chartered, time-boxed sessions, each producing a short report. Aggregate enough of those reports and real numbers emerge: how much of the planned scope got covered, how many issues were found and how severe they were, and where the team is still exposed. Reporting to stakeholders means translating those numbers, plus the qualitative texture in the session notes, into a plain-language statement of what was covered, what was found, and what risk remains uncovered, without overstating exploratory testing's inherent approximation as if it were exhaustive proof.
Structured elaboration
How SBTM works
Each session starts from a charter, a short mission and scope statement, and runs for a fixed window, commonly on the order of an hour, though shorter or longer sessions suit reconnaissance or deep-dive work respectively. During the session the tester logs actions, observations, and issues in real time. At the end, the tester, often together with a lead or peer, reviews what happened: what was actually covered against what the charter intended, what was found, what got in the way, and what is left to explore. That review is what turns a pile of individual notes into an artifact comparable across sessions and across testers.
Metrics
- Coverage, sessions completed versus sessions planned, broken down by charter or risk area. This is a proxy for how much of the map has been walked, not a guarantee that every corner of a covered area was tested; two sessions against the same charter can still find different things.
- Yield, issues found per session, and its severity breakdown. Useful as a trend indicator (is this area consistently rougher than others) but dangerous as a target in itself, since rewarding raw issue count invites nitpicking low-value findings to inflate the number.
- On-charter time versus deviation time. SBTM explicitly permits a tester to follow an interesting lead outside the stated charter; tracking how much session time went to the charter versus a worthwhile deviation keeps that flexibility visible rather than invisible, and a consistently high deviation rate is itself a signal the charter was mis-scoped.
- Time-to-triage. How long an issue sits between being logged during a session and being reviewed or actioned; a growing backlog here means the reporting loop is not keeping pace with the exploration.
Artifacts
- The session report, one per session: charter, tester, duration, areas actually covered, issues found with links to the tracked bug, and a short narrative of what happened.
- A coverage map, a table showing which planned charters or risk areas have at least one completed session against them, and which do not.
- A rolled-up dashboard aggregating the metrics above across a sprint or release window, so a reader does not have to open every individual session report to see the shape of the results.
Reporting practices to stakeholders
The audience for this report is often not technical, so the translation matters as much as the underlying data. Lead with outcomes in plain language (what got covered, what was found, what is still a known gap), back it with the numbers, and be explicit about the difference between no issues found and no issues exist: a covered area with a clean session report means the team looked and did not find a problem in the time spent, not that the area is proven correct. Blurring that distinction is the single most common way an exploratory-testing report misleads a stakeholder used to reading pass or fail counts from an automated suite.
Worked example
Suppose a two-week sprint plans 12 sessions across 4 charters (3 sessions per charter), each time-boxed to 90 minutes. By the end of the sprint, 10 of the 12 planned sessions were completed; 2 sessions on one charter were deferred to next sprint because that area's dependency was not ready.
Coverage: 10/12=83.3% of planned sessions completed.
Of the 10 completed sessions, total time was 10×90=900 minutes. Testers logged 120 of those minutes as deviation time (following a lead outside the charter). On-charter time was therefore 900−120=780 minutes, or 780/900=86.7% of session time spent on the stated mission.
Across the 10 sessions, testers logged 18 issues: 4 High, 9 Medium, 5 Low, which sum to 18. Yield was 18/10=1.8 issues per session, and the high-severity share was 4/18≈22.2%.
A stakeholder-facing summary translating this: "We completed 10 of 12 planned exploratory sessions this sprint (83%); the remaining 2 are carried to next sprint because a dependency was not ready. We found 18 issues, 4 of them high severity, at a rate of roughly 1.8 per session. About 87% of session time stayed on the planned scope; the rest followed up on things testers noticed along the way, which is expected and by design. The 2 deferred sessions mean the team has not yet looked at the deferred charter's area this sprint."
Trade-offs and pitfalls
- The metrics above all carry a gaming risk. Rewarding session COUNT alone invites short, low-effort sessions; rewarding issue count alone invites nitpicking. Track a volume metric alongside a quality signal, such as debrief completion or reproducibility of logged issues, rather than any single number in isolation.
- Coverage is not proof. A completed session against a charter means that charter got attention for its time box, not that every possible defect in that area was found; communicating coverage as a pass or fail gate borrows automated-testing language that does not actually apply here.
- Explain-to-non-expert calibration. A stakeholder used to seeing hundreds of automated tests pass will misread "10 sessions completed, 18 issues found" unless the report explicitly states what a session and an issue represent; a good report spends a sentence on that translation rather than assuming it is obvious.
- Aggregating too early hides the interesting part. A single sprint-level number can bury that one specific charter, the one with 2 deferred sessions, is the actual risk; break the rollup down by charter or area, not just a single top-line figure.
Describe exploratory testing: what it is, how it differs from scripted/manual test execution, when it is most valuable, how to document findings during a session, and provide one useful exploratory heuristic you might use for a new feature.
Sample Answer
Direct answer
Exploratory testing is a technique where one person simultaneously learns the product, designs test ideas, and executes them, using what each action reveals to decide the next one, rather than following a script written in advance. It differs from scripted manual execution in the timing of test design: scripted execution separates "decide what to test" (done ahead of time, checked off during a run) from "run the test," while exploratory testing collapses those into one continuous loop. It earns its keep most on features with thin or shifting requirements, on high-risk or high-uncertainty areas, and as a complement to a regression suite rather than a substitute for one, since it is built to surface the states nobody thought to script.
Structured elaboration
What exploratory testing actually is
Three things happen at once, not in sequence: the tester is learning the product (what does this screen do, what state is it in), designing the next test idea (what would be interesting to try given what was just learned), and executing it. The output of one step feeds the input of the next; a tester following a written case cannot let what they just observed change what they test two minutes later without leaving the script, while an exploratory tester is expected to.
How it differs from scripted execution
It helps to separate two independent axes that get collapsed into one "manual vs automated" conversation: WHO executes it (human vs machine) and WHEN the test ideas are decided (in advance vs in the moment). Scripted manual testing is human-executed but ahead-of-time-designed. Exploratory testing is human-executed and in-the-moment-designed. Automated testing is machine-executed, almost always ahead-of-time-designed (the assertions are written before the run). The distinction that matters here is the second axis, not the first: exploratory testing is defined by when the test idea is chosen, not by the fact that a human is doing the clicking.
| Property | Scripted execution | Exploratory testing |
|---|---|---|
| Test ideas decided | Before the run, written down | During the run, informed by what is found |
| Repeatability | High, same steps every time | Lower by default, mitigated by session notes |
| Documentation timing | Written before execution | Written during and after, from real-time notes |
| Best suited to | Regression, compliance evidence, known requirements | New or uncertain features, unanticipated interactions |
| Coverage shape | Wide but shallow on what was anticipated | Narrower but can go arbitrarily deep on what surprises the tester |
When it is most valuable
- A feature is new enough, or its requirements thin enough, that nobody could have written a complete script for it yet.
- The risk lives in interactions between features rather than in a single documented path, which a pre-written script tends to miss because nobody anticipated the combination.
- Time is short and a full scripted suite cannot be written and executed in the window available, so a skilled tester's judgment substitutes for exhaustive up-front planning.
- It runs ALONGSIDE, not instead of, a scripted or automated regression suite: automation keeps a known-good state known-good over time; exploratory testing finds the states nobody yet knows to check for.
Documenting findings during a session
Notes are captured live, not reconstructed afterward from memory, because memory of exactly what happened three steps before an error appeared degrades fast. A minimal real-time log records, per notable moment: a timestamp, the action taken, what was expected, what was actually observed, and a tag classifying the moment as a bug (reproducible, violates expected behavior), a note (worth flagging but not itself a defect, such as a risk area worth exploring further), or a question (unclear whether the behavior is intended, needs a follow-up rather than a guess). Anything tagged as a bug gets enough detail on the spot, exact steps, environment, a screenshot or two, that nobody has to reconstruct it later from a vague memory.
Worked example
Take a newly shipped "save item for later" button on a shopping cart page, a feature with no written test cases yet. A useful heuristic here is the follow-the-data heuristic: pick one meaningful piece of data (the saved item) and trace it through every place the system remembers or displays it, rather than testing the button in isolation.
Applying it: save an item from the cart (does it disappear from the cart and appear in a "saved" list). Refresh the page (does it survive a reload, or was it only held in memory). Log out and back in (does it survive a session boundary, or was it tied to the browser session rather than the account). View the saved list on a different device logged into the same account (does the data live server-side, as a user would assume, or was it silently device-local). Move the item back to the cart, then check the saved list again (did it actually leave the saved list, or does it now show in both places, an inconsistency a script testing only "click save, see confirmation" would never surface).
A short slice of the real-time log for this session:
| Time | Action | Expected | Observed | Tag |
|---|---|---|---|---|
| 0:02 | Save item, refresh page | Item still in saved list | Item still there | (passed, no entry needed) |
| 0:06 | Log out, log back in | Saved list persists | Saved list is empty | Bug |
| 0:11 | Move item back to cart | Item leaves saved list | Item appears in both cart and saved list | Bug |
| 0:14 | Check saved list on second device | Same account, same saved list | Unclear if sync is meant to be live | Question |
Following the data across four different contexts, reload, account boundary, device boundary, and a round trip back to the cart, found two real defects and one open question in about fourteen minutes, none of which a single "click save, assert a confirmation toast appears" script would have touched, since that script only exercises the button once and never checks what happens to the data it created afterward.
Trade-offs and pitfalls
- It is not a replacement for scripted or automated regression. Exploratory sessions do not repeat identically the way a script does, so they are a poor tool for proving a previously fixed bug has not come back on every release; that is what automation is good at, and the two should be paired, not chosen between.
- Quality varies with the tester. Two testers exploring the same feature can find very different things, since the technique leans on domain knowledge, product familiarity, and a mental library of heuristics; this variance is a real cost, one reason session notes and debriefs (structured after-session reviews) exist, to make the reasoning visible rather than trapped in one person's head.
- Common mistake: treating "manual" and "exploratory" as synonyms. A tester manually clicking through a written script is doing manual testing that is NOT exploratory, since the test ideas were fixed in advance. The distinguishing property is in-the-moment test design, not the absence of automation.
- Common mistake: an unfocused session that wanders without producing a clear signal. Exploratory testing benefits from light structure (a stated goal, a rough time box) even though it has no fixed script; without that, it is easy to spend an hour clicking around and come away with nothing anyone else can act on.
Create a focused list of exploratory testing heuristics tailored for a high-risk fintech payment flow. Include heuristics for security, fraud scenarios, regulatory and compliance checks, UX edge-cases, and data-integrity checks. Also explain how you'd prioritize exploratory sessions and capture findings so they are audit-ready.
Sample Answer
Direct answer
Five categories, five concrete heuristics each grounded in what actually goes wrong in a payment flow: security (probe the boundaries of authentication and input trust), fraud (simulate the patterns real fraud rings actually use), regulatory and compliance (check that sensitive data and required disclosures are handled the way the rules require), UX (user experience) edge cases (interrupt and retry the flow the way a real, imperfect user will), and data integrity (follow a transaction's value across every place it is recorded and confirm they agree). Sessions should be prioritized by likely financial and legal exposure first, and every finding captured with enough evidence, using only designated sandbox test data, to survive being read by an auditor months later.
Structured elaboration
Security
- Boundary and injection heuristic on payment fields. Try a negative amount, a zero amount, an amount far larger than any real purchase, and script or SQL-injection-style strings in free-text fields like the billing name, to confirm the server rejects or sanitizes rather than trusting client input.
- Session and token heuristic. Let an auth token expire mid-transaction and confirm the flow fails safely (no charge, a clear re-authentication prompt) rather than completing on a stale session; separately, resubmit a completed payment's exact request a second time (a replay) and confirm it is rejected rather than double-charging.
- Client-tamper heuristic. Using a proxy or the browser's own developer tools, alter the amount or currency value sent from the client before it reaches the server, and confirm the server independently recalculates and validates rather than trusting the number the client sent.
Fraud
- Velocity heuristic. Attempt several rapid payment submissions from the same card, account, or IP address in a short window, and confirm rate-limiting or a fraud flag actually triggers rather than silently allowing all of them.
- Card-testing pattern. Attempt many small-amount transactions across several different card numbers from the same session, a known pattern fraudsters use to validate stolen card numbers; confirm the system detects the pattern rather than treating each attempt as an independent, unrelated transaction.
- Identity-mismatch heuristic. Submit a payment where the billing address, the card's issuing country, and the shipping destination all disagree, and confirm this raises the flow's fraud signal rather than passing silently.
Regulatory and compliance
- Data-exposure heuristic. Confirm the full card number and CVV (card verification value, the short security code on a payment card) never appear unmasked in application logs, network responses visible to the browser, or browser storage after submission; sensitive fields should be masked or tokenized, never stored or echoed back in the clear.
- Consent and disclosure heuristic. Confirm required legal disclosures (terms of sale, refund policy) are actually shown, and that their acceptance is recorded, before a payment is allowed to complete, not just present somewhere on the page.
- Regional-variation heuristic. If the product supports multiple regions, run the identical flow using a persona from a different region and confirm any region-specific requirement, for example an additional authentication step some regions mandate, is actually implemented for that region rather than silently falling back to the default flow.
UX edge cases
- Interruption and recovery heuristic. Close the browser tab or drop the network connection partway through payment submission, then reopen or reconnect; confirm the shopper is not left double-charged or in a state where neither they nor support can tell if the payment went through.
- Back-button and double-submit heuristic. After a successful payment, use the browser's back button and resubmit; confirm this does not create a second charge for the same order.
- Locale-consistency heuristic. Switch the displayed locale or currency mid-session and confirm the amount ultimately charged matches what was actually displayed to the shopper at the moment they confirmed, not a stale or mismatched figure.
Data integrity
- Follow-the-value heuristic. Trace one transaction's amount and status from the moment of submission through the internal ledger, the order record, and the confirmation email or receipt, and confirm all three agree exactly, including after a full or partial refund.
- Concurrency heuristic. Fire two near-simultaneous payment attempts that both try to redeem the same discount code with a fixed usage limit, and confirm the limit is enforced correctly rather than allowing both to succeed in a race.
- Reconciliation heuristic. Confirm a payment that fails or times out never leaves a charge recorded in the ledger without a matching order, and never leaves an order recorded without a matching successful charge.
Prioritizing sessions
Rank by exposure, not by ease of testing: security and regulatory findings carry direct legal and financial consequence (a data-exposure bug or a missed disclosure can trigger a compliance violation regardless of how rare the path is), so they get first claim on session time; fraud heuristics come next, since undetected fraud is a direct financial loss; data-integrity issues that could cause a wrong charge sit alongside fraud in priority; UX interruption edge cases, while genuinely important, are scheduled after the higher-exposure categories specifically because their worst case, a confused shopper, a support ticket, is typically recoverable in a way an unmasked card number or an unenforced discount race condition is not.
Capturing findings so they are audit-ready
An audit-ready finding includes exact reproduction steps, a timestamp, the exact environment and build or version tested, the specific sandbox test account or card identifier used, never a real card or real customer data, a link to any relevant log or transaction ID, and, where the finding touches a specific regulatory concern, an explicit tag naming which requirement it relates to so it can be routed to a compliance reviewer rather than sitting in a general bug queue. Evidence (screenshots, response logs) should be captured into a system the tester cannot quietly edit afterward, since an auditor reviewing the finding months later needs the original record, not a possibly touched-up version.
Worked example
A concrete session applying three heuristics from different categories to the same checkout flow, in priority order. First, the client-tamper heuristic (security): intercept the payment request and change the submitted amount from $50.00 to $0.50 before it reaches the server. Expected: the server recalculates the amount from the actual cart contents and rejects the mismatched client value. Observed in this walkthrough: the server does recalculate, correctly charging $50.00 regardless of the tampered request, a passing result worth recording as evidence the control works, not just as nothing to report.
Second, the concurrency heuristic (data integrity) against a coupon with a stated limit of one redemption per account, fired as two near-simultaneous requests. Expected: exactly one succeeds and the second is rejected as already redeemed. If instead both succeeded, that is a real finding, tagged Bug, severity High because it directly costs the business money at scale, with both response payloads and their timestamps captured as evidence.
Third, the interruption heuristic (UX), dropping the network connection immediately after clicking pay on a successful path. Expected: the shopper sees a clear payment-status-unknown, do-not-resubmit state and support has a way to look up the true outcome. If instead the shopper sees nothing and resubmits, creating a second charge, that is tagged Bug, severity High, with the two duplicate transaction IDs recorded as the evidence an auditor or support engineer would need to reconcile the account.
Trade-offs and pitfalls
- Never use real card numbers or real customer PII (personally identifiable information) while exploring these heuristics, even ones that should be safe; use the payment provider's designated sandbox test values exclusively, both for basic safety and because production data in a bug report becomes its own compliance problem.
- Common mistake: treating fraud and security heuristics as interchangeable. A security bug is a flaw in the system's own defenses, an unvalidated amount, an exposed token. A fraud pattern is a normal-looking sequence of otherwise-valid actions that adds up to abuse, many small charges across many cards. Testing only for broken validation misses the fraud patterns that require no broken validation at all to succeed.
- Concurrency bugs are easy to miss with sequential manual testing. A single tester clicking redeem twice in a row, one after the other, will not reproduce a true race condition; it needs genuinely simultaneous requests, which may require a scripted trigger even inside an otherwise manual, exploratory session, an example of exploratory testing and light tooling working together rather than being opposites.
- Audit-readiness has an ongoing cost. Capturing full evidence bundles for every finding, not just the ones that turn out to matter, takes real session time away from further exploration; the discipline is worth it specifically because a compliance-relevant finding that cannot be reproduced or evidenced later is close to worthless to an auditor, but it is a genuine trade-off against raw coverage, not a free addition.
That is every published Exploratory Testing question for QA Engineer so far. Browse the other topics in this category, or practice this one interactively.