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říkazydocs/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í
Brány kvality
DostupnéTřiatřicet kroků v jednom deklarativním manifestu: 27 governance validátorů a 6 kroků toolchainu. Oslabení brány je viditelné v diffu, protože rozbije zamčený test.
Detail
Ověření kontraktu zdroje
DostupnéŽivé WSDL, XSD, publikované verze dokumentace a provozní podmínky ověřené proti tomu, co je zapsané — jedním příkazem, se staženými artefakty jako důkazem. První běh: bez driftu. Na driftu se zastaví a nepřizpůsobí parser potichu.
Detail
Doménový model
DostupnéTypovaný stavový automat dílčí pohledávky, klasifikace s tristate hodnotami, provenience jako povinná součást zápisu a validace IČO včetně mod-11.
Detail