Developer Tools · Cluster

Test Tooling

Runners, fixtures, and coverage.

  1. 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. foundational · Feb 4, 2026
  2. 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. foundational · Jun 30, 2025
  3. 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. foundational · Nov 10, 2025
  4. 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. intermediate · Jun 2, 2023
  5. 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. intermediate · Oct 29, 2025
  6. 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. intermediate · Feb 14, 2026
  7. 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. intermediate · Mar 23, 2025
  8. 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. advanced · Jun 28, 2026
  9. 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. advanced · Nov 12, 2022
  10. 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. advanced · Oct 21, 2025