Design and implement maintainable test strategies and production-code seams for unit, integration, contract, and end-to-end tests. Use when adding or changing behavior, fixing a bug with regression coverage, practicing TDD, deciding test level, choosing mocks or fakes, testing databases or external systems, reviewing or refactoring tests, evaluating coverage, or changing production code to improve testability. Do not use for merely running an already-specified test command when no test-design judgment is needed.