What Is Error Guessing?

Error guessing is an experience-based test design technique where testers use their knowledge of common mistakes, typical defects, and past failures to anticipate where the software is likely to break. Unlike formal techniques that follow rules, error guessing leverages intuition and domain expertise.

Why Error Guessing Works

Experienced testers develop an intuition for where defects hide. This comes from:

  • Years of finding similar bugs across different projects
  • Knowledge of common programming mistakes
  • Understanding of typical user behaviors that break software
  • Awareness of system integration points that often fail

The Defect Taxonomy Approach

To make error guessing systematic rather than purely intuitive, build a defect taxonomy — a categorized catalog of common error patterns:

graph TD A[Defect Taxonomy] --> B[Input Errors] A --> C[Computation Errors] A --> D[State Errors] A --> E[Integration Errors] A --> F[Environment Errors] B --> B1[Null/empty input] B --> B2[Special characters] B --> B3[Extremely long input] B --> B4[Unicode/encoding] C --> C1[Division by zero] C --> C2[Integer overflow] C --> C3[Rounding errors] D --> D1[Race conditions] D --> D2[Stale data] E --> E1[API timeout] E --> E2[Network failure] F --> F1[Disk full] F --> F2[Low memory]

Common Error Categories

Input Handling:

Error PatternTest
Null/emptySubmit empty form fields
Special characters<script>alert(1)</script>, '; DROP TABLE--
Extremely long10,000 character string in name field
UnicodeEmojis, RTL text, Chinese characters
Negative numbers-1 in quantity field
Zero0 items, $0 payment
Leading/trailing spaces" admin " as username

Computation:

Error PatternTest
Division by zeroCalculate average of 0 items
Integer overflowQuantity = 2,147,483,647 + 1
Float precision$0.1 + $0.2 = ?
Date arithmeticAdd 1 month to Jan 31

State/Timing:

Error PatternTest
Double submitClick submit button twice quickly
Back buttonSubmit form, press back, submit again
Session expiredLeave page open overnight, then submit
Concurrent editTwo users edit the same record

Integration:

Error PatternTest
Service downWhat if the payment gateway is unavailable?
Slow responseAPI takes 30 seconds to respond
Invalid responseAPI returns malformed JSON

Real-World Example: Testing a Shopping Cart

Applying error guessing to an e-commerce cart:

#Error GuessRationale
1Add item, then it goes out of stockInventory race condition
2Add 999,999 of the same itemQuantity overflow
3Apply expired coupon codeDate validation
4Change currency mid-checkoutState corruption
5Open cart in two tabs, checkout in bothConcurrent modification
6Add item priced at $0.001Rounding in total
7Cart with 100+ unique itemsPerformance/rendering
8Remove all items and proceed to checkoutEmpty state handling

Building Your Personal Defect Catalog

Structured Error Guessing Framework

Instead of relying purely on memory, create a structured catalog organized by:

1. Category — What type of error? 2. Trigger — What input or action causes it? 3. Symptom — What does the user see? 4. Likelihood — How common is this in your domain?

Example Catalog Entries:

CategoryTriggerSymptomLikelihood
InputPaste text with hidden Unicode charsData corruptionMedium
TimingSubmit during auto-saveDuplicate or lost dataHigh
AuthToken expires during multi-step formSilent failure, lost workHigh
DataImport CSV with extra columnsCrash or wrong mappingMedium
DisplayVery long text without spacesLayout breaksHigh
LocaleDate field with DD/MM vs MM/DDWrong date storedHigh

Growing Your Catalog

After every test cycle:

  1. Review bugs found — add new patterns to the catalog
  2. Review bugs missed — what error guess would have caught them?
  3. Review production incidents — what patterns should you test for?

Combining Error Guessing with Formal Techniques

flowchart LR A[EP + BVA] --> B[Systematic Coverage] C[Decision Tables] --> B D[Error Guessing] --> E[Gap Coverage] B --> F[Combined Test Suite] E --> F

Best practice workflow:

  1. Apply formal techniques first (EP, BVA, decision tables)
  2. Then apply error guessing to find what formal techniques missed
  3. Focus error guessing on areas of highest risk and complexity

Exercise: Error Guessing Session

Scenario: You’re testing a user profile edit page with fields: Display Name, Bio (max 500 chars), Profile Picture upload, Date of Birth, and Website URL.

Task: Generate at least 10 error guessing test cases. Organize them by category and explain your rationale.

Hint

Think about each field: What’s the worst thing a user could enter? What happens at the limits? What about file upload edge cases (0 bytes, 10GB, wrong format, executable file)? What about date edge cases (future date, Feb 29, year 0)?

Solution
#CategoryTestRationale
1InputDisplay Name = <img src=x onerror=alert(1)>XSS in stored field
2InputBio = exactly 500 chars then add 1 moreBoundary enforcement
3InputBio with only emojis (500 emojis)Unicode handling, char counting
4UploadProfile pic = 0 byte fileEmpty file handling
5UploadProfile pic = renamed .exe to .jpgFile type validation bypass
6UploadProfile pic = 50MB imageSize limit enforcement
7DateDOB = tomorrow’s dateFuture date should be invalid
8DateDOB = Feb 29, 2023 (non-leap year)Invalid date handling
9URLWebsite = javascript:alert(1)XSS via URL scheme
10URLWebsite = very long URL (2000+ chars)Length validation
11StateEdit name, don’t save, navigate awayUnsaved changes warning?
12ConcurrentEdit profile in two tabs, save bothLast-write-wins or conflict?
13InputDisplay Name = all spacesWhitespace-only validation
14UploadUpload pic, then delete accountOrphaned file cleanup

Pro Tips

  • Keep a personal bug journal. Track every interesting bug you find — over time, it becomes your most valuable testing asset.
  • Learn from production incidents. Post-mortems reveal error patterns that formal test design rarely covers.
  • Think like an attacker. Security researchers are expert error guessers — study OWASP Top 10 for web testing patterns.
  • Consider the user’s environment. Slow networks, old browsers, ad blockers, accessibility tools — these create errors that developers rarely anticipate.
  • Share your catalog with your team. A team defect taxonomy is more powerful than individual knowledge. Make it a living document that grows with every sprint.