Jak zorganizovat verzování kódu při více knihovnách
Postman je jedním z nejrozšířenějších nástrojů pro testování a dokumentaci API. Naučit se s ním pracovat vyžaduje více než jen odeslat pár požadavků – jde o systematický přístup, který vám ušetří hodiny ladění. Následující postupy vycházejí z reálné praxe a zaměřují se na konkrétní činnosti, které využijete při každodenní práci s rozhraními.
Typické chyby a prevence Nejčastější chybou je spoléhání na „nejnovější dostupnou verzi". To vede k tomu, že se build chová odlišně na různých počítačích, protože prostředí stáhne pokaždé jinou verzi. Řešením je soubor zámků, který zaznamená přesnou verzi každé knihovny a také hash jejího zdroje. Tento soubor musí být commitnutý a nesmí se měnit ručně. Druhou častou chybou je aktualizace knihovny, která mění chování v jiné části projektu, aniž by to byl reflektováno v testech. Proto si před aktualizací spusťte celou testovací sadu a porovnejte výstup před a po změně.
Když zákazník uslyší „bude to za tři dny", automaticky to bere jako závazek. I když dodáte o den dřív, problém není v rychlosti, ale v tom, že jste slíbili něco, co jste nemohli garantovat. Komunikace odhadu času není o tom, co zvládnete, ale o tom, co dokážete obhájit. Základem je oddělit přání od reality: co chcete stihnout, a co je skutečně reálné při běžném provozu.
Na závěr si zvykněte testy psát průběžně, ne až na konci projektu. Začněte s jednoduchou funkcí a postupně přidávejte další. Pokud narazíte na chybu, napište nejdříve test, který ji reprodukuje, a teprve poté opravujte kód. Tento postup vám ušetří spoustu času a zajistí, že se chyba už nevrátí. Až si osvojíte základy, podívejte se na pokročilejší funkce pytestu, jako jsou fixture s rozsahem, conftest.py nebo pluginy – ale to už je jiný příběh.
Nakonec si pamatujte, že odhad není prodejní argument. Pokud zákazník tlačí na rychlost, protože chce nízkou cenu, nikdy nekývněte na nereálný termín jen kvůli zakázce. Radši mu vysvětlete, co všechno se musí udělat, a nabídněte kompromis – třeba zkrácení rozsahu práce. Když ukážete, že odhad stavíte na faktech, zákazník si vás váží víc, než když bezhlavě slíbíte. Až příště budete chtít říct „to bude rychlé", vzpomeňte si, že rychlost se měří výsledkem, ne slovy.
Na co si dát pozor při psaní testů Nejčastější chybou bývá testovat implementaci místo chování. Pokud test kontroluje, jak přesně funkce interně pracuje, stává se křehkým a každá změna kódu ho rozbije, i když je výsledek stále správný. Testujte tedy vstupy a výstupy, nikoliv vnitřní proměnné. Dalším častým problémem je používání reálných časů, náhodných hodnot nebo síťových volání přímo v testech – takové testy jsou pomalé a někdy i nespolehlivé. Řešením je tyto závislosti nahradit falešnými objekty, tzv. mocky, nebo alespoň testovat s pevně stanovenými daty.
Další pastí je verzování samotného kódu podle data, nikoliv podle sémantické verze. Pokud přidáváte nové funkce, ale zároveň měníte staré, zvyšte major verzi. Pokud jen opravujete chyby, zvyšte minor verzi. Pokud měníte jen interní detaily, zvyšte patch. Toto pravidlo musí být napsané v dokumentaci projektu a každý člen týmu ho musí dodržovat. Bez toho se rychle stane, že dvě verze knihovny mají stejné číslo, ale různé chování, což je nejhorší možný scénář.
Nakonec nezapomeňte, že odhad je vždy pravděpodobnostní, ne jistota. Dobrý odhad by měl být rozložen na optimistickou, realistickou a pesimistickou variantu. Pro plánování projektu používejte realistickou až pesimistickou. Optimistická hodnota je vhodná jen pro motivační účely, ne pro slibování termínů. Pokud se odhady často liší o více než 30 %, zaměřte se na zlepšení rozkladu úkolů a sběr dat – to je cesta k trvalejší přesnosti.
Automatizace kontroly kompatibility místo ručního dohledu Ruční sledování verzí u více knihoven je neudržitelné, proto je nutné zapojit automatizované nástroje. Nejde o žádný konkrétní software, ale o princip: do CI (průběžné integrace) přidejte krok, který ověří, zda všechny deklarované závislosti existují a zda jejich verze odpovídají definovanému rozsahu. Tato kontrola by měla běžet při každém commitu a při každém vydání. Dále si vytvořte skript, který generuje zámek verzí (lockfile) pro celý projekt. Tento zámek zachytí přesné verze všech knihoven, které se aktuálně používají, a to včetně tranzitivních závislostí. Bez takového zámku se může stát, že vývojář na svém počítači pracuje s jinou kombinací než produkce, a to vede k nepředvídatelným chybám.
Nejdřív si určete tři scénáře: optimistický, realistický a pesimistický. Optimistický počítejte jen tehdy, když máte jistotu, že nezasáhne žádná nečekaná překážka. Realistický by měl být váš standardní odhad, se kterým jdete ven. Pesimistický si nechte v záloze pro interní plánování, ale zákazníkovi o něm nemluvte. Pokud mu řeknete rovnou nejhorší možný termín, budete vypadat neschopně; pokud mu dáte jen ten optimistický, riskujete zklamání.