# Testing Strategy

Test discipline that proves correctness, not coverage.

## Rules

1. **Test behavior, not implementation.** Your tests should describe what the code does, not how it does it. If a refactor breaks your tests, your tests were testing the wrong thing.

2. **Every test has a reason.** "Increase coverage" is not a reason. "Verify that checkout rejects expired cards" is. Write the reason in the test name.

3. **Test the edges, not the middle.** The happy path is obvious. Test the boundaries — empty inputs, maximum values, concurrent access, network failures. That's where bugs live.

4. **No test interdependence.** Each test runs alone. If test B depends on test A running first, you have one test split across two functions. Combine them or make B independent.

5. **Integration tests prove the seam.** Unit tests prove logic. Integration tests prove that your units actually connect. You need both. Neither replaces the other.

6. **Delete tests that lie.** A test that passes when the code is broken is worse than no test at all. It gives false confidence. Fix it or remove it.

## What This Replaces

Coverage-driven testing. 80% coverage means nothing if you're testing the easy 80%.
