20 min read · 9 self-checks · Updated June 2026

Experience-Based · ISTQB 4.4.1

Error Guessing

Anticipate where the system is likely to break, based on experience and knowledge of common failure patterns. Formalised intuition — not random guessing.

Junior Senior ISTQB CTFL v4.0 — 4.4.1

1 The Hook

An Auckland team launches a donations page for a charity. The specification is simple: enter an amount, enter your card, donate. They write equivalence and boundary tests for the amount field — small, large, zero, negative — all pass. The build ships clean.

A week later a supporter pastes a name with a macron into the donor field — “Māori Education Fund” — and the receipt comes back with a string of mojibake where the name should be. Another donor double-taps the Donate button on a slow connection and is charged twice. Neither bug was in the spec, so no spec-based test went near it. But an experienced tester would have guessed both before opening the app: text fields break on accented characters, and slow networks invite double-submits.

That instinct — knowing where software tends to break before anyone tells you — is error guessing. The spec tells you what should work; experience tells you what usually doesn’t. The two together catch far more than either alone.

💬
Senior Engineer Insight

The most expensive error guessing mistake I have seen — across government portals, insurance platforms, and KiwiSaver providers — is not running it wrong, it is running it first. Teams skip equivalence partitioning because they have an experienced tester who "just knows where to look," then hit a compliance audit and discover that intuition is not evidence. Worse, that senior tester leaves and takes the fault list in their head with them. I have inherited projects where the entire test strategy was one person's memory. Write everything down, every time, even when it feels obvious. A fault list that lives in a Confluence page survives staff turnover. One that lives in someone's head does not survive their resignation.

2 The Rule

Use experience and a catalogue of common failure patterns to aim tests straight at the likely weak spots — the things specifications don’t mention. It is formalised intuition backed by a fault list, not random guessing.

3 The Analogy

Analogy

A WOF inspector who knows where rust hides.

When a car comes in for its Warrant of Fitness, an experienced inspector doesn’t check the panels at random. They go straight for the spots that fail on cars like this one: the bottom of the door sills, the strut towers, the chassis rails near the back wheels. They have seen a thousand of these, so they know where the rot starts. A first-week apprentice with the same checklist would still find some faults — but the veteran heads for the trouble first and finds more, faster.

Error guessing is testing with that inspector’s nose. Your fault list is the memory of every car you’ve seen rust through, and you point your tests at the sills before you bother with the bonnet.

What it is

Error guessing is a technique where you use experience, knowledge of the application, and a list of common failure patterns to design tests that target likely weak spots. It supplements systematic techniques — you use EP/BVA to cover the spec, then use error guessing to go after the things specs don’t cover.

The key word is anticipate. An experienced tester knows that text fields often crash on emoji, that date fields break at year boundaries, that "0" and "-1" cause integer overflow bugs. Error guessing turns that knowledge into specific test cases.

Building a fault list

A fault list (or attack list) is your personalised catalogue of things that tend to go wrong. Build one over your career and use it on every project. Examples:

Starter fault list — common failure triggers
Input typeValues to tryWhy
Numeric fields0, -1, very large numbers, decimalsOff-by-one, integer overflow, type mismatch
Text fieldsEmpty, spaces only, 1 char, max+1 chars, SQL injection strings, emoji, nullBoundary, encoding, injection, null handling
Dates29 Feb non-leap year, 31st in 30-day month, past date, future date, epochCalendar edge cases, timezone bugs
File uploads0 byte file, max size + 1, wrong extension, executable disguised as imageValidation bypass, security
DropdownsFirst option, last option, default/empty, — optionOff-by-one in arrays, unhandled null
Concurrent actionsDouble-submit, two tabs, race conditionsDuplicate records, state corruption

Common failure areas by domain

  • E-commerce: price = 0, quantity = 0, empty cart checkout, expired discount code
  • Authentication: empty password, password with spaces, case sensitivity, concurrent logins
  • Search: empty search, single character, wildcard characters, XSS payloads
  • Reports / exports: 0 rows, thousands of rows, columns with null values, special characters in data

Using a defect taxonomy

