Testing Strategy
Tests provide confidence about behavior at an acceptable maintenance cost.
Choose the smallest test that proves the risk
- Unit: pure logic, boundaries, transformations
- Integration: databases, queues, files, APIs, framework wiring
- Contract: compatibility between independently changing components
- End-to-end: a few critical user journeys
- Static checks: types, lint, schemas, dependency and security checks
- Manual/exploratory: usability, visual behavior, novel and ambiguous risks
Strong tests
- Assert public behavior, not incidental implementation.
- Are deterministic, isolated, readable, and fast enough for their feedback loop.
- Cover boundaries, invalid input, failure, permissions, state transitions, and regression cases.
- Fail for a clear reason before the fix.
Avoid chasing coverage percentages without asking which risks remain untested.