Python nabízí dva hlavní přístupy k testování: vestavěný modul unittest a knihovnu pytest. Zatímco unittest vychází z Javy a vyžaduje třídy a dědičnost, pytest stojí na jednoduchých funkcích a assertech. Rozdíl se projeví hned na prvním testu. V unittest napíšete metodu uvnitř třídy odvozené od TestCase a porovnání řešíte přes self.assertEqual. V pytestu stačí funkce a běžný příkaz assert. To je důvod, proč si pytest získal širokou oblibu.
Začněte tím, že si před odhadem ujasníte, kde analytika končí a implementace začíná. Analytika obvykle zahrnuje sběr požadavků, rozpracování scénářů, návrh datových toků, dohodu s byznysem a zápis akceptačních kritérií. Implementace je pak samotný kód, testy, revize a nasazení. Pokud tyto hranice nejsou pojmenované, lidé si pod pojmem „hotovo” představují různé věci a odhad se rozpadne při prvním upřesňování.
Dalším častým omylem je domněnka, že stačí ošetřit vstup na začátku aplikace. Data se mohou dostat do dotazu i z databáze, z mezipaměti, ze souboru nebo z externího rozhraní. Stejně nebezpečné je spoléhat na to, že magické uvozovky nebo automatické escapování vyřeší vše. Escapování je vázané na konkrétní znakovou sadu a konkrétní databázi. Při nesprávném nastavení připojení může být obejité. Parametrizace žádné takové podmínky nemá.
Volba mezi REST a GraphQL se nepozná podle toho, co je modernější, ale podle tvaru dat a počtu klientů. REST je sada samostatných endpointů, každý vrací pevnou strukturu. GraphQL je jeden endpoint s dotazovacím jazykem, kde si klient určí, která pole chce. První otázka tedy zní: mají klienti podobné potřeby, nebo se výrazně liší? Pokud ano, GraphQL šetří přenos dat i počet verzí. Pokud ne, REST je jednodušší na pochopení i provoz.
Nakonec se nebojte kombinace. REST pro veřejné a souborové endpointy, GraphQL pro složité čtecí scénáře uvnitř produktu. Rozhodujte podle konkrétních dotazů, které klienti posílají, ne podle toho, co zní moderněji. Změřte počet požadavků na obrazovku, velikost odpovědí a dobu odezvy. Teprve čísla ukážou, zda se vyplatí měnit architekturu.
U RESTu platí, že čím víc klientů s odlišnými obrazovkami, tím víc endpointů nebo parametrů vzniká. Typická chyba je přidávat parametry jako include=author,comments,tags a postupně z toho udělat druhý, nezdokumentovaný jazyk. Řešení je verzovat API a držet každý endpoint odpovědný za jednu jasnou reprezentaci zdroje. U GraphQL je zrcadlově častou chybou nechat klienta dotazovat se do hloubky bez omezení. Nekonečné vnořování vztahů přetíží databázi. Nastavte limit hloubky dotazu a maximální počet objektů v jedné odpovědi.
Rozvržení se dnes nedělá pomocí tabulek ani plovoucích prvků, ale pomocí mřížky a flexboxu. Flexbox stačí na řazení prvků vedle sebe nebo pod sebe, mřížka zvládne složitější rozvržení se sloupci a řádky. Oba nástroje jsou součástí CSS a nepotřebujete k nim žádnou knihovnu. Kdo je zvládne, obejde se bez zbytečných závislostí a jeho stránky se načtou rychleji.
Kde se rozhoduje v praxi GraphQL se vyplatí, když frontend skládá obrazovku z mnoha entit a nechce posílat pět požadavků. Jeden dotaz vrátí přesně to, co komponenta potřebuje. Naopak pro veřejné API, webhooky, nahrávání souborů nebo jednoduché CRUD operace je REST přirozenější. GraphQL nad soubory neumí dobře pracovat, stejně tak u dlouhých operací narazíte na to, že dotazovací jazyk není stavový. Pro běžné čtení a zápis jednoho záznamu je REST kratší cesta k hotové funkci.
Pokrytí kódu testy se často bere jako univerzální metrika kvality. Jenže číslo samo o sobě nic neříká o tom, zda testy skutečně odhalují chyby. Tým, který honí stovku procent, často píše testy, jež procházejí, ale nic netestují. První krok je přestat se ptát „kolik procent máme” a začít se ptát „co nám ty testy skutečně zachytí”.
Zvažte i tým a nástroje. GraphQL vyžaduje schéma, které se musí udržovat, a klienti často generují typy. To je výhoda v typovaných jazycích, ale znamená to další krok v CI. REST zvládne i malý tým bez speciálních znalostí. Pokud potřebujete rychle dodat první verzi a rozsah dat je malý, začněte RESTem. GraphQL přidejte ve chvíli, kdy vás opakované požadavky na složení dat skutečně brzdí, ne dřív.
U GraphQL počítejte s tím, že cache je složitější. HTTP cache podle URL nefunguje, protože vše jde na jeden endpoint přes POST. Musíte zavést vlastní cache na straně klienta nebo persistované dotazy. U RESTu stačí správně nastavit Cache-Control a ETag. Další častá chyba je u GraphQL bezmyšlenkovitě mapovat resolver na databázový dotaz. Vzniká N+1 problém. Řešením je dávkování požadavků v rámci jednoho resolveru, tedy načtení více záznamů jedním dotazem místo smyčky.
Should you adored this information as well as you wish to obtain more info with regards to rekonstrukce koupelny krok za krokem generously stop by our own web site.