Day 17 of 60 · Property-based & oracle-free

Differential testing

Two implementations of the same thing? Run identical inputs through both. Disagreements are bugs in at least one. This is how the LLVM and OpenSSL teams find the bugs nobody else can.

ProblemNo oracle, but multiple candidate implementations.

How it works

Run identical inputs through two implementations (different model, different seed, reference vs. optimized) and diff outputs. Disagreements are bugs in at least one. Used by compiler teams, browsers, fuzzers.

What it catches

Logic divergence, optimisation bugs, model drift. Has a long track record in high-stakes systems (LLVM, V8, OpenSSL).

Tools

Csmith (compiler) · OSS Frankencerts (TLS) · OSS (custom diffing harnesses) · OSS

Verdict by project size

Small
Skip
Medium
Opt
Large
Rec
Extra-large
Must

Cost

Project size Setup Maint / mo Tool / mo CI / run
Small <10k LOC 2d 2h $0 +2m
Medium 10–100k LOC 5d 10h $0 +5m
Large 100k–1M LOC 20d 40h $0 +15m
Extra-large >1M LOC 60d 150h $0 +30m
Setup = engineer-days to first useful run · Maint = engineer-hours / month at steady state · Tool = out-of-pocket $ / month · CI = minutes added (or saved) per pipeline run

Lifecycle & ownership

When in lifecycle
Test
Per merge · Runs after merge to main; nightly heavy jobs.
Who owns it
Developer
Authoring + the inner loop
Collaborates with: QA / Test Engineer

Reference implementations

Quick check

Differential testing requires what to be useful?

One question. Pick the best answer. Your streak is saved locally on this device.

Save the lesson

Download SVG ↓

Screenshot for a 1:1, drop it in Slack, or download the SVG.

thinkbridge THE VALIDATION ATLAS DAY 17 OF 60 PROPERTY-BASED & ORACLE-FREE Differentialtesting Two implementations of the same thing? Run identical inputsthrough both. Disagreements are bugs in at least one. Thisis how the LLVM and OpenSSL teams find the bugs nobody elsecan. FIVE-MINUTE LESSON · ONE QUICK-CHECK QUESTION There’s a new way there
All 60 days →