The practical test pyramid
Listed inThe Test Pyramid and Its CriticsTestingon
Ham Vocke works through each layer with real code, and is specific about what belongs in an integration test versus a unit test.
Building a suite that catches real regressions, runs fast enough to run every time, and does not have to be rewritten with every refactor.
12 articles
Listed inThe Test Pyramid and Its CriticsTestingon
Ham Vocke works through each layer with real code, and is specific about what belongs in an integration test versus a unit test.
Listed inIntegration TestsTestingon
Real databases in containers, seeded fixtures, and isolation between tests that run in parallel.
Listed inProperty-Based TestingTestingon
Asserting invariants over generated inputs, and letting a shrinker find the minimal failing case.
Listed inUnit TestsTestingon
Testing behaviour rather than implementation, so a refactor does not turn the suite red.
Listed inTest-Driven DevelopmentTestingon
Red, green, refactor as a design feedback loop, and the situations where writing tests second is fine.
Listed inTesting in ProductionTestingon
Canaries, shadow traffic, synthetic checks, and feature flags as the safety net for the untestable.
Listed inThe Test Pyramid and Its CriticsTestingon
Unit, integration, and end-to-end proportions, and the trophy-shaped counterargument.
Listed inMocks, Stubs, and FakesTestingon
The five kinds of double, when each is right, and the mock-heavy test that verifies nothing.
Listed inCoverage and What It MissesTestingon
Line, branch, and mutation coverage — and why a coverage target becomes a bad target.
Listed inWhy We TestTestingon
Tests as a design tool and a change-enabler, not a compliance exercise measured in coverage.
Listed inEnd-to-End TestsTestingon
Browser-level coverage of the few flows that must never break, and keeping them under ten minutes.
Listed inFlaky TestsTestingon
The four causes of nondeterminism, why retries make it worse, and quarantine as a temporary fix.