Jak se bránit SQL injection ve webových aplikacích
Další pastí je spouštění kontejnerů v popředí bez správného nastavení portů. Pokud vaše aplikace naslouchá na portu 3000, ale vy ji chcete vidět na portu 8080, použijte docker run -p 8080:3000 -d nazev-obrazu. Přepínač -d spustí kontejner na pozadí. Nezapomeňte také na pojmenování kontejneru pomocí --name, jinak dostanete náhodné jméno jako „romantic_hoover". Pro zastavení použijte docker stop jmeno-kontejneru a pro smazání docker rm jmeno-kontejneru. Bez těchto základů budete mít na disku hromadu mrtvých kontejnerů.
Měření pokrytí testy je častým tématem diskuzí mezi vývojáři. Mnoho týmů se zaměřuje na procenta bez hlubšího zamyšlení, což vede k falešnému pocitu bezpečí. Pokrytí samo o sobě není cíl, ale nástroj. Abyste z něj dostali maximum, musíte vědět, jak ho správně měřit a kdy přestat honit čísla.
Základním pravidlem je používat parametrizované dotazy neboli prepared statements. Místo skládání řetězce, kde se uživatelský vstup přímo vkládá do SQL příkazu, předáte dotaz databázi s placeholdery a hodnoty dodáte zvlášť. Tím se zajistí, že vstup je vždy interpretován jako data, nikoli jako součást SQL syntaxe. Tento postup funguje ve všech moderních jazycích – ať už použijete PDO v PHP, prepared statements v Javě, .NET, Pythonu nebo Node.js. Vyhněte se ručnímu escapování, které je náchylné k chybám a často se obejde alternativními znakovými sadami.
Automatizace a nástroje pro testování Pro automatizované testy se vyplatí investovat čas do výběru správného nástroje. Mezi oblíbené patří frameworky pro jednotkové testy, které se spouštějí při každém buildu. Pro UI testy, které ověřují chování aplikace z pohledu uživatele, použijte nástroje schopné simulovat dotyky a gesta. Pozor na to, že automatizace není všelék. Nejprve si ověřte, že jsou testy stabilní, nespolehlivé automatické testy vás budou stát více času než ruční testování.
Psaní Dockerfile: kde začít a co nepodcenit Srdcem každého projektu je soubor Dockerfile. Je to recept, podle kterého Docker postaví váš obraz. Začněte jednoduše: FROM node:20-alpine jako základ pro Node.js aplikaci, WORKDIR /app určí pracovní složku, COPY package*.json ./ zkopíruje soubory se závislostmi a RUN npm install je nainstaluje. Až pak kopírujte zbytek zdrojového kódu příkazem COPY . .. Toto pořadí je klíčové – Docker ukládá každou vrstvu do mezipaměti, takže při změně kódu se nemusí znovu instalovat balíčky. Častá chyba začátečníků je kopírovat vše najednou, čímž přijdou o výhodu cachování a buildy trvají zbytečně dlouho.
Začít s programováním v C# nemusí být složité. Nejlepší způsob, jak si osvojit základy, je vytvořit si jednoduchou konzolovou aplikaci. Konzolová aplikace je program, který běží v textovém okně a komunikuje s uživatelem prostřednictvím příkazového řádku. Je to ideální prostředí pro pochopení základních konstrukcí jazyka, jako jsou proměnné, podmínky, cykly a metody. V tomto návodu si krok za krokem postavíme funkční aplikaci, která bude načítat vstup od uživatele a podle něj reagovat.
Když zákazník uslyší „bude to za tři dny", automaticky to bere jako závazek. I když dodáte o den dřív, problém není v rychlosti, ale v tom, že jste slíbili něco, co jste nemohli garantovat. Komunikace odhadu času není o tom, co zvládnete, ale o tom, co dokážete obhájit. Základem je oddělit přání od reality: co chcete stihnout, a co je skutečně reálné při běžném provozu.
Testování mobilních aplikací se od testování webových stránek liší v mnoha ohledech. Musíte počítat s různými velikostmi obrazovek, verzemi operačních systémů, typy připojení a také s omezenými hardwarovými prostředky. Základní rozdělení je na testování funkční, výkonnostní a uživatelské. Funkční testy ověřují, zda aplikace dělá to, co má, výkonnostní testy se zaměřují na rychlost a stabilitu a uživatelské testy sledují, jak se s aplikací pracuje reálným lidem.
Pamatujte, že pokrytí testy je jen jeden z mnoha ukazatelů kvality. Nepoužívejte ho jako jediný cíl. Doporučuji kombinovat ho s mutačním testováním, které ověřuje, zda testy skutečně odhalí vložené chyby. Pokud vám mutační testy ukazují slabé testy, i při vysokém pokrytí, je čas přestat honit čísla a zaměřit se na kvalitu testovacích případů. Stanovte si hranici, kdy je pokrytí dostatečné — pro mnoho projektů je 70–80 % rozumný cíl, ale kritické systémy vyžadují více. Hlavní je, abyste měřili pokrytí vždy s rozmyslem a nenechali se zlákat čísly bez kontextu. Když se to naučíte, pokrytí se stane užitečným pomocníkem, ne bičem.
Klíčové je sledovat pokrytí v kontextu rizik a složitosti. Použijte metriky jako cyklomatickou složitost k identifikaci nejkritičtějších metod a pro ně nastavte přísnější požadavky na pokrytí. Pro jednoduché části kódu si vystačíte s nižším číslem. Místo celkového procenta si definujte pravidla: nový kód musí mít alespoň 80% pokrytí větví, ale starší kritické části musí mít 100 % pro klíčové scénáře. Když testy začnou bránit refaktorování nebo vývoji nových funkcí, protože se neustále upravují kvůli překročení limitu, je to známka, že jste za hranicí užitečnosti.