Pisanje dobrih testov — ki so zanesljivi, vzdrževalni in dragoceni — sledi uveljavljenim najboljšim praksom. Slabi testi (krhki, počasni, nejasni) postanejo breme, medtem ko dobri testi zagotavljajo trajno vrednost. Razumevanje teh praks je važno za učinkovito testiranje.
Značilnosti dobrih testov (FIRST)
FAST → run quickly (so they're run often)
INDEPENDENT/ISOLATED → don't depend on each other or order; each sets up its own state
REPEATABLE → same result every time, any environment (no flakiness)
SELF-VALIDATING → clear pass/fail (assertions, not manual inspection)
TIMELY → written with (or before) the code
Ključne prakse
✓ Test BEHAVIOR, not implementation → tests survive refactoring (don't test internals)
✓ ONE concept per test → focused tests; clear what failed when one breaks
✓ CLEAR NAMES — describe what's tested ("returns error when email is invalid")
✓ Arrange-Act-Assert structure → readable, organized
✓ Cover EDGE cases and error conditions (not just the happy path)
✓ Keep tests SIMPLE and readable (tests are documentation; avoid complex logic in tests)
✓ DETERMINISTIC — no reliance on time, randomness, external state, or order (avoid flaky)
✓ DRY but readable — share setup (fixtures), but keep each test clear on its own
