Att skriva bra tester — som är pålitliga, underhållsbara och värdefulla — följer etablerade bästa metoder. Dåliga tester (skörra, långsamma, oklar) blir en börda, medan bra tester ger långsiktig värde. Det är viktigt att förstå dessa metoder för effektiv testning.
Karakteristiska drag för bra tester (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
Viktiga metoder
✓ 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
