Přeskočit na obsah

Testování

Strategie stojí na jednom rozdělení: co smí na síť a co ne. Mimo jedinou opt-in vrstvu nesahá žádný test na živý endpoint — HTTP se mockuje, SOAP odpovědi pocházejí z commitnutých fixtures.

Vrstvy
unit, integrační, kontraktní, zlatá extrakční, E2E, živá certifikace
Mimo výchozí běh
E2E a živá certifikace
Živá vrstva
spustí se jen s explicitně nastavenou proměnnou prostředí
Vynuceno v pre-commitu
nový modul pod src/ bez odpovídajícího testu neprojde
Zlatá sada
≥ 500 anotovaných přihlášek — zatím nevznikla

Proč jsou dvě vrstvy mimo výchozí běh

E2E testy jsou vyloučené z běžného běhu pytestu z technického důvodu, který dokument pojmenovává: synchronní API Playwrightu a event loop na test od pytest-asyncio si v jednom procesu navzájem kazí stav. Běží proto samostatně.

Živá certifikace je vyloučená z důvodu disciplíny: živý upstream nesmí udělat z deterministické sady nedeterministickou. Každý test v ní je označený a přeskočí se, dokud není explicitně zapnutá.

Pět pravidel

  • Mimo živou vrstvu nesahá žádný test na živý endpoint.
  • Fixtures se před commitem redigují. Co redigovat nejde, se necommituje.
  • Nové chování přichází se svým testem ve stejném commitu — pre-commit gate to kontroluje mechanicky.
  • Invarianty dostávají pojmenovaný test. Řádek v tabulce invariantů se překlopí na „vynuceno“ jedině ve změně, která ten test pojmenuje.
  • Stavový automat pohledávky se testuje property-based: generují se sekvence přechodů a tvrdí se, že invarianty platí pro všechny.

Co si zaslouží test víc než obvykle

Dokument vede krátký seznam míst, kde je selhání tiché, a proto se test nedá nahradit ostražitostí: idempotentní příjem (v provozu ho vyzkouší jedině pád), sémantika checkpointu (jejíž selhání je neviditelná ztráta dat), determinismus přehrání, fail-closed mapování stavů zdroje, routing podle spolehlivosti a stráže na osobní údaje.

Poslední jmenovaný je konkrétní: test, který tvrdí, že rodné číslo se neobjeví v projekci, v indexu, v API ani v logu. K tomu ověření mod-11 u IČO — levné na test a předchází celé třídě špatných shod.

Kde to v repozitáři žije

  • docs/TESTING.md — vrstvy, pravidla, rizikové oblasti, příkazy
  • docs/ACCEPTANCE.md — zlatá sada a regresní disciplína, na kterou testy navazují
  • docs/ISIR-SOURCE-SEMANTICS.md — §4 — invarianty, které se překlápějí spolu s pojmenovaným testem

Souvisí

Zpět na sekci Dokumentace