At senior level, replace informal fault lists with a formal defect taxonomy — a classification scheme of known defect types. The IEEE Standard Classification for Software Anomalies and ISTQB’s taxonomy include categories like: Logic, Computation, Interface, Data, Timing, and Environment. Using a taxonomy ensures you don’t skip whole categories of failure.

ISTQB mapping

ISTQB CTFL v4.0 reference
RefTopic
4.4.1Error Guessing — anticipating errors, faults, failures based on experience
4.4.1Fault lists, defect taxonomies, tester experience as a test basis

NZ example — NZ-specific edge cases

New Zealand has several input edge cases that catch systems out. Add these to your NZ fault list.

NZ fault list — inputs that break non-NZ-aware systems
Input areaNZ edge caseCommon failure
Rural addresses"RD 2, Masterton" — no street numberSystem requires numeric house number; rejects valid rural address
Unit notation"2/14 Main Street" or "Flat 2, 14 Main Street"System expects one format; rejects the other
Mobile numbers021, 022, 027, 028, 029 prefix (10 digits with leading zero; 9 without)Field requiring exactly 10 digits rejects numbers entered without leading zero
Landline numbers09 Auckland, 04 Wellington, 03 South IslandValidation pattern built for one region rejects others
Date formatNZ uses DD/MM/YYYY; US software defaults to MM/DD/YYYY03/07/2024 = 3 July (NZ) vs March 7 (US system) — silent data corruption
Bank account numbersBB-bbbb-AAAAAAA-SS format (2-4-7-2 or 2-4-7-3 digits)Form expects 16-digit card number format; many wrong submissions

4 Industry Reality

🏭 What you actually encounter on the job
  • The spec is a skeleton, not a map. Requirements documents describe happy paths. In practice, 60–80% of defects your error guessing catches live in gaps the spec never mentions — encoding, concurrency, null handling, session state. Don't wait for a spec to tell you where to look.
  • Your fault list is worth more than your test plan. Senior testers at companies like CloudBooks, Harbour Bank, and InsureNZ build personal fault lists over years. They carry them from project to project. A two-page fault list brings more value on day one than a polished 20-page test plan that only describes what the spec already says.
  • Time pressure forces triage. On real projects you rarely have time to run your entire fault list. The skill is ordering: which guesses have the highest probability of finding a showstopper in this specific system? That judgement comes from understanding the technology stack, the team's weak spots, and what's changed recently.
  • Legacy codebases are gold mines. Old NZ government systems, banking backends, and insurance platforms are often decades-old code bolted together. Error guessing pays double here — character encoding issues, integer sizes that made sense on 32-bit hardware, date handling that predates Y2K patches. The bug history is the best fault list you have.
  • Junior testers guess. Senior testers aim. The textbook says "use experience." On the job that means: read the defect backlog, talk to the developer, ask what changed, look at which component has the most bug-fix commits. Real error guessing is informed by data, not just intuition.

From the field

A Wellington council was rolling out a new resource consent portal. The team had thorough equivalence and boundary tests for every numeric field — lot size, floor area, setback distances — and every one passed. What nobody guessed was the address field: rural subdivisions on the Kapiti Coast had addresses in the format “Lot 3 DP 123456, Waikanae” — no street number, no suburb in any lookup table. The validation was built on Auckland street addresses, and the form silently dropped submissions from half the target users. The lesson that stuck: when you are testing a council system, the most dangerous failure is the one that affects people who live where the developers don’t. Your fault list needs NZ-specific address formats before it needs anything exotic.

Senior engineer insight

I spent three years testing the TransitNZ RealMe integration for a transport licensing portal. We ran a thorough fault list — empty fields, max-length strings, special characters — and everything looked solid. What caught us two days before go-live was a macron in a first name: the identity assertion came back from RealMe with UTF-8, our database stored it correctly, but a downstream PDF generation library silently dropped the macron and produced a legally invalid document. The failure mode wasn’t in any spec — it was in the gap between systems that had each individually “handled” the character. Error guessing at its best is thinking in seams: not “will this field accept a macron?” but “what happens to that macron when it crosses five different systems?”

The most common mistake I see graduates make is running error guessing on fields in isolation — they test that the input box accepts a macron, tick it off, and never ask what happens downstream at the database, the API, the report, and the letter template.

