Decide what to test, at which level, and how, so tests catch real defects, run fast, and don't rot. Use when designing a test suite, deciding unit vs integration vs end-to-end coverage, dealing with flaky or slow tests, or judging whether a change is adequately tested.