Developer Tools · Cluster
Test Tooling
Runners, fixtures, and coverage.
- 01 Test Discovery, Collection Order, and Import Side Effects How a runner turns files into an ordered list of test cases, why importing a test module executes it, and what that costs in ordering, naming, and reporting.
- 02 How Assertion Libraries Recover Operands From a Failed Comparison Four mechanisms for turning a failed comparison into a readable message: preprocessor stringification, source rewriting, explicit operand passing, and post-mortem introspection.
- 03 Fixture Scoping and the Lifetime of Shared Test State How setup and teardown become a dependency graph with scoped lifetimes, why a session-scoped object couples tests that never mention each other, and how teardown failures are attributed.
- 04 Isolation Boundaries: In-Process, Subprocess, and Sandboxed Tests What leaks between tests that share an address space, what a process boundary actually buys, and why sandboxing undeclared inputs changes which failures are possible.
- 05 Distributing Tests Across Workers Without Losing Determinism Why the tail of a suite dominates the makespan, how the unit of distribution constrains fixture sharing, and which sources of non-determinism only appear once tests run concurrently.
- 06 How Coverage Tools Count Executed Lines and Branches Tracing hooks versus compile-time counters, why line, statement, branch, and region coverage have four different denominators, and how profiles from many processes are merged.
- 07 Deterministic Time and Randomness in Test Suites Why a test that reads the system clock or the global random generator is not reproducible, how injected clocks differ from frozen ones, and how seeding makes a failure replayable.
- 08 Change-Based Test Selection and Where It Stops Being Sound How dependency graphs and per-test coverage traces map a diff to a subset of tests, why dynamic selection cannot see new coverage gaps, and why selection tools fail open.
- 09 Reducing Failing Inputs to a Minimal Counterexample How property-based testers search for smaller inputs that still fail, why shrinking needs deterministic failures and per-type reduction rules, and what delta debugging assumes.
- 10 Mutation Testing and What Coverage Cannot Tell You Seeding small syntactic faults to measure whether a suite would notice them, the equivalent-mutant problem, and how coverage-directed runs keep the cost bounded.