Než napíšeš první kód: Jak se zorientovat ve světě API
Dalším praktickým krokem je revize stávajících testů. Najděte testy, které trvají déle než několik sekund, a zjistěte, zda to není způsobeno tím, že testují příliš mnoho scénářů naráz. Rozdělte je na menší, nezávislé testy. If you liked this article and also you would like to obtain more info pertaining to zdroj informací please visit our own web-page. Pokud máte test, který pokrývá celý řetězec od databáze po UI, zeptejte se, zda je takový test opravdu nezbytný, nebo zda stačí otestovat rozhraní mezi jednotlivými vrstvami zvlášť. Někdy pomůže napsat malý skript, který změří dobu běhu každého testu, a na základě toho nastavit pravidla: testy, které běží déle než 200 ms, musí být označeny jako integrační a spouštěny odděleně.
Jak konkrétně upravit poměr, když už je nevyvážený Začněte analýzou pokrytí podle rizika. Projděte produkční kód a označte si kritické moduly — ty, které zpracovávají peníze, ověřují přihlášení nebo řeší bezpečnost. Pro tyto moduly by měl být poměr jednotkových testů k integračním zhruba 3:1, protože potřebujete rychlé otestování všech okrajových případů. Pro méně rizikové části, jako jsou interní nástroje, stačí 1:1 nebo dokonce méně integračních testů. Toto rozdělení není dogma, ale výchozí bod pro diskusi v týmu.
Když už máte základní vstup a výstup, přichází na řadu logika. Typickou chybou je zapomenutí středníku na konci příkazu, což způsobí chybu kompilace, nebo použití špatných operátorů – například = místo == v podmínce. Takové chyby nejsou nic neobvyklého, ale vedou k tomu, že program něco dělá, i když dělá špatně. Proto si zvykněte psát kód po menších částech a každou část ihned testovat. Tím se vyhnete situaci, kdy nevíte, která z padesáti řádků způsobuje problém.
Konflikty jsou nevyhnutelné, ale jejich řešení se dá zvládnout bez zbytečného stresu. Nejčastější chybou je snažit se konflikty vyřešit příliš rychle a bez pochopení širšího kontextu. Když narazíte na konflikt, nejprve si projděte obě verze kódu, pochopte, co obě strany dělaly, a teprve poté slučte. Nikdy neignorujte konflikt a nepoužívejte příkaz, který automaticky vybere jednu verzi, aniž byste věděli, co děláte. To vede k tichým chybám, které se objeví až v produkci.
Prvním krokem k vyvážení je rozdělení testů podle rychlosti a spolehlivosti. Doporučuji zavést tři úrovně: rychlé jednotkové testy, které běží během pár sekund, středně rychlé integrační testy pro klíčové scénáře a pomalé end-to-end testy, které se spouští jen při nasazení. Toto rozdělení umožní časté spouštění rychlých testů při vývoji a méně časté spouštění pomalých testů v CI. Zde je důležité, aby se každá úroveň spouštěla automaticky s odpovídající frekvencí — jinak se rychlé testy začnou promíchávat s pomalými a celý cyklus se zbytečně protáhne.
Verzování kódu při práci na více feature větvích je běžná denní rutina, ale i zdroj frustrace, když se něco pokazí. Klíčem k efektivní práci není jen znalost příkazů, ale hlavně disciplína v tom, jak větve zakládáte, jak často do nich začleňujete změny z hlavní větve a jak řešíte konflikty. Bez této disciplíny se i jednoduchý projekt promění v chaos, kde se ztrácí čas hledáním, která změna rozbila build.
Jak projekt roste, počet testů obvykle stoupá rychleji než počet řádků produkčního kódu. Nejdřív máte pár jednotkových testů, pak přibude pár integračních, a najednou je jich tolik, že build trvá půl hodiny a každá změna vyžaduje hodiny ladění. Častým problémem je, že tým testy jen přidává, ale nevěnuje pozornost tomu, aby jejich struktura odpovídala skutečnému riziku. Výsledkem je sada testů, která je sice rozsáhlá, ale nefunguje efektivně — část testů je redundantních, část je pomalých a část testuje jen to, co je triviální.
Další pastí je použití nesprávného typu pro ukládání hodnot. Mnozí začátečníci volí pro všechno var, což je v C# dovolené, ale pokud si nejste jistí, jaký typ proměnná má, může to vést k neočekávaným výsledkům. Například var pocet = 5; je v pořádku, ale var pocet = Console.ReadLine(); vytvoří řetězec, ne číslo. Proto raději vždy explicitně určete typ, alespoň dokud se byt v paneláku jazyce nezorientujete. To vám ušetří spoustu času při ladění, protože kompilátor vás na chybu upozorní dřív, než program spustíte.
Důležité je také pravidelně kontrolovat, zda se poměr testů nemění s tím, jak se vyvíjí kód. Když přidáváte novou funkci, napište nejdřív pár rychlých jednotkových testů na logiku, a teprve pak jeden integrační test, který ověří, že funkce funguje s reálnými daty. Když provádíte refaktoring, mějte na paměti, že jednotkové testy by měly zůstat zelené — pokud nejsou, refaktorujete příliš mnoho najednou. A když se blíží termín, odolejte pokušení omezit testování na minimum — právě tehdy se vyvážení testů ukáže jako klíčové pro rychlé nalezení chyb.
등록된 댓글이 없습니다.