Skip to content

Testing

Principles around testing software well.

Why We Test covers the purpose of testing: enabling fearless refactoring, documenting behaviour, and understanding what tests can and cannot tell you.

Test Fundamentals covers the building blocks: how a test is structured, the different types of tests and when to use each, and what separates a useful test from one that wastes time.

Writing Good Tests gets into practical techniques: testing behaviour rather than implementation, using test doubles effectively, and writing tests that are readable and maintainable.

Writing Testable Code looks at the other side of the coin: how the way you structure your code determines how easily you can test it. It covers dependency injection, dependency rejection, and the functional core/imperative shell pattern.