Skip to content

Course

Testing Engineering

Tests that earn their keep — the pyramid done right, doubles without over-mocking, integration and e2e that don't flake, and the CI discipline that keeps the suite trustworthy.

9 lessons

Course Q&A

The Discipline

What tests are for, the pyramid, and the economics of confidence.

  1. 01What Tests Actually Buy YouTests aren't about coverage numbers — they're about confidence per dollar of maintenance. The economics of a suite that pays for itself.18mOpen
  2. 02Unit Tests That Don't RotArrange-Act-Assert, test isolation, and the assertion patterns that survive refactors instead of breaking on them.20mOpen

The Kinds

Unit, integration, and e2e — what each does well and where each fails.

  1. 01Integration Tests: Where the Bugs LiveUnit tests tell you parts work; integration tests tell you they work together — the database boundary, the HTTP boundary, and what 'realistic' actually means.22mOpen
  2. 02End-to-End Tests Without the FlakeThe smallest possible e2e suite — the golden path, real auth, seeded data — and the patterns that keep it reliable enough to block merges.20mOpen
  3. 03Contract and Property-Based TestingPin the interface when you can't test the internals — schema contracts, and property tests that find edge cases you didn't think of.18mOpen

The Practice

Test doubles, flaky test management, and CI gating.

  1. 01Test Doubles: Mocks, Stubs, and FakesThe right double for the right job — mocks verify interaction, stubs return canned data, fakes provide real behavior, and over-mocking is the test smell that rots suites fastest.20mOpen
  2. 02Flaky Tests: Finding and Fixing the NondeterminismTiming, shared state, and external dependencies are the three flake sources — and a suite you can't trust is a suite you can't gate on.18mOpen
  3. 03Testing in CI: Gates That Actually GateCoverage thresholds, failure budgets, and the CI pipeline structure that keeps the suite honest without becoming a 40-minute bottleneck.18mOpen
  4. 04Testing Async, Time, and EventsThe untestable-triple — clocks, randomness, and delays — plus event-driven code and the patterns that make async testable.18mOpen