5 When to Use It — and When Not To

⚡ Decision guide

✓ Use it when

  • You have run systematic techniques (EP, BVA, decision tables) and want to target the gaps specs don't cover
  • Time is short and you need to prioritise — your fault list points you at highest-likelihood failures first
  • You're handed a legacy system with little documentation — defect history and code comments are your test basis
  • You're doing a quick smoke or sanity pass on a new build and need coverage fast
  • You have domain expertise — testing a KiwiSaver platform and know Revenue NZ validation rules and NZ bank account formats cold

✗ Skip it when

  • You need to demonstrate systematic, auditable test coverage — error guessing alone won't satisfy a compliance or certification audit (ISO 25010, HIPAA, NZ Privacy Act assessments)
  • The feature is brand new to the team and nobody has domain knowledge — you'll guess blind and miss domain-specific failures
  • You're testing pure algorithmic code with clear inputs/outputs — equivalence partitioning and boundary analysis will be more exhaustive and structured
  • The project is safety-critical (medical devices, aviation) — intuition-based testing must be complemented by formal coverage criteria
  • You're writing a regression suite that needs to be maintainable — error guessing produces one-off tests; build structured regression cases from defect data instead

Context guide

How the right level of Error Guessing effort changes based on project context.

Context Priority Why
Legacy NZ government or banking system (Revenue NZ, Benefits NZ, CoverNZ, KiwiFirst Bank) Essential Decades of accumulated technical debt make legacy codebases fault-rich; the defect backlog is your best fault list, and experienced testers surface more bugs per hour here than any structured technique.
Agile sprint with a narrow time window (1–2 days to sign-off) High A prioritised fault list lets you triage to the highest-consequence guesses first — far faster than building full scripted coverage under deadline pressure.
Regulated system requiring audit trail (NZISM, NZ Privacy Act, health certification) Medium Useful as a supplement after EP/BVA and decision tables have established systematic coverage — but auditors require demonstrable criteria, so error guessing alone cannot satisfy a compliance review.
Enterprise greenfield build with a well-documented spec Medium Run systematic techniques first to cover the spec; use error guessing afterwards to target the gaps around concurrency, encoding, and session state that requirements never mention.
Small startup with limited tester headcount and frequent releases High Low overhead and no tooling required; a shared team fault list punches well above its weight when there is no time for full scripted suites between releases.
Brand-new domain where no team member has prior experience Low Guessing without domain knowledge targets the wrong failure modes; build domain understanding first via structured exploratory charters and developer conversations, then layer error guessing on top.

Trade-offs

What you gain and what you give up when you choose Error Guessing.

Advantage Disadvantage Use instead when…
Finds real bugs fast — experienced testers using a fault list routinely discover defects in minutes that scripted test suites miss entirely Coverage is invisible — there is no systematic way to prove what you have and haven’t checked; auditors cannot accept "my gut says we’re covered" You need auditable, repeatable coverage (NZ Privacy Act review, ISO 25010 assessment, health system certification)
Scales with time pressure — a two-minute triage pass with a fault list beats an incomplete scripted suite when the sprint deadline is in an hour Quality depends on the tester — a weak or unfocused fault list produces weak guesses; the technique transfers poorly without explicit knowledge sharing The team lacks domain experience and guesses blind — use structured exploratory testing charters instead to build domain knowledge first
Targets the gaps specs ignore — encoding, concurrency, and session-state bugs rarely appear in requirements documents but appear constantly in fault lists Misses boundary correctness — without equivalence partitioning and BVA first, you can have a rich fault list and still leave the specified input ranges untested The feature has well-defined input/output rules (e.g. tax bracket thresholds, loan repayment calculations) — lead with BVA and decision tables
Cheap to start — no tooling or long setup needed; open a session note, pull out the fault list, and start Hard to reproduce and maintain — guesses run ad hoc are not easily turned into regression tests unless the tester explicitly writes them up You are building a long-term regression suite that other testers will maintain — write structured test cases from defect data instead
Compounds across a career — each new defect you add to your fault list makes every future project better; it is a genuinely appreciating asset Skews toward familiar failure types — informal fault lists over-represent Logic and Data defects and chronically under-represent Timing and Environment categories You are testing distributed or async systems where timing failures dominate — combine with a formal defect taxonomy and dedicated performance/load testing

