Jak psát jednotkové testy v C

من كوبتيكبيديا
مراجعة ١٧:٥٩، ٢١ أغسطس ٢٠٢٦ بواسطة JamelRickard (نقاش | مساهمات) (أنشأ الصفحة ب'Mezi typické začátečnické chyby patří ignorování velikosti obrazů. Každý příkaz v Dockerfile vytváří vrstvu, a pokud stahujete velké základní obrazy bez potřebných nástrojů, výsledek nabobtná. Zkuste používat minimalistické varianty jako alpine a kombinovat příkazy RUN do jednoho řetězce s oddělovačem &&. Také se vyhněte spouštění kontejnerů jako root – v Dockerfile přidejte uživatele příkazem USER node a celý systém...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

Mezi typické začátečnické chyby patří ignorování velikosti obrazů. Každý příkaz v Dockerfile vytváří vrstvu, a pokud stahujete velké základní obrazy bez potřebných nástrojů, výsledek nabobtná. Zkuste používat minimalistické varianty jako alpine a kombinovat příkazy RUN do jednoho řetězce s oddělovačem &&. Také se vyhněte spouštění kontejnerů jako root – v Dockerfile přidejte uživatele příkazem USER node a celý systém bude bezpečnější. Až budete obraz hotový, nezapomeňte ho verzovat pomocí tagů, třeba docker build -t moje-app:v1 ..

Na závěr si zvykněte testy psát průběžně, ne až na konci projektu. Začněte s jednoduchou funkcí a postupně přidávejte další. Pokud narazíte na chybu, napište nejdříve test, který ji reprodukuje, a teprve poté opravujte kód. Tento postup vám ušetří spoustu času a zajistí, že se chyba už nevrátí. Až si osvojíte základy, podívejte se na pokročilejší funkce pytestu, jako jsou fixture s rozsahem, conftest.py nebo pluginy – ale to už je jiný příběh.

NoSQL není jeden nástroj, ale rodina databází, které se liší datovým modelem. Existují dokumentové (JSON), sloupcové, klíč-hodnota a grafové. Každý typ řeší jiné problémy. Dokumentové databáze se hodí pro obsahově heterogenní záznamy, které byste v SQL řetězili přes deset JOINů. Sloupcové jsou vhodné pro analytiku nad obrovskými tabulkami, kde čtete jen vybrané sloupce. Klíč-hodnota je extrémně rychlá pro jednoduché operace, a grafové databáze zase skvěle modelují vztahy – typicky sociální sítě, doporučovací systémy nebo řízení práv.

Nezapomínejte ani na testování okrajových případů. Mnozí vývojáři testují pouze šťastnou cestu (happy path), ale skutečná hodnota testů se projeví při zpracování prázdných vstupů, velkých čísel nebo neplatných argumentů. NUnit nabízí atribut [TestCase], který umožňuje předávat různé vstupy do jedné testovací metody. Tím se vyhnete kopírování kódu a snadno pokryjete více scénářů.

REST je ideální, když máte jednoduchou hierarchii zdrojů a klienti potřebují standardizovaný přístup. Například veřejné API pro třetí strany – zde je důležité, aby bylo snadno pochopitelné a stabilní. S GraphQL byste museli dokumentovat schéma a řešit složité dotazy, což může být pro externí vývojáře nepřehledné. Také pokud používáte HTTP metody pro akce, jako je mazání nebo aktualizace, REST poskytuje jasnou sémantiku, která se snadno testuje a monitoruje.

První praktický krok je instalace Dockeru. Na Linuxu využijete balíčkovací nástroj systému, na Windows a macOS stáhnete Docker Desktop. Po instalaci ověřte funkčnost příkazem docker --version a pak spusťte první kontejner: docker run hello-world. Tento miniaturní obraz vypíše zprávu a skončí. Všimněte si, že příkaz nejdřív obraz stáhne z registru a teprve potom spustí. To je normální chování – Docker pracuje s lokální cache, ale pokud obraz nemá, automaticky ho získá.

S jakými nedostatky se smíříte Než se rozhodnete, věnujte pozornost transakcím a konzistenci. Tradiční SQL poskytuje ACID – atomičnost, konzistenci, izolaci a trvanlivost. V NoSQL toto není vždy zaručeno na úrovni více dokumentů. Většina dokumentových databází podporuje transakce, ale obvykle jen v rámci jednoho dokumentu nebo malého rozsahu. Pokud potřebujete složité operace napříč mnoha záznamy s přísnými zárukami, NoSQL vás může nemile překvapit. Zkuste si před implementací napsat test, který ověří chování v kritických situacích – třeba souběžné zápisy a čtení.

Přispívání do open source projektů není jen o psaní kódu. Mnoho lidí si myslí, že musí být zkušený programátor, aby mohl pomoci. Opak je pravdou – projekty potřebují dokumentaci, testování, překlady, návrhy uživatelského rozhraní nebo správu komunit. Pokud chcete začít, prvním krokem je vybrat si projekt, který reálně používáte nebo který vás zaujme. Prohlédněte si jeho repozitář a zjistěte, jaká je struktura souborů, kde jsou diskuze a jakým způsobem se řeší úkoly. Většina zavedených projektů má v popisu sekci s pokyny pro přispěvatele – to je základní dokument, který byste měli přečíst dřív, než cokoliv uděláte.

Další pastí je cacheování. U REST můžete snadno použít HTTP cache, protože každá URL je jednoznačný identifikátor. U GraphQL se to komplikuje, protože všechny dotazy obvykle míří na jeden endpoint. Musíte proto implementovat cache na úrovni resolverů nebo použít nástroje pro persisted queries. Pokud to podceníte, výkon se zhorší a klienti budou čekat. Naopak výhodou je, že GraphQL vám umožní verzování bez nutnosti měnit endpointy – stačí upravit schéma a klienti si přizpůsobí dotazy.