0 votes
Častou chybou je příliš agresivní limit, který zablokuje i běžné procházení. Uživatel, který rychle kliká, může narazit. Proto vždy nastavte limit s rezervou a testujte. Další chyba je ignorování hlaviček z proxy. Pokud nepoužijete správné nastavení, všechny požadavky přijdou z IP proxy a vy zablokujete celý svět. Také nedělejte rate limiting na úrovni celé aplikace, pokud to není nutné. Lepší je aplikovat ho jen na kritické routy pomocí router-level middlewaru.

Kaskádové styly patří do samostatného souboru, ne do atributů přímo v HTML. Umožní vám to měnit vzhled celého webu z jednoho místa. Základní jednotkou je selektor, který určuje, na které prvky se pravidlo použije. Můžete vybírat podle názvu značky, třídy nebo identifikátoru. Třídy používejte opakovaně, identifikátory spíše výjimečně – jeden identifikátor může být na stránce jen jednou. Barvy, písmo, mezery a rozložení definujte pomocí vlastností, jako jsou barva textu, pozadí, okraje a vnitřní odsazení. Pro rozmístění prvků se naučte základy flexboxu a gridu. Obojí je dnes podporováno všemi moderními prohlížeči a výrazně zjednodušuje tvorbu responzivních layoutů.

Testování aplikací začíná u rozhodnutí, co vůbec ověřovat. Než napíšeš první test, sepiš si seznam rizik: co se stane, když aplikace spadne při přihlášení, když ztratí data, když pošle platbu dvakrát. Testy nemají pokrýt všechno, mají pokrýt to, co bolí nejvíc. Praktický postup je rozdělit aplikaci na vrstvy – datová logika, rozhraní, integrace – a pro každou zvolit jiný typ ověření. Bez tohoto rozdělení skončíš u hromady testů, které sice běží, ale nic nechrání.

Základem je izolovat testy od reálného času. Místo spoléhání na skutečné hodiny použijte knihovny pro mockování času. V jazycích jako Java, Python nebo JavaScript existují nástroje, které umožní simulovat posun času, opakované volání nebo přesné časové značky. Bez toho se testy stávají nespolehlivými – jeden den projdou, druhý ne, protože se změnil měsíc nebo přešlo letní čas.

Kde vzniká většina ch

Dynamická data v aplikacích znamenají, že se obsah mění v čase – ať už jde o časové značky, náhodné hodnoty, nebo data závislá na aktuálním stavu systému. Testovat takové aplikace vyžaduje jiný přístup než u statických dat. Nejde jen o to ověřit, zda se něco zobrazí, ale zda se to zobrazí správně v každém okamžiku a za každých podmínek.

Zvlášť opatrně nastavte limit pro zápisové operace. Požadavky na vytvoření účtu, odeslání komentáře nebo nahrání souboru mají být výrazně omezené. Naopak statické soubory a obrázky by měly být z limitu vyjmuté, ideálně přes reverzní proxy. Do middlewaru přidejte skip pro zdravotní kontrolu a interní volání. Bez toho vám monitoring nebo load balancer může vyčerpat kvótu a aplikace přestane odpovídat.

Zvláštní pozornost věnujte časovým pásmům a formátům. Aplikace mohou zobrazovat čas v lokálním pásmu, ale ukládat v UTC. Testy by měly pokrýt přechody mezi pásmy, letní a zimní čas, ale i různé formáty data – například americký vs. evropský. Bez toho snadno přehlédnete chybu, která se projeví jen uživatelům v jiné zemi.

Jak pracovat s náhodou a závislostmi Dalším problémem jsou náhodná data. Pokud aplikace generuje náhodná čísla, ID nebo řetězce, test nesmí záviset na konkrétní hodnotě. Místo toho ověřujte vlastnosti – formát, rozsah, unikátnost. Nebo náhodu nahraďte deterministickým generátorem, který v testovacím prostředí vrací vždy stejnou posloupnost. Tím dosáhnete reprodukovatelných výsledků.

Na závěr: dynamická data nejsou nepřítel, pokud je dokážete zastavit a zopakovat. Klíčem je determinismus – každý test by měl mít pevně dané vstupy i očekávané výstupy. Když to dodržíte, budou vaše testy spolehlivé a odhalí skutečné chyby, ne jen náhodné výkyvy.

Častou chybou je testování proti produkční databázi nebo živému API. Dynamická data se mohou kdykoli změnit a testy pak selhávají z nesprávných důvodů. Vždy používejte oddělené testovací prostředí s vlastní sadou dat, kterou máte plně pod kontrolou. Pokud to nejde, alespoň data před testem zaznamenejte a po testu obnovte.
ago by (120 points)

Your answer

Privacy: Your email address will only be used for sending these notifications.
...