Testovací pyramida není jen módní pojem, ale praktický nástroj, který vám pomůže udržet testy rychlé, stabilní a hlavně užitečné. Princip je jednoduchý: na spodku pyramidy stojí mnoho rychlých a levných jednotkových testů, uprostřed méně integračních testů a na vrcholu minimum pomalých end-to-end testů. Pokud tuto strukturu dodržíte, If you have any questions concerning in which and how to use Politiballwiki.net, you can get hold of us at our own web site. získáte sadu, která odhalí chyby rychle a nezdržuje vývoj.
První kontejner: od Dockerfile po spuštění Do Dockerfile napište: FROM python:3.12-alpine, WORKDIR /app, COPY . /app, RUN pip install flask a CMD ["python", "app.py"]. Poté ve stejném adresáři vytvořte soubor app.py s jednoduchým Flask serverem, který vrací text „Ahoj z kontejneru". Sestavte obraz příkazem docker build -t muj-web . (tečka na konci je důležitá). Spuštění provedete přes docker run -p 5000:5000 muj-web. První parametr -p mapuje port hostitele na port v kontejneru – bez toho se k serveru zvenčí nedostanete.
Integrační testy pak ověřují, že vaše moduly spolupracují správně. Tady už přichází na řadu skutečná databáze, testovací kontejnery nebo externí služby. Důležité je, aby tyto testy běžely v izolovaném prostředí – ideálně s testovacími daty, která jsou předem připravená a po testu se vyčistí. Typická chyba: integrační test, který spoléhá na pořadí spuštění nebo sdílený stav mezi testy. To vede k náhodným selháním a ztrátě důvěry v sadu.
Docker změnil způsob, jakým vyvíjíme a nasazujeme aplikace. Místo instalace závislostí přímo do systému si vystačíte s izolovaným prostředím, které je reprodukovatelné na jak zařídit malou kuchyniémkoli počítači. Pro začátečníka může být ale první setkání s kontejnery matoucí. Základní myšlenka je přitom jednoduchá: obraz (image) definuje přesný obsah prostředí a kontejner je jeho běžící instance. Tento článek osvětlení v obývákuás provede prvním projektem bez zbytečné teorie.
Typickou chybou je nesprávné ověřování podpisu na straně serveru. Vždy ověřte podpis, expiraci, ale i to, že token byl vydán pro vaši API (audience) a že pochází od vás (issuer). Ignorování těchto nároků umožňuje útočníkovi použít token z jiné služby. Také kontrolujte, že token nebyl revokován. Pokud máte požadavek na okamžité odvolání přístupu (např. při změně hesla), musíte mít na serveru seznam zneplatněných tokenů (např. v paměti nebo v databázi). JWT je statický, takže sám o sobě neumožňuje zneplatnění před expirací.
Životní cyklus tokenu a jeho expirace JWT token by měl mít krátkou dobu platnosti, typicky minuty až hodiny, ne dny. Dlouhá expirace zvyšuje riziko zneužití, pokud token unikne. Pro prodloužení přístupu používejte refresh tokeny, které jsou uložené na serveru, mají delší platnost a lze je odvolat. Při každém obnovení přístupového tokenu ověřte, že refresh token je stále platný a že uživatel má stále oprávnění. Nikdy neposílejte token v URL, protože se může zalogovat do historie prohlížeče nebo proxy serveru. Používejte hlavičku Authorization s formátem 'Bearer '.
Typické chyby, kterých se vyvarujte: psaní testů až po implementaci (testy pak jen potvrzují chování, ale nechrání před regresí), testování přes uživatelské rozhraní na úrovni jednotkových testů, používání reálných externích služeb v integračních testech (místo toho použijte nástroje pro virtualizaci služeb) a ignorování pomalých testů – pokud je test pomalý, vývojáři ho přestanou spouštět a ztratí jeho hodnotu. Naopak se vyplatí investovat do testovacích dat, která jsou deterministická, a do čistění stavu mezi testy.
Nejprve si nainstalujte Docker podle oficiální dokumentace pro váš operační systém. Po instalaci ověřte funkčnost příkazem docker --version. Pokud vidíte číslo verze, máte hotovo. Dále si vytvořte pracovní adresář a v něm soubor s názvem Dockerfile. Tento soubor je receptem, podle kterého Docker sestaví obraz. Pro ukázku použijeme jednoduchý webový server v Pythonu – stačí pět řádků, ale princip je univerzální.
Než začnete psát vlastní obsah, pochopte, jaký je rozdíl mezi blokovými a řádkovými elementy. Blokové jako
nebo zabírají celou šířku a začínají na novém řádku. Řádkové jako nebo se vkládají do textu a nezalamují řádek. Pokud tento princip smícháte, výsledek nebude odpovídat vašim představám. Typická chyba začátečníků je vkládání blokových prvků do řádkových, což v prohlížeči vede k neočekávaným posunům.
Začněte tím, že si ujasníte, co chcete testy chránit. Jednotkové testy by měly pokrývat čistou byznys logiku, algoritmy a pomocné funkce, které nevyžadují žádnou infrastrukturu. Pokud píšete testy pro třídy, které komunikují s databází, souborovým systémem nebo externími službami, nejedná se o jednotkové testy, ale o testy integrační. To je nejčastější chyba – vývojáři označí test za jednotkový, i když ve skutečnosti spouští celý modul se závislostmi, a pak se diví, že je pomalý a nestabilní.