Poslední věc, kterou vývojáři podceňují, je testování s lidmi. Nemusít…
페이지 정보

본문
Kde končí unit test a začíná integrace Integrační testy ověřují, že spolu komponenty mluví správně: že se data uloží a zase načtou, že se zpráva doručí, že se transakce potvrdí. Bývají pomalejší a potřebují reálnější prostředí, proto jich má být výrazně méně než unit testů. Pomáhá jim vlastní databáze nebo kontejner, který se před každým během čistě připraví. Pozor na sdílený stav mezi testy — náhodné pády způsobené zbytky z předchozího běhu patří k nejčastějším problémům.
Scrum vypadá na papíře jednoduše: tři role, pět událostí, tři artefakty. V praxi českých vývojářských týmů ale nejčastěji selhává na něčem jiném než na neznalosti rámce. Týmy zavedou standup, sprint review i retrospektivu, ale stejně nedodají, co slíbily, a sprint se promění v tichou dohazovačku termínů. Důvod bývá jeden: nikdo neřekl produktovému vlastníkovi, že jeho práce nekončí sepsáním požadavků.
Další častá chyba je testování přes příliš mnoho vrstev. Integrační test, který prochází celou aplikací včetně autentizace, plateb a e-mailů, je pomalý a křehký. Vyplatí se testovat integraci po menších celcích: zvlášť repository proti databázi, zvlášť HTTP handler proti službě. Tyto testy se dají spouštět paralelně a izolovaně, což při růstu codebase rozhoduje o tom, zda sada běží minuty, nebo hodiny. Pokud test potřebuje vlastní databázi, použijte kontejner spuštěný pro testovací běh, ne sdílenou instanci, do které se vám míchají data z jiných testů.
U integračních testů dávejte pozor na sdílený stav. Testy, které si navzájem mění data v databázi, jsou zdrojem náhodných pádů, které se těžko reprodukují. Řešením je izolace – každý test si připraví vlastní data a po sobě je uklidí, nebo běží v transakci, která se na konci vrátí. Nikdy nespoléhejte na to, že testy poběží v určitém pořadí. Jakmile jeden test závisí na výstupu jiného, při růstu kódu se z toho stane neřešitelný problém.
Když stejný objekt potřebujete ve více testech, nekopírujte ho. Definujte funkci s dekorátorem @pytest.fixture a její jméno uveďte jako parametr testu. pytest ji zavolá před testem a výsledek předá. Pro přípravu a úklid použijte yield místo return: kód před yield proběhne na začátku, kód po něm na konci, i když test selže. Tím se zbavíte ručního zavírání souborů a připojení, která občas zůstanou otevřená. Pozor na fixtury s širokým rozsahem – pokud mění globální stav, ovlivní i testy, které ji nepoužívají.
Rychlost je druhá věc, kterou je potřeba hlídat. Jednotkové testy by měly běžet v řádu sekund, integrační mohou trvat déle, ale neměly by blokovat vývoj. Pomáhá spouštět jednotkové testy při každé změně a integrační v rámci většího celku, například před sloučením změn. Pokud integrační testy trvají příliš dlouho, často to znamená, že jich je zbytečně mnoho nebo že testují příliš mnoho najednou.
Poslední věc, kterou vývojáři podceňují, je testování s lidmi. Nemusíte dělat rozsáhlý výzkum. Stačí pět kolegů, kteří zkusí splnit konkrétní úkol a vy mlčíte. Sledujte, kde se zaseknou, co přehlédnou a co je donutí kliknout jinam, než jste zamýšleli. Každé takové místo je konkrétní oprava zadání, ne názor na estetiku. UI/UX pro vývojáře není o vkusu, ale o odstranění tření mezi záměrem a akcí.
Jakmile projekt přeroste několik desítek modulů, sada testů se začne chovat jinak než na začátku. Jednotkové testy, které dřív běžely pár sekund, najednou trvají minuty a integrační testy padají z důvodů, které s kódem nesouvisí. Řešení není psát méně testů, ale rozdělit je podle toho, co skutečně ověřují a jaké riziko pokrývají.
Testovací pyramida není dogma, které musíte slepě následovat. Je to model, který popisuje, kolik testů jakého druhu má smysl psát, aby byla zpětná vazba rychlá a údržba snesitelná. Základ tvoří mnoho malých unit testů, uprostřed jsou integrační testy a na špičce několik end-to-end scénářů. Když se poměr obrátí, testy začnou trvat dlouho, padají z nesouvisejících důvodů a nikdo je nechce opravovat.
Rozložení se v čase mění. Zpočátku může převládat několik integračních testů, postupně ale přidávejte unit testy pro každou novou logiku. Sledujte dobu běhu sady: pokud přesáhne několik minut, hledejte, které testy ji zdržují, a přesuňte je do pomalejší vrstvy. Nekopírujte stejný scénář ve všech třech vrstvách, jen tím násobíte údržbu. Každou chybu, která proteče, zachyťte testem na nejnižší možné úrovni a teprve když to nejde, vyšplhejte výš.
End-to-end testy nechte jen na kritické cesty: přihlášení, dokončení interiéru objednávky, odeslání platby. Simulují reálné uživatele a odhalí chyby v propojení, ale jsou pomalé a křehké. Když jich máte desítky, přestanou se hodit k rychlé zpětné vazbě. Držte je v malém počtu a spouštějte je v prostředí, které se co nejvíc blíží produkci, ale s izolovanými daty.
If you cherished this short article and you would like to get extra information concerning na této stránce kindly take a look at our web site.
- 이전글Urządzasz dom niszowo? Ten błąd psuje efekt 26.10.03
- 다음글Čím upevnit těžší předmět do sádrokartonu, aby držel? 26.10.03
댓글목록
등록된 댓글이 없습니다.
