Test Desiderata, remade
Kent Beck published twelve properties of good tests in 2019; Emily Bache reorganized them in 2025. Both lists are good, and both are one author’s view. This garden’s Test Desiderata is a third take, built the other way around: start from what the wider field independently converged on, and let Beck and Bache be sources rather than authorities.
What the evidence keeps
Six properties are genuine cross-author common ground: five or more authorities name each of them, in their own vocabulary, often before Beck’s list existed: Fast, Run in Any Order, Readable, Deterministic, Diagnosable, and Behavioral. The shared claim under each is more specific than its name: “Fast” is the precondition for tests being run at all; “Deterministic” protects trust in the suite as a whole.
The implicit meta-property the field converges on is trust in the suite, not hygiene of the individual test.
Two renames are improvements and are adopted: Run in Any Order (Bache) for Beck’s Isolated, Diagnosable (Bazuzi) for Beck’s Specific. Behavioral’s mirror, Structure-Insensitive, stays its own property, as it always was: Beck listed both, and Bache keeps them apart too. It remains a seedling here: the one property still awaiting its cross-author audit.
What gets renamed on principle
Beck’s Automated becomes Automated Checks. The context-driven school is right that what runs unattended is checking, not testing; conceding the word costs nothing and buys honesty about what a green build means. Writable survives with a caveat: the field treats authoring cost as design feedback, not a goal. Minimal Data is adopted: Bache promoted it into a named property, and it descends from Meszaros’s Minimal Fixture (a lineage this garden draws; Bache’s post names neither Meszaros nor the fixture).
What survives a second look
Composable looks like it should be cut. The word carries mockist baggage, and Freeman and Pryce used it of composable code in 2004, fifteen years before Beck. But that conflates two senses. Beck’s property is not about mock-composable code, and not about test isolation; it is about confidence: you cannot test every combination of inputs, so you test the dimensions of variability separately and combine the results by induction. That goal is universal; the pyramid and property-based testing both depend on it. What is mockist is only the mechanism, and mechanism is an axis this list already leaves alone. So Composable stays, named at the goal, taking no side.
What gets dropped
Inspiring is out as a property and kept as the outcome of Predict Success in Production. Every metric ever proposed for “inspiring” turns out to measure another property in disguise. Bache demoted it; the measurement evidence says she was right.
What gets promoted out of the list
That leaves Beck’s twelfth, Predictive. It is not renamed or dropped; it is lifted clear of the list to become the one macro goal the other properties serve: Predict Success in Production, where green means safe to ship. Bache names four macro desiderata and holds them level; narrowing to this single load-bearing one is the garden’s move, not Bache’s, and it is the commitment the rest of the list is in service of.
What this list refuses to be
A property list covers one dimension. Test categories, legacy-code mechanics, suite shapes, and team process are real axes this list deliberately leaves to other tools. It also inherits assumptions worth naming: a TDD-shaped workflow, a production target, a codebase that already has tests, and a reader with the agency to make trade-offs. Where those don’t hold, start elsewhere (Feathers, not Beck).
Sources
The claims here rest on the field’s own writing, not on any one authority:
- Kent Beck, Test Desiderata (2019) and the companion essay: the original twelve properties.
- Emily Bache, Test Desiderata 2.0 (2025): the reorganization into four macro desiderata (predict success in production, fast to get feedback, support ongoing code design change, low total cost of ownership) plus properties. This garden singles out the first as its one macro goal; that narrowing is the garden’s, not Bache’s.
- Freeman, Pryce, Mackinnon and Walnes, Mock Roles, not Objects (OOPSLA 2004): the mockist source that used “composable” of code, fifteen years before Beck.
- Jay Bazuzi, Characteristics of Ideal Tests: the source of the Diagnosable name (“1 defect == 1 test failure”).
- James Bach and Michael Bolton, Testing and Checking Refined: the context-driven distinction behind the Automated Checks rename.
- Gerard Meszaros, Minimal Fixture: the pattern this garden maps Bache’s Minimal Data back onto (the mapping is the garden’s; Bache does not cite Meszaros).
- Michael Feathers, Working Effectively with Legacy Code: where to start when the codebase has no tests yet.