Files
magnus919_agent-skills/qa-methodology/references/exploratory-testing.md
T
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ff69b0982f feat(qa-methodology): add 3 new traditional QA references
Add risk-based-testing.md (P×I formula, 5×5 matrix, workshop guidance,
risk register, reassessment triggers, cost-of-failure, estimation
heuristic), exploratory-testing.md (SBTM, charter format, T/B/B metrics,
SFDIPOT, HICCUPPS, tours, bug advocacy), and test-design-techniques.md
(EP, BVA 2/3-value, decision tables, state transition, pairwise/PICT,
error guessing, when-to-use-which table with heuristic level-mapping).

Mutual cross-links with test-strategy.md; consistent P0–P3 priority
tiers. All 12 traditional refs now meet cumulative bars: worked examples,
citations, gotcha warnings, link resolution, composition links, and
accessibility+web-accessibility coverage.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 17:48:37 -04:00

173 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Exploratory Testing
Structured discovery testing through concurrent learning, design, and execution. Load when designing charters for new or changed features, investigating areas with unknown risk, or establishing session-based test management. Not for scripted regression suites (that's [regression-testing.md](./regression-testing.md)) or test design technique selection (that's [test-design-techniques.md](./test-design-techniques.md)).
## When to Explore
| Signal | Rationale |
|--------|-----------|
| New feature with incomplete or evolving requirements | Scripted tests can't be written yet; exploration discovers what to automate |
| Post-incident investigation | Reproduce conditions, find adjacent failure modes |
| Integration of a new third-party dependency | Unknown edge cases, error behaviors not in docs |
| Low test coverage in a high-risk area | Discover what's missing before designing automated tests |
| User-reported "it just feels wrong" | No repro steps; exploration builds a repro |
| Before a major release (time-boxed session) | Catch issues that scripted tests structurally miss |
> **Rule:** Exploration is not "random clicking." It is disciplined, time-boxed, charter-driven investigation with structured reporting.
## Session-Based Test Management (SBTM)
SBTM (Bach & Bach, 2000) provides accountability for exploratory work without destroying its creative advantage.
### Core Structure
| Element | Definition |
|---------|-----------|
| **Charter** | Mission statement defining the session's scope and goal |
| **Timebox** | Fixed duration (typically 60120 minutes) with no interruptions |
| **Debrief** | Structured review of findings, metrics, and follow-up actions |
### T/B/B Metrics
Track time allocation per session:
| Metric | Definition | Target |
|--------|-----------|--------|
| **T** (Test time) | Time actively testing (designing + executing) | ≥ 70% of session |
| **B** (Bug investigation) | Time investigating issues found during the session | 1025% |
| **B** (Setup/Interruption) | Time lost to environment issues, questions, context switches | ≤ 10% |
A session with T < 60% indicates environmental problems or scope confusion; fix the blocker before scheduling more sessions.
## Charter Format
```
Explore <target> with <resources/constraints> to discover <information>.
```
### Examples
| Charter | Analysis |
|---------|----------|
| Explore the new search autocomplete with slow network and unicode input to discover rendering and latency edge cases | Target: search autocomplete; Resources: throttled network, unicode; Goal: rendering/latency issues |
| Explore payment refund flow with expired cards and partial amounts to discover error handling gaps | Target: refund flow; Resources: expired test cards; Goal: error handling |
| Explore admin bulk-user-import with CSV files > 10MB to discover timeout and memory behavior | Target: bulk import; Resources: large CSV; Goal: timeout/memory |
### Charter Quality Checklist
- Contains a specific target (not "the app")
- Names resources or constraints (test data, tools, conditions)
- States what information you seek (not "find bugs" — too vague)
- Scope fits within the timebox (one session, one charter)
## Heuristics and Oracles
Oracles tell you when something might be wrong. Heuristics guide where to look. Neither is a checklist; they are thinking tools.
### SFDIPOT (Test Coverage Heuristic)
| Letter | Stands For | Question to Ask |
|--------|-----------|-----------------|
| **S** | Structure | What is this made of? (components, files, APIs) |
| **F** | Function | What does it do? (features, behaviors) |
| **D** | Data | What does it process? (inputs, outputs, formats) |
| **I** | Interfaces | What does it connect to? (APIs, UIs, protocols) |
| **P** | Platform | What does it run on? (OS, browser, hardware) |
| **O** | Operations | Who uses it and how? (workflows, personas) |
| **T** | Time | What happens over time? (concurrency, timeouts, aging) |
### HICCUPPS (Oracle Heuristic)
Sources of expectation when you lack a spec:
| Source | Question |
|--------|----------|
| **H**istory | What did previous versions do? |
| **I**mage | What would a comparable product do? (competitors, category norms) |
| **C**omparable | What do similar features in this product do? |
| **C**laims | What does documentation, marketing, or support say? |
| **U**sers' expectations | What would a reasonable user expect? |
| **P**roduct purpose | Does this serve the product's stated mission? |
| **P**urpose (feature) | Does this serve the feature's stated goal? |
| **S**tandards | Do relevant standards (WCAG, RFC, API conventions) apply? |
### Tours (Exploration Patterns)
| Tour | Approach | Best For |
|------|----------|----------|
| **Guidebook tour** | Follow documented flows (user guide, API docs) | Verifying documentation accuracy |
| **Money tour** | Test the revenue-critical paths (checkout, billing) | Business-critical smoke |
| **Landmark tour** | Visit every major feature surface once | Broad coverage sweep |
| **Garbage collectors tour** | Try every error path (invalid input, cancel, timeout) | Error handling |
| **Bad-neighborhood tour** | Focus on historically buggy areas | Regression-prone zones |
| **Museum tour** | Test legacy/backward-compatible paths | Upgrade safety |
| **Back-alley tour** | Try unadvertised features (admin panels, debug endpoints) | Security, hidden behavior |
| **Obsessive-compulsive tour** | Repeat one action many times (submit, refresh) | Concurrency, rate limits |
## Bug Advocacy
Finding a bug is half the work; getting it fixed is the other half.
### Report Quality
| Element | Requirement |
|---------|-------------|
| Title | One line: what broke + where |
| Repro steps | Numbered, deterministic, minimal |
| Expected vs Actual | State both explicitly |
| Evidence | Screenshot, log excerpt, or recording |
| Impact statement | Who is affected, how often, severity |
| Environment | Exact versions, config, browser/device |
### Advocacy Principles
- **Reproduce before reporting.** A bug you can't reproduce is a hypothesis, not a bug.
- **Isolate the minimal repro.** 15 steps with 12 irrelevant ones gets triaged slower than 3 steps.
- **Separate observation from interpretation.** "Button returns 500" is observation; "the backend is broken" is interpretation.
- **Escalate unresolved P0/P1 bugs** with evidence, not emotion. Link to user impact data.
## Session Debrief Structure
After each session (510 minutes):
1. **What did you test?** (areas covered, charters fulfilled)
2. **What did you find?** (bugs filed, risks identified, questions raised)
3. **What is left untested?** (scope not reached, new areas discovered)
4. **Metrics:** T/B/B percentages
5. **Follow-up:** New charters needed? Automation candidates? Blockers?
Record in a session sheet. Aggregate across sessions to build a coverage picture for unscripted areas.
## Exploration → Automation Pipeline
| Session Finding | Next Step |
|----------------|-----------|
| Reproducible bug | Write regression test, file bug (see [regression-testing.md](./regression-testing.md)) |
| Repeated manual check | Automate as a scripted test |
| New risk area discovered | Add to risk register (see [risk-based-testing.md](./risk-based-testing.md)) |
| Spec gap identified | File clarification request; add AC |
| Performance concern | Schedule load test (see [performance-testing.md](./performance-testing.md)) |
## Gotchas
> **Gotcha — Exploration without accountability:** Unlogged "testing" that produces no session sheets, no bugs, and no coverage data is indistinguishable from not testing. SBTM's value is the debrief, not the timebox.
> **Gotcha — Using exploration to avoid automation:** If the same manual checks recur session after session, automate them. Exploration is for discovery; automation is for repetition.
> **Gotcha — Vague charters:** "Explore the app" produces random clicking. Every charter must name a target, resources, and information goal.
## Exit Condition
You are done applying this reference when: (1) charters are written in the "Explore X with Y to discover Z" format, (2) sessions are time-boxed with T/B/B tracking, (3) debriefs produce actionable follow-ups, and (4) repeatable findings are graduated to automation or the risk register.
## Composition Links
- Risk-based prioritization for charter selection: [risk-based-testing.md](./risk-based-testing.md)
- Regression test graduation: [regression-testing.md](./regression-testing.md)
- Test design techniques for structured scenarios: [test-design-techniques.md](./test-design-techniques.md)
- Verification methodology (evidence and verdicts): [verification-methodology](../../verification-methodology/SKILL.md)
---
*Sources: James Bach & Jon Bach, "Session-Based Test Management" (2000, bach.ch/sbtm), Cem Kaner et al. "Lessons Learned in Software Testing" (Wiley, 2002), Elisabeth Hendrickson "Explore It!" (Pragmatic Bookshelf, 2013), Michael Bolton (HICCUPPS oracle heuristics), James Bach (SFDIPOT coverage heuristic).*