Když potřebujete ověřit API, Postman zvládne víc než jen odeslat požadavek

Z Mazovia


Na co si dát pozor: neslibujte, rekonstrukce koupelny krok za krokem že automatizace odstraní všechny chyby, a nezavádějte nástroje dřív, než víte, jaký problém řeší. Nekupujte řešení pro stovky služeb, když jich máte pět. A hlavně — měřte. Počet nasazení za týden, doba od commitu k produkci a četnost incidentů řeknou o pokroku víc než pocit, že „už jsme moderní".

První věc, kterou sdílená databáze rozbije, je izolace testů. Jakmile dva týmy používají stejnou instanci, přestává platit, že test projde nebo neprojde podle stavu kódu. Projde podle toho, kdo zrovna naposledy spustil migraci, kdo nechal v tabulce testovací uživatele a kdo smazal seed data. Typický důsledek: vývojáři přestanou věřit červeným testům, začnou je vypínat a pyramida se sesype na hromadu přeskočených testů.
Pro řetězení požadavků použijte proměnné, které nastavíte v testu předchozího volání. Když například vytvoříte záznam, uložte si jeho identifikátor do proměnné a v dalším požadavku ho použijte. Tím vzniká scénář, který se dá spustit celý najednou. Pozor na pořadí: testy se vykonávají až po přijetí odpovědi, takže na proměnnou z prvního požadavku se ve druhém spoléhejte jen tehdy, když oba běží ve stejném běhu kolekce.

Kde přesně se pyramida láme Unit testy by neměly sahat na databázi vůbec. Pokud ale tým tvrdí, že „to bez databáze nejde", je to signál, že logika je příliš svázaná s perzistentní vrstvou. Řešením není dát unit testům přístup do sdílené databáze, ale oddělit doménovou logiku od repozitářů. Integrační testy naopak databázi potřebují, ale každý běh musí mít vlastní izolovaný prostor. Nejčastější chyba je, že týmy používají jednu schéma a spoléhají na to, že si navzájem nebudou překážet. Nepřekážejí si jen do chvíle, než někdo spustí testy paralelně.

Osvědčuje se nechat kolegu vlastními slovy zopakovat, co smí a co ne. Tím zjistíte, zda pochopil, a zároveň si to sám upevní. Pokud si není jistý, ať se raději zeptá před použitím než po něm. Doporučte mu ukládat si konkrétní licenční texty k projektům, ve kterých je použil. Až se za půl roku objeví spor nebo kontrola, bude mít po ruce doklad, ze kterého vycházel. Právní jistota nevzniká z memorování, ale z toho, že člověk ví, kde hledat a kdy se zastavit.
Sdílená databáze mezi týmy je jeden z nejčastějších zdrojů tichého rozpadu testovací pyramidy. Na papíře máte unit testy dole, integrační uprostřed a end-to-end nahoře. V praxi ale několik týmů píše do stejné databáze, takže se vám pyramida převrátí, aniž by si toho někdo všiml. Unit testy začnou potřebovat připojení k síti, integrační testy závisí na datech, která někdo jiný právě přepsal, a end-to-end scénáře padají z důvodů, které s kódem nemají nic společného.

Než začnete mluvit, projděte si licenci sami a označte tři až pět bodů, které se týkají konkrétní činnosti kolegy. Typicky jde o to, zda smí obsah upravovat, zda ho smí šířit dál, zda ho smí použít komerčně a zda musí uvádět autora. Tyto čtyři otázky pokrývají většinu každodenních situací. Když je kolega schopen odpovědět na ně, má praktický základ a detaily si případně dohledá.

Nakonec myslete na to, že náhrady musí být viditelné v kódu. Skryté přepínače nebo magické proměnné prostředí, které mění chování podle toho, kde se test spustí, vedou k situaci, kdy nikdo neví, co se vlastně testuje. Pojmenujte náhrady jasně, dejte je do testovací složky a v produkčním kódu je nepoužívejte. Testy s datovými závislostmi pak poběží rychle, opakovatelně a bez překvapení.

Další častá chyba je přílišná náhodnost. Test, který při každém běhu vytvoří jiná data, je sice dynamický, ale také nereprodukovatelný. Když spadne v CI, nemáte jak zjistit, co přesně vstoupilo. Proto je dobré logovat vygenerované hodnoty nebo používat seed, který lze z příkazu předat. Tím získáte výhody obojího: rozmanitost i dohledatelnost.

Praktické řešení má dvě roviny. Na úrovni infrastruktury zaveďte pro každý testovací běh vlastní databázi nebo alespoň vlastní schéma, které se po skončení zahodí. Většina nástrojů pro orchestraci kontejnerů to dnes zvládne bez velkých nákladů. Na úrovni procesu se dohodněte, že migrace se aplikují před každým během, ne ručně a ne „jednou za týden". Pokud migrace trvá dlouho, rozdělte ji na rychlou část pro testy a zbytek řešte mimo kritickou cestu.

Pátým krokem je změna odpovědnosti a komunikace. Vývojáři by měli vidět, jak jejich kód běží v provozu, a provoz by měl mít možnost ovlivnit, co se nasazuje. Společné schůzky, sdílené metriky a jeden jasný postup při výpadku dělají víc než jakákoli technologie. Vyhněte se tomu, aby DevOps byl jen nový název pro tým, který dělá totéž co dřív.

If you cherished this article so you would like to acquire more info regarding ProměNa Bytu please visit the web site.