Rules for tests that fail only when real behavior breaks: coverage, test doubles, naming, assertions, and testability. Use before writing or changing a test, when reviewing tests, when deciding what to test or whether to use a real object, fake, or mock, when a test is flaky, brittle, or breaks on every refactor, or when production code is hard to test.