5 způsobů, jak zrychlit načítání webu bez ztráty kvality
Nakonec si uvědomte, že pyramida není dogma. Někdy má smysl přidat více integračních testů, pokud máte složité doménové služby. Jindy zase můžete end-to-end testy omezit na minimum, protože máte silné API. Klíčové je, aby struktura testů odpovídala rizikům vaší aplikace. Pravidelně testovou sadu revidujte – staré a nepoužívané testy odstraňte nebo je přesuňte na nižší úroveň. O pyramidě přemýšlejte jako o živém organismu, který se musí přizpůsobovat změnám v kódu.
Akce by měly být co nejjednodušší a popisovat událost, ne co se má stát. Typická chyba je vytvářet akce typu SET_USER_AND_LOAD_ORDERS_AND_UPDATE_CART, které v sobě mísí více zodpovědností. Pak je těžké testovat a ladit. Místo toho rozdělte akce na malé, atomické – SET_USER, LOAD_ORDERS, UPDATE_CART. Reducer by měl být synchronní a neměl by provádět žádné vedlejší efekty, jako je volání API nebo zápis do lokálního úložiště. Tyto operace patří do middleware, nejlépe do Redux Thunk nebo Redux Toolkit. Pokud toto nerespektujete, dostanete se do stavů, kdy akce spouští jiné akce a vy ztrácíte přehled o toku dat.
Testovací pyramida není jen hezký obrázek z přednášek o kvalitě kódu. Je to praktický nástroj, který vám pomůže udržet testovací sadu rychlou, stabilní a hlavně užitečnou. Pokud ji ignorujete, dříve nebo později narazíte na situaci, kdy spuštění všech testů trvá hodiny, každá změna v kódu rozbije desítky testů a nikdo už neví, co vlastně testy ověřují. Tento článek se zaměřuje na to, jak pyramidu skutečně použít, na co si dát pozor a jakým chybám se vyhnout.
Druhý typický problém je příliš mnoho testů na stejné úrovni, ale s duplicitním pokrytím. Pokud máte integrační test, který ověřuje zápis do databáze, a zároveň end-to-end test, který dělá to samé přes API, jen plýtváte časem. Každá úroveň má jiný účel. Jednotkové testy chytají chyby v logice, integrační testy kontrolují, že spolu komponenty komunikují správně, a end-to-end testy ověřují, že uživatel projde aplikací bez zaváhání. Než napíšete nový test, zeptejte se: „Jakou chybu chci chytit?" Pokud odpověď je „nevím", test je zbytečný.
První automatizační skript zkuste udělat na něčem jednoduchém, třeba na hromadném přejmenování souborů ve složce. Použijte modul os a funkci listdir, která vrátí seznam souborů. Poté pro každý soubor vytvořte nový název a použijte os.rename. Důležité je správně ošetřit cesty, aby skript fungoval bez ohledu na to, kde se spouští. Používejte absolutní cesty nebo cestu z proměnné __file__. Častou chybou je zapomenout na to, že v názvech souborů mohou být mezery nebo diakritika, což skripty snadno rozbije.
Většina inzerátů na pozici testera vyžaduje alespoň rok praxe. Jenže praxe se dá získat i bez oficiálního zaměstnání — stačí začít testovat vlastní projekty, cizí aplikace nebo open-source nástroje. Nejdůležitější je, abyste uměli svou činnost zdokumentovat a předvést. Personalisté nehledají někoho, kdo už testoval v korporátu, ale někoho, kdo prokáže schopnost najít chybu, popsat ji a ověřit, že je opravená. Pokud tohle zvládnete, praxe v CV je jen formalita.
Začít s Pythonem kvůli automatizaci je prakticky nejlepší volba. Skripty v Pythonu zvládnou přejmenovávat soubory, stahovat data z webu, posílat e-maily nebo ovládat aplikace přes rozhraní. Nejdůležitější je ale vědět, že automatizace neznamená psát složité programy od nuly. Stačí umět propojit hotové moduly a funkce. Tím se liší od vývoje velkých aplikací, kde jde o architekturu a dlouhodobou údržbu. Pro automatizaci potřebujete spíš schopnost rychle řešit konkrétní problém.
Než začnete, nainstalujte si Python a některé knihovny. Nejjednodušší je použít oficiální instalační balíček a příkazový řádek. Pro automatizaci se hodí hlavně knihovny jako os, shutil, subprocess nebo requests. Ty jsou buď součástí standardní knihovny, nebo se dají doinstalovat přes správce balíčků. Pozor na to, že v Pythonu 2 a 3 jsou rozdíly v syntaxi. Doporučuji používat Python 3, protože je modernější a podporovaný. Pokud máte v systému víc verzí, vždy kontrolujte, kterou spouštíte příkazem python --version.
Rychlost načítání webu rozhoduje o tom, zda návštěvník zůstane, nebo odejde ke konkurenci. Pomalé stránky také zhoršují pozici ve vyhledávačích. Optimalizace přitom nemusí být složitá ani drahá. Stačí se zaměřit na pět klíčových oblastí, které přinesou měřitelný výsledek během několika hodin práce.
Při práci s Reduxem v Reactu narazíte na jeden zásadní problém: jakmile začnete ukládat do store vše, co vás napadne, aplikace se začne zpomalovat. Redux totiž není databáze ani univerzální úložiště pro všechny komponenty. Jeho smysl je centralizovat stav, který je skutečně globální – přihlášení uživatele, nastavení motivu, košík. Lokální stav jako text v inputu, otevřený dropdown nebo dočasná hodnota formuláře by měl zůstat v useState nebo useReducer. Jinak každý úhoz do klávesnice spustí update celého stromu komponent, které jsou na store navázané, a to je cesta k trhání.