Testland
Browse all skills & agents

heuristic-test-design-coach

Reference catalog of the four canonical heuristic test-design models - Bach's Heuristic Test Strategy Model (HTSM) with SFDPOT product elements, Whittaker's 'How to Break Software' attack patterns, Bolton's FEW HICCUPPS consistency oracles, and the ISO/IEC 25010 quality characteristics - for use when the tester has no user story, no acceptance criteria, and no documentation. Distinct from `test-case-ideation-from-story` (which works from a written story) and from `exploratory-charter-author` (which produces session charters, not case sets). Use as the reference layer that `test-case-from-live-feature` and `exploratory-charter-author` cite when generating coverage from zero documented input.

heuristic-test-design-coach

Overview

The exploratory-testing literature converged on four canonical heuristic test-design models, each cited inline at point of use below. This skill is a pure reference - no execution steps; it is the catalog test-case-from-live-feature and exploratory-charter-author consume to generate coverage when no documented input exists.

When to use

  • A feature is being tested with no story, no AC, no documentation (the dominant real-world starting point per Cem Kaner's 1984 definition of exploratory testing - "simultaneous learning, test design and test execution").
  • A legacy / brownfield codebase has no test coverage and you are onboarding cold.
  • A competitor or reverse-engineered product is under review (security audit, market intel).
  • A spec exists but is so thin that heuristic supplementation is needed alongside it.
  • A team's exploratory charter (per exploratory-charter-author) needs a structured prompt set instead of pure intuition.

Do not use this skill alone to produce a deliverable. It is the input to a downstream authoring skill (test-case-from-live-feature, exploratory-charter-author, manual-test-script-author). The catalog tells you what to look at; the downstream skill turns observations into a matrix or charter.

Model 1 - HTSM / SFDPOT product elements (Bach)

James Bach's Heuristic Test Strategy Model (HTSM v6.3) is the canonical "guideword heuristics" framework. The mnemonic SFDPOT covers the Product Elements dimension - the parts of the system that need coverage. The four HTSM focus areas are: Test Techniques, Project Elements, Product Factors, and Quality Criteria categories.

GuidewordWhat to probe
S - StructureCode, files, modules, services, infrastructure layers, dependencies. What does the product consist of?
F - FunctionEach feature / capability the product offers. What does it do? (UI, API, scheduled jobs, side-effects.)
D - DataInputs, outputs, persistent stores, types, sizes, encodings, lifecycles, ownership. What does it operate on?
P - PlatformOS, browsers, devices, runtimes, third-party libs, network conditions. What does it run on?
O - OperationsHow it's deployed, configured, monitored, upgraded, backed up, recovered. How is it used / operated?
T - TimeSpeed, sequencing, concurrency, time-of-day effects, scheduling, race conditions, expirations. How does it behave over time?

Each guideword expands the search space. SFDPOT applied to "checkout flow" generates: Structure (cart service, payment service, inventory service), Function (add to cart, apply coupon, choose shipping, pay, confirm), Data (cart items, coupon codes, addresses, payment tokens, order IDs), Platform (desktop / mobile, iOS / Android, Stripe / Adyen integrations), Operations (deploy, rollback, monitoring, alerting), Time (cart expiry, coupon expiry, payment timeout, idempotency keys).

Coverage check: a feature passed through SFDPOT that has zero notes under one guideword is a flag - either the guideword is genuinely n/a (rare) or the team has a coverage gap.

Model 2 - Whittaker "How to Break Software" attack patterns

James Whittaker's How to Break Software (cited in the exploratory-testing literature as the canonical attack-pattern catalog) organises adversarial test ideas as attacks - explicit ways the software can fail. The canonical attack categories:

AttackWhat you doTypical bug surface
Input attackFeed inputs outside the documented domain - too long, wrong encoding, malformed format, empty, null, special chars, SQL-keyword stringsValidation gaps, injection, crashes
Output attackForce outputs the system shouldn't produce - overflow buffers, wrong encoding, locale boundaryDisplay bugs, serialisation gaps
Stored-data attackManipulate the persistent store directly (DB row, file, cache) and then exercise the featureState-handling bugs, cache inconsistency
Computation attackForce the system to compute on the boundary (overflow, underflow, divide by zero, max-int, NaN)Arithmetic / type / overflow bugs
User-interface attackClick out-of-order, double-click, navigate away mid-action, browser-back, refresh during submitState-machine bugs, race conditions
Configuration attackRun with non-default config, missing env vars, mis-set flags, third-party API key revokedConfiguration brittleness, fail-open bugs

Apply Whittaker after SFDPOT: SFDPOT enumerates what to cover; Whittaker enumerates how each thing can break.

Model 3 - FEW HICCUPPS consistency oracles (Bolton)

Michael Bolton's FEW HICCUPPS is the canonical oracle heuristic - how do you decide a behavior is wrong when no spec says so? Each letter is a consistency lens:

LetterConsistency with…What you compare
FFamiliarity…problems we've seen before in this product or others - does this behave like a known bug?
EExplainability…a reasonable explanation a user could accept - does the behaviour make sense to articulate?
WWorld…how the world works (physics, math, calendars, currencies) - does it match reality?
HHistory…the product's prior behaviour - did this used to work differently?
IImage…the company / product's image - would a customer find this off-brand?
CComparable products…how competitors / siblings handle it - is the deviation deliberate?
CClaims…what the docs / marketing / sales material promised
UUser expectations…what users would reasonably expect from naming, layout, prior workflows
PProduct (itself)…other parts of the same product - is the behaviour consistent across pages / endpoints / flows?
PPurpose…the feature's stated purpose / intent
SStatutes / standards…laws (GDPR, HIPAA, PCI-DSS, ADA), standards (W3C, RFCs, ISO), regulations

A finding that violates at least one consistency lens is a defensible bug report even without a spec. The lens is the oracle.

Model 4 - ISO/IEC 25010 quality characteristics

The canonical quality-attribute taxonomy from ISO/IEC 25010 (the system / software product quality model, successor to ISO 9126). The eight characteristics define what kinds of quality a feature can have - beyond "does it work":

CharacteristicWhat to probe
Functional suitabilityDoes it do what it's supposed to? Completeness, correctness, appropriateness.
Performance efficiencyTime behaviour, resource utilization, capacity.
CompatibilityCo-existence, interoperability with other products / services.
UsabilityAppropriateness recognisability, learnability, operability, error protection, UI aesthetics, accessibility.
ReliabilityMaturity, availability, fault tolerance, recoverability.
SecurityConfidentiality, integrity, non-repudiation, accountability, authenticity.
MaintainabilityModularity, reusability, analysability, modifiability, testability.
PortabilityAdaptability, installability, replaceability.

The 2023 revision adds Safety and Interaction Capability as additional top-level characteristics (cite by stable ID - ISO/IEC 25010:2023; the canonical ISO page sits behind a Cloudflare challenge). Apply 25010 alongside SFDPOT: SFDPOT enumerates what to cover; 25010 enumerates which kinds of quality to test for. A feature can be functionally correct but fail on performance, security, or usability - and 25010 is the prompt that reminds the tester to check.

How to combine the models

The four models are orthogonal:

ModelAnswers the question…
HTSM / SFDPOTWhat parts of the system do I need to look at?
Whittaker attacksHow can each part fail?
FEW HICCUPPSWhen I see weird behaviour, is it a bug?
ISO 25010What kinds of quality am I testing for?

Workflow: walk SFDPOT to enumerate coverage targets → apply Whittaker attacks to each target → as you find unexpected behaviour, classify with FEW HICCUPPS to write a defensible report → cross-reference 25010 to confirm you didn't miss a quality dimension.

Worked example - "test the new checkout flow, no spec"

Input: "We're shipping a new checkout next week. Test it." That's it.

SFDPOT walk:

  • S - Structure: cart service, payment service, inventory service, idempotency layer. (5 minutes investigating staging deploys.)
  • F - Function: add to cart, edit qty, apply coupon, choose shipping, choose payment method, place order, see confirmation, receive email.
  • D - Data: SKU, qty, price, coupon code, address (with locale variants), card / wallet / bank transfer, order id.
  • P - Platform: desktop Chrome / Safari / Firefox, mobile iOS / Android web, in-app webview (if any), screen reader.
  • O - Operations: deploy / rollback, alerts on payment-service errors, support's ability to see a stuck order.
  • T - Time: cart expiry (15 min default?), coupon expiry, payment-provider timeout (30s typical), idempotency-key TTL.

Whittaker attacks applied to each function:

  • Input attack on coupon: empty, expired, wrong-case, leading whitespace, SQL injection, 256-char string, emoji.
  • Stored-data attack on cart: manually set cart.qty to 99999 in DB, then proceed.
  • UI attack: double-click "place order"; back-button after charge; refresh during payment redirect.
  • Computation attack on price: cart total at the platform's max-amount boundary; currency conversion edge case.
  • Configuration attack: payment provider's test key vs prod key; coupon-service unreachable.

Quality cross-check (ISO 25010):

  • Performance: place-order latency under load; payment-provider timeout handling.
  • Security: PCI-DSS scope; address / card data leakage in logs.
  • Usability: error-message clarity; keyboard-only flow; screen-reader announcements.
  • Reliability: idempotency under network retry; recovery after payment-provider 5xx.

Oracle (FEW HICCUPPS) for ambiguous findings:

  • Cart shows $99.99 - order says $100.00. Statutes/standards: PCI / accounting (deviation between displayed and charged amount). Bug.
  • Place-order button stays clickable while request is in flight. Comparable products: every other site disables. Product purpose: prevents double-charge. Bug.
  • Coupon SUMMER2026 works but summer2026 doesn't. User expectations: case-insensitive coupons are the norm. Probably bug - file with the FEW HICCUPPS evidence and let product decide.

The output is the input to test-case-from-live-feature which turns the SFDPOT + Whittaker walk into a structured test-case matrix.

Anti-patterns

Anti-patternWhy it failsFix
Using SFDPOT as a checklist to tick rather than a prompt to thinkBox-ticking; the model produces lazy coverage.Each guideword should generate observations and follow-up questions, not a done mark.
Citing FEW HICCUPPS without naming which lens firedThe bug report reads "this feels wrong" - undefensible.Always name the lens: "violates Comparable-products consistency: every other site disables this button while the request is in flight."
Treating Whittaker attacks as exhaustiveThe attack list is illustrative, not complete; new attack classes emerge with new tech (LLM prompt injection, supply-chain).Apply the categories as prompts, then keep going.
Using ISO 25010 as the only modelQuality-attribute thinking without product-element thinking misses where the bugs live.Always pair 25010 with SFDPOT.
Heuristic test design without a spec when the team has a specThe spec is the better input; heuristics are the fallback.Use test-case-ideation-from-story first; reach for this skill when no spec exists.
Halting because "we have no docs"The whole point of these models is that you don't need docs to start.Apply the models; flag the documentation gap separately as a process issue.

Limitations

  • Coverage breadth, not depth. The four models surface what to look at; they don't tell you how deep to go on each. Risk-based prioritisation (per risk-matrix and risk-matrix-recommender) is the depth selector.
  • Domain knowledge is still required. Applying SFDPOT to "checkout" without knowing what checkout is produces shallow output. The models are scaffolding for domain reasoning, not a replacement for it.
  • Citation-grade only where canonical. HTSM is Bach; FEW HICCUPPS is Bolton; ISO 25010 is the standard; Whittaker is the book. Other heuristic frameworks exist (Crispin/Gregory's testing quadrants, Heusser's "test ideas") and are also valid - this skill names the four most-cited; the team can extend.
  • No automation. This skill produces prompts; the downstream skills (test-case-from-live-feature, exploratory-charter-author, manual-test-script-author) turn prompts into deliverables.
  • Not a substitute for product / requirements work. Heuristic test design surfaces the coverage gap; the documentation gap is a separate problem the team should escalate.

Hand-off targets

References

  • James Bach - Heuristic Test Strategy Model v6.3 (HTSM): https://www.satisfice.com/download/heuristic-test-strategy-model
  • James Bach blog - heuristics category (SFDPOT, CRUSSPIC STMPL, consistency heuristics): https://www.satisfice.com/blog/archives/category/heuristics
  • Michael Bolton - DevelopSense (FEW HICCUPPS oracle heuristic, exploratory testing methodology): https://developsense.com/
  • ISO/IEC 25010 - system / software product quality model (eight characteristics; 2023 revision adds Safety + Interaction Capability): https://en.wikipedia.org/wiki/ISO/IEC_25010
  • Exploratory testing - Kaner's 1984 definition ("simultaneous learning, test design and test execution"); Whittaker "How to Break Software" attack patterns; session-based test management: https://en.wikipedia.org/wiki/Exploratory_testing
  • ISTQB glossary - exploratory testing: https://glossary.istqb.org/en_US/term/exploratory-testing
  • ISTQB glossary - heuristic evaluation: https://glossary.istqb.org/en_US/term/heuristic-evaluation
  • test-case-from-live-feature, exploratory-charter-author - downstream skills that consume this catalog.