Skip to content
New this month 24 fresh C++, C#, F#, JavaScript, TypeScript and Lua courses just landed. Browse new releases Use code WELCOME10 for 10% off your first order · 14-day refund

Testing That Pays Off: Unit, Integration and Contract Tests

Write the tests that catch real bugs and delete the ones that only slow you down.

Rated 5.0 out of 5 from 2 reviews 21 students

TE Created by Tom Eriksen

  • Last updated August 2026
  • English
  • 4h 8m of material
  • 31 lessons

What you will learn

8 concrete outcomes

Every bullet below is something you will have built, shipped or be able to explain by the time you finish the last lesson.

  • Decide what to assert by identifying stable behavioural boundaries
  • Use stubs, fakes, spies and mocks precisely, and avoid over-mocking
  • Write integration tests against real databases and services with Testcontainers
  • Keep services and consumers aligned with contract tests
  • Find edge cases automatically with property-based testing
  • Keep an end-to-end suite small, meaningful and stable
  • Diagnose and fix flaky tests rather than hiding them behind retries
  • Cut suite runtime with parallelism, fixture scoping and deterministic time

Course curriculum

5 modules · 31 lessons · 4h 8m of material

6 lessons running 48m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

6 lessons running 46m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

6 lessons running 50m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

6 lessons running 48m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

7 lessons running 56m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

5 modules · 31 lessons

4h 8m total length

Requirements

Short list, and deliberately so. If you meet these you can start today.

  • You write code professionally or on substantial personal projects
  • Some testing experience, even a suite you are unhappy with
  • Node and Python available; examples use Vitest and pytest

About this course

Test suites fail in two directions. Some are too thin to catch anything, and some are so coupled to implementation detail that every refactor breaks a hundred of them. This course is about the middle: tests that fail when behaviour changes and stay silent when it does not.

It starts with what to assert. You learn to test behaviour at a stable boundary rather than internal calls, to name tests so a failure report reads like a bug description, and to avoid the mocking patterns that encode implementation into assertions. Test doubles are covered precisely, since stub, fake, spy and mock are treated as synonyms far too often and the distinction determines how brittle your suite becomes.

From there the course covers integration tests against real dependencies using Testcontainers, contract tests that keep a service and its consumers aligned, property-based testing for finding the input you would never have written, snapshot testing and its failure modes, and end-to-end tests kept few and stable. The final modules cover speed, since a slow suite stops being run: parallelism, sensible fixture scope, deterministic time and randomness, and diagnosing flaky tests instead of retrying them.

Frequently asked questions

Still unsure about something? Write to misteryjj100@gmail.com and a human answers, usually the same working day.

TDD is covered as one workflow among several, with an honest account of where writing the test first helps and where it does not. The course is about test quality, not ceremony.

TypeScript with Vitest and Python with pytest, chosen because their idioms differ enough to make the transferable principles visible.

A dedicated lesson explains why a coverage percentage is a weak goal, what it genuinely tells you, and which complementary signals are more useful.

Checkout is handled on our provider's secure payment page. The moment your payment clears we email your personal access link and access code to the address you used at checkout, and the same link appears in your account library. There is nothing to install and nothing to wait for.

Email misteryjj100@gmail.com within 14 days of your purchase, quote your order number, and we refund the full amount to your original payment method. No form to fill in and no questions about how much of the course you watched.

What students say

Reviews are written by people who bought this course. We publish the critical ones too.

5.0

Rated 5.0 out of 5

Course rating · 2 reviews

Rating distribution

  • 5 stars 100%
  • 4 stars 0%
  • 3 stars 0%
  • 2 stars 0%
  • 1 star 0%
  • MS

    Miriam Steiner

    QA lead

    Mar 2026
    Rated 5.0 out of 5

    Permission to delete tests

    The chapter on tests that only cost you time gave me the argument I needed to remove four hundred assertions that did nothing but restate the implementation back to itself. Suite runtime halved and our confidence did not move an inch.
  • VN

    Vikram Nair

    Software engineer

    Nov 2025
    Rated 5.0 out of 5

    Sold me on property-based testing in ten minutes

    I had filed it under academic and moved on. Then a generated case found an off-by-one in a date range helper that six hand-written tests had walked straight past, and I changed my mind on the spot.

Your instructor

TE

Tom Eriksen

Platform engineer and DevOps instructor

  • 219 students taught
  • 13 courses published
  • 4.8 instructor rating
  • Docker
  • Kubernetes
  • CI/CD
  • Testing and tooling

Tom has built delivery pipelines for teams of three and teams of three hundred, and openly prefers the smaller ones. He teaches Docker, Kubernetes and CI/CD outward from a single commit, so nothing ever appears by magic, and he treats the test suite as part of the pipeline rather than a separate subject. Every course includes a deliberate outage that you have to diagnose from logs and metrics before you can continue. He is a CNCF contributor and a reluctant but formidable YAML expert.

$24 USD

One-time payment · lifetime access

The WisdomCharms dispatch

One useful email a week. No fluff, no spam.

New course releases, discount codes before anyone else, and a short, practical breakdown of one technique — a prompt pattern, a C++ idiom, a TypeScript trick — that you can use the same day.

  • Subscriber-only launch pricing
  • Unsubscribe in one click
  • We never sell your address

By subscribing you agree to our Privacy Policy. Questions? Write to misteryjj100@gmail.com.