Deniable
← Back to blog

Edge-case testing · 7 min read

Document Edge Cases That Clean Fixtures Miss

A field guide to document edge cases: ordering, labels, dates, missing context, synonyms, and uneven detail across test workflows.

The problem with tidy fixtures

A tidy fixture teaches a system one preferred shape. Real workflows rarely stay inside that shape. Headings change, details move, dates use different conventions, and important context may be missing from the first message.

The result is a false sense of reliability: a parser or classifier passes the fixture suite but fails when a customer uses a synonym, a form is reordered, or two documents disagree.

High-value edge-case families

Edge cases are most useful when grouped by the behaviour they test.

  • Structure: missing sections, reordered fields, nested content, and repeated blocks.
  • Language: synonyms, abbreviations, slang, spelling variation, and mixed languages.
  • Time: different date formats, time zones, relative dates, and overlapping periods.
  • Context: incomplete threads, references to missing documents, and ambiguous labels.
  • Scale: unusually long text, dense metadata, empty optional fields, and repeated records.

Make one difficulty inspectable

A document with every possible problem at once is difficult to debug. Prefer cases where the intended challenge is documented. That does not mean the case has to be simple; it means a failing test can be explained and reproduced.

Record the category, format, language, source scenario, expected behaviour, and any known ambiguity. This metadata becomes as valuable as the text itself when a team is triaging a failure.

Use edge cases across more than parsers

The same difficult input can test retrieval, extraction, classification, routing, summarisation, redaction, dashboards, and load behaviour. A support thread can exercise intent recognition and CRM automation. A resume can test entity extraction and layout assumptions. An invoice can test totals, dates, and structured-field validation.

Turn failures into a maintained set

When a production bug becomes a fixture, remove personal data and preserve only the behaviour needed to reproduce it. Give the case an ID, add a regression assertion, and review whether the synthetic example still represents the failure after the implementation changes.

Continue exploring

Put the idea into a repeatable test.

See the related Deniable workflow or browse the catalogue when you are ready to inspect real prepared cases.

Explore edge-case testingBrowse datasets →