6 Best Practices

✓ What experienced testers do
  • Write it down every time. The moment you think "I wonder if this breaks on X", write it in your fault list. Oral tradition dies with staff turnover. CloudBooks's QE teams maintain shared fault lists in Confluence — yours should too.
  • Order by probability, not creativity. Run your most likely guesses first. Empty/null handling and whitespace issues fail more often than elaborate injection attacks. Don't audition; triage.
  • Pair guesses with a defect taxonomy. After running your informal list, walk through Logic / Computation / Interface / Data / Timing / Environment. It forces you to cover categories you'd otherwise skip.
  • Mine the defect backlog before you start. Filter closed bugs for the component under test. If six of the last ten bugs were encoding issues, that's your fault list priority — it's not a hunch, it's data.
  • Talk to the developer. Ask what they found hardest to implement. Developers know where the dirty compromises are. A five-minute conversation is worth hours of guessing.
  • Include NZ-specific entries by default. Macrons in names, RD addresses, NZBN numbers, Revenue NZ numbers, NZ bank account format (BB-bbbb-AAAAAAA-SS), DD/MM/YYYY dates — add these to your starter fault list and apply them to every NZ-facing form.
  • Combine with exploratory testing charters. Use your fault list to seed the "areas to explore" in a charter. It gives exploration a target without scripting every move.
  • Record what you actually ran. Jot a line per guess with pass/fail. This creates a lightweight session report and protects you when someone asks what you tested.
  • Refresh your fault list after each project. Every project teaches you a new failure mode. Add it within 24 hours while it's fresh. A fault list that isn't updated after every project stagnates.
  • Don't skip the boring edge cases. 0, -1, null, empty string, max length + 1 — they feel obvious and they still fail constantly. Senior testers run them first, not as an afterthought.

7 Common Misconceptions

❌ Myth: Error guessing means randomly trying things until something breaks.

Reality: Error guessing is structured, documented, and repeatable. Each guess is a specific input tied to a specific known failure mode — empty string targets null-handling bugs, double-submit targets race conditions. "Try random stuff" is not a technique; it's noise. The discipline is in maintaining a fault list and being able to hand it to another tester and have them reproduce the same tests.

❌ Myth: Only senior testers can do error guessing — juniors don't have enough experience.

Reality: Juniors can and should do error guessing from day one, using a shared fault list rather than personal memory. A team-maintained fault list levels the playing field. What seniors add is calibration — knowing which guesses matter most for this system, stack, and sprint. Use the starter fault list in this page, ask seniors to extend it, and grow it with each project you complete.

❌ Myth: Error guessing replaces equivalence partitioning and boundary value analysis.

Reality: Error guessing complements systematic techniques — it fills the gaps specs don't cover. EP and BVA cover the requirement space; error guessing covers the failure-experience space. Run them in sequence: systematic coverage first, then error guessing to attack what the spec left out. Teams that skip EP/BVA in favour of "experienced guessing" end up with intuition-shaped holes in their coverage — bugs in the specified behaviour that nobody thought to check because it seemed obvious.

8 Now You Try

Three graded exercises — spot, fix, then build. Write your answer, run it for AI feedback, then compare to the model answer.

🔍 Exercise 1 of 3 — Spot: name the likely failures

A PostNZ parcel-tracking form has one field: a tracking number (free text), and a Search button. The spec only says “accept a valid tracking number and show the parcel status”. Using error guessing, list at least six likely failure points the spec doesn’t mention, and say what bug each one is hunting for.

Show model answer
Likely failure points for a free-text tracking field:
1. Empty search — submitting with nothing entered (no required-field handling).
2. Leading/trailing spaces — " ABC123 " pasted from an email (whitespace not trimmed → "not found").
3. Wrong case — abc123 vs ABC123 (case-sensitive lookup rejects a valid number).
4. Very long string / 10,000 characters pasted in (no max length → crash or slow query).
5. Special characters and injection strings — '; DROP TABLE…,