Pattern · seen in 1 breakdown across 1 company
Known-Answer Testing
Catch a component that is silently returning wrong answers by testing it with inputs whose correct answers are known, and treating any mismatch as the failure it will never report itself.
The mechanism
At its core: some components fail silently, returning wrong answers while every health check says they are fine. A known-answer test catches them by asking questions whose answers are already known - the moment a reply does not match, you have found the fault.
The health check says the server is fine while it quietly returns wrong answers - a known-answer test asks a question it can't fake.
Definition
Some failures leave no trace. A chip with a defect, a corrupted patch of storage, or mis-built code can keep running and answering as if all is well, while quietly returning wrong answers. There is no error, no log line, no failed health check, because the component does not know it is broken. You cannot wait for a signal that will never come. So you create one: test the component with inputs whose correct answers are known, and treat any wrong answer as the failure. You check whether it is right, instead of trusting it to tell you it is fine.
This is a different question from the usual one. A health check asks 'are you up?' and a silently faulty component happily answers yes; a known-answer test asks 'are you right?', which it cannot fake. It is also different from independent observability. That pattern makes sure your monitor survives an outage, so it can still see the errors and alerts the system gives off. Known-answer testing is for the opposite case: the faulty component gives off no errors or alerts at all, so there is nothing to see - you have to create the evidence yourself.
In practice you run two kinds of tests, because neither alone is enough:
- quick and constant - small checks that run all the time, right beside live work, to catch most faults within seconds
- thorough and occasional - long, careful checks run while the component is offline for maintenance, to catch the faults which quick checks miss
Each kind catches faults the other misses. Run only the quick tests and some faults are never found; run only the thorough ones and faults are found late, after they have already done damage.
When it applies
Tradeoffs
The same move, 1 ways
Every row is a production system that bet on this pattern — the note says how, in that system's own terms.
Problems this pattern answers
The walls where its breakdowns live — each opens the cross-company comparison.