GitHub Actions versus tradiční CI/CD: co vám ušetří hodiny práce

From IT-Core
Jump to navigation Jump to search


Další pastí je asynchronní kód. Pokud testujete metody vracející Task, použijte atribut [Test] na asynchronní metodu a místo Assert.AreEqual raději využijte Assert.That s odpovídajícími matchery. NUnit podporuje async metody od verze 3, takže se nebojte psát await přímo v testu. Vyhnete se tak zablokování vlákna a nesprávným výsledkům. Nezapomeňte ani na testování výjimek – pomocí Assert.Throws ověříte, že metoda správně selže, a to je často stejně důležité jako testování šťastné cesty.

Prakticky začněte třeba tím, že zavedete automatické buildu při každém commitu. Jakmile to běží alespoň měsíc, přidejte automatické nasazení do stagingu a pak už jen drobné kroky – jako je automatické vrácení změn při selhání testů. Častou chybou je ale zapomenout na bezpečnost: přístupová práva k produkci by měla být minimální a všechny změny by měly být zaznamenané. Nebojte se začít bezpečnostními skeny už v CI – je to levnější než řešit únik dat později.

Při práci s poli a mapami se vyplatí používat generické typy. Místo string[] zkuste Array a když používáte Map, vždy specifikujte klíč i hodnotu. Tím předejdete situacím, kdy z mapy vytahujete prvek, který neexistuje, a dostanete undefined místo očekávané hodnoty. Právě takovéto drobnosti dělají z TypeScriptu silný nástroj pro týmovou spolupráci.
Nejprve si osvojte základní zápis. Pokud máte funkci, která přijímá číslo a vrací řetězec, napište to explicitně. Typové anotace nejsou jen dekorace – jsou to smlouvy, které Editor i kompilátor kontrolují. Začněte s primitivy, ale brzy přejděte k definici vlastních rozhraní. Tím získáte to, co je na TypeScriptu nejcennější: samodokumentující kód, který ostatní přečtou rychleji.

Verzování nemusí být žádná magie. Git je nástroj, který sleduje změny ve vašich souborech a umožňuje se kdykoli vrátit k dřívějšímu stavu. Než začnete, nainstalujte si Git a otevřete terminál ve složce projektu. Pak spusťte příkaz git init, který vytvoří skrytou složku .git. Od té chvíle Git ví, že má hlídat všechny soubory v daném adresáři.

Druhý rekonstrukce koupelny krok za krokem: vyberte si jeden tým a jeden projekt, kde DevOps vyzkoušíte. Nezavádějte nové postupy celoplošně, protože to skončí odmítnutím a chaosem. Dejte týmu volnost zvolit si konkrétní nástroje, ale stanonte jasné cíle: automatizované nasazení, sdílená odpovědnost za provoz, rychlejší reakce na chyby. Méně je někdy více – nepotřebujete deset nástrojů, stačí jeden na CI, jeden na konfiguraci a jeden na monitoring.

Pro efektivní caching závislostí použijte built-in cache action. Například pro jazyk Python ukládáte pip cache, pro Node.js npm cache. Klíč cache by měl obsahovat hash lock souboru. Bez cache se vám každý build zdrží o desítky sekund až minut, zvlášť u větších projektů. Nezapomeňte ale cache invalidovat při změně verze interpretu — jinak budete používat staré balíčky.

První kroky s pytestem jsou překvapivě přímočaré. Stačí napsat funkci začínající slovem test_ a uvnitř použít obyčejný assert. Žádné třídy, žádné speciální metody. Pokud chcete otestovat funkci, která sčítá dvě čísla, vytvoříte soubor test_calc.py a do něj napíšete: def test_soucet(): assert soucet(2, 3) == 5. Spuštění provedete příkazem pytest v terminálu, a pytest automaticky najde všechny soubory s předponou test_ a funkce test_ v aktuálním adresáři. To je první věc, na kterou si zvykněte – pojmenování souborů a funkcí není libovolné, ale řídí se konvencemi.

Testování v Pythonu není jen o spuštění skriptu a doufání, že vše funguje. Když začnete psát automatické testy, rychle narazíte na otázku, jaký nástroj použít. Standardní knihovna nabízí unittest, ale pytest se v posledních letech stal prakticky standardem pro nové projekty. Jeho hlavní výhoda spočívá v jednoduchosti zápisu a v bohatých funkcích, které šetří čas při psaní i údržbě testů.

Poslední oblastí, kterou stojí za to zmínit, je parametrizace testů. Často potřebujete ověřit stejnou funkci s více sadami vstupů. Místo psaní deseti podobných funkcí použijte dekorátor @pytest.mark.parametrize, který přijímá názvy argumentů a seznam hodnot. Každá kombinace se pak spustí jako samostatný test, a když něco selže, máte jasnou zprávu, která varianta je problematická. Tato technika výrazně zkracuje kód a zvyšuje pokrytí. Až si osvojíte tyto základy, pytest se stane vaším spolehlivým pomocníkem, který vám dá jistotu, že změny v kódu nerozbijí stávající funkčnost.

Typickou pastí, barvy stěn do obýváku které začátečníci spadají, je testování implementačních detailů místo chování. Když testujete, že funkce volá jinou funkci s určitými argumenty, svážete test s vnitřní strukturou kódu. Jakmile změníte implementaci, byť jen drobně, test selže, přestože funkce stále funguje správně. Mnohem robustnější je testovat výstup a vedlejší efekty – tedy to, co volající skutečně vidí. Například místo kontroly, že funkce ukládacího modulu volá metodu save, raději ověřte, že se soubor vytvoří s očekávaným obsahem. Tento přístup vám umožní později měnit vnitřní strukturu bez nutnosti přepisovat testy.

For those who have just about any inquiries regarding wherever in addition to how you can utilize dokončení interiéru, it is possible to call us in our own web site.