Skip to main content

exploratory-testing

Use when a feature feels under-tested, after implementing new functionality, or before a release to discover edge cases, UX issues, and bugs through hands-on exploration

Source facts

Repository
mattwynne/skills
Last source activity
June 13, 2026 at 21:25
Detected SKILL.md language
English
Stars
2
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
exploratory-testing
description
Use when a feature feels under-tested, after implementing new functionality, or before a release to discover edge cases, UX issues, and bugs through hands-on exploration
# Exploratory Testing ## Overview **Exploratory testing discovers what automated tests miss.** The agent acts as a curious, methodical user: running the product in a safe environment, observing behaviour, trying edge cases, and logging findings. Each session is guided by a charter that focuses exploration on a specific area with specific heuristics. ## When to Use - After implementing a new feature or fixing a bug - Before a release, to shake out edge cases - When behaviour feels under-tested - When you want to stress-test error handling, output formatting, state transitions, or UX - Periodically, to discover regressions or papercuts **Don't use when:** - You need deterministic, repeatable test coverage (write automated tests instead) - The area has no working implementation yet ## Phase 1: Charter ### Agree on a Target The user provides, or the agent suggests, a target area to explore. Good targets are specific commands, workflows, screens, APIs, or quality attributes: - "the add item command" - "the checkout flow" - "error messages when uploads fail" - "output formatting across JSON and plain-text modes" - "a full workflow: create, edit, complete, archive" ### Select Heuristics Pick 2-4 heuristics from the menu below that suit the target: | Heuristic | Application | |-----------|-------------| | **CRUD** | Create, read, update, delete through a full lifecycle | | **Zero, One, Many** | Empty state, single item, many items, deep nesting | | **Boundary Values** | Long names, special characters, spaces, empty strings, unicode, maximum sizes | | **Never and Always** | Invariants that should never or always hold | | **Follow the Data** | Create -> list -> modify -> list -> verify consistency | | **Some, None, All** | Filters or selections with matching, non-matching, and all items | | **Starve** | Missing files, missing config, no network, no permissions, unavailable dependencies | | **Interrupt** | Broken pipes, partial input, cancellation, refresh, retry, Ctrl-C | | **Configuration Tour** | Options, flags, environment variables, preferences, feature toggles | | **Claims Tour** | Does help text, documentation, or UI copy match actual behaviour? | | **Sequence Variation** | Unusual command or workflow orders | | **User Tour** | Common real-world workflows end-to-end | ### Write the Charter Format the charter using Elisabeth Hendrickson's template: > **Explore** [target area] > **With** [selected heuristics] > **To Discover** [risks or information we seek] Example: > **Explore** the add item command > **With** Boundary Values, Zero/One/Many, Claims Tour > **To Discover** how it handles edge-case input and whether `--help` accurately describes its behaviour ### Approval Gate Present the charter to the user. **Do not proceed until the user confirms the charter.** The user may adjust the target, heuristics, or risk focus. ## Phase 2: Exploration ### Set Up a Safe Environment Create an isolated environment so exploration never damages real user or production data. Depending on the project, this might be: - a temporary directory; - a test database; - a local sandbox account; - a disposable fixture file; - a development server with fake credentials; - a branch or worktree created for exploration. State clearly how the sandbox is isolated before you begin. ### Seed the Environment Before exploring, create enough data to work with. Adapt seeding to the charter: if exploring hierarchy, create nested data; if exploring empty state, start with no data; if exploring limits, create boundary-sized inputs. ### Explore Systematically Work through each chartered heuristic. For each probe: 1. **State what you're testing**: the heuristic and specific probe. 2. **Run the command, API call, UI action, or workflow step.** 3. **Record the result** in your session log. Keep a running session log in this format: ```markdown ### [Heuristic Name] **Probe:** [what you're trying] **Action:** [command, API call, or UI steps] **Expected:** [what you thought would happen] **Actual:** [what actually happened] **Verdict:** OK | BUG | UX-ISSUE | INCONSISTENCY | UNEXPECTED | QUESTION **Notes:** [any additional observations] ``` ### Exploration Guidelines - Stay within the charter scope. If you discover something interesting outside scope, note it for a future session. - Vary inputs. Don't just test happy paths. - Pay attention to output, copy, layout, state changes, persistence, and recovery. - Check exit codes or HTTP status codes when relevant. - Try composition where relevant: piping CLI output, refreshing pages, retrying calls, or switching formats. - Time-box yourself. 15-30 minutes of exploration per charter is usually enough. ## Phase 3: Report ### Present Findings After exploration, present a structured report to the user. #### Summary One-line summary: how many probes, how many findings, and the overall impression. #### Findings by Category Group findings into these categories, skipping empty ones: | Category | Description | |----------|-------------| | **Bugs** | Incorrect behaviour, crashes, wrong state, wrong exit/status codes | | **UX Issues** | Confusing output, unclear errors, surprising defaults | | **Inconsistencies** | Behaviour differs between similar commands, screens, or cases | | **Missing Error Handling** | No error where one is expected, or unhelpful messages | | **Unexpected Behaviour** | Works, but not how a user would expect | | **Worked Well** | Things that behaved exactly right or had good UX | For each finding, include: - the action that triggered it; - what happened vs what was expected; - severity estimate: low / medium / high; - evidence: output, screenshot description, logs, or file paths when available. #### Suggested Follow-Ups Concrete next steps: - bugs or improvement tasks to create; - automated tests to write for discovered edge cases; - documentation to update if claims are misleading; - areas worth a dedicated exploratory testing session. ### Clean Up Remove temporary data, shut down test services, or tell the user what remains and why. ## Quick Reference | Phase | What Happens | Gate | |-------|-------------|------| | Charter | Agree target, select heuristics, write charter | User approves charter | | Exploration | Sandbox setup, systematic probing, session log | None — explore autonomously | | Report | Categorised findings, follow-ups, cleanup | User reviews findings | ## Common Mistakes | Mistake | Fix | |---------|-----| | Exploring without a charter | Always agree on target and heuristics first | | Only testing happy paths | Heuristics exist to push beyond the obvious | | Logging only failures | Record successes too — they confirm expected behaviour | | Exploring everything at once | Pick 2-4 heuristics per session, stay focused | | Skipping status checks | Check exit codes, HTTP status, persisted state, or logs when relevant | | Not seeding enough data | Adapt seed data to what the charter needs | ## Sources - Elisabeth Hendrickson: *Explore It!* - James Bach: Session-Based Test Management - Michael Bolton: "Testing vs. Checking"
View on GitHub