Jednotkové testy versus integrační: co přidat, když kód roste
페이지 정보

본문
Vývoj pro iOS v Swiftu je dlouhodobá investice do znalostí. Jazyk se vyvíjí, ale základy zůstávají. Kdo pochopí volitelné hodnoty, správu paměti a architekturu, If you loved this informative article as well as you would want to obtain more details about Http://Ndz.Zp.Ua/User/KeeshaSimms2793/ kindly go to our own internet site. tomu bude stačit dokumentace a vlastní experimenty. Vyhněte se kopírování cizího kódu bez porozumění. raději napište méně řádků, kterým rozumíte, než složitý celek, který se při první chybě rozpadne.
Zohlednit skryté činnosti neznamená nafukovat odhady. Znamená pojmenovat je, oddělit od viditelné práce a přiznat je v plánu. Kdo to dělá pravidelně, nemívá odhady výrazně delší, ale výrazně pravdivější. A pravdivý odhad je jediný, podle kterého se dá rozumně plánovat.
Jakmile máš oddělené jednotkové a integrační testy, nastav dvě úrovně spouštění. Jednotkové testy patří do rychlé smyčky při každé uložené změně, integrační testy do předcommit hooku nebo do pipeline před mergem. Pokud integrační sada trvá příliš dlouho, rozděl ji na menší části, které lze pouštět paralelně. Sleduj, které testy jsou nejpomalejší, a ty řeš první. Často stačí vyměnit skutečnou službu za lehčí variantu nebo omezit počet případů, které testují stejnou logiku.
Než začnete psát první řádky kódu, nastavte si vývojové prostředí. Nainstalujte si aktuální verzi vývojového nástroje, který obsahuje kompilátor Swift i simulátor. Vytvořte si nový projekt jako aplikaci pro iOS. Zvolte rozhraní podle toho, zda chcete používat deklarativní SwiftUI, nebo starší UIKit. Pro nové projekty je dnes rozumnější SwiftUI, ale počítejte s tím, že některé pokročilé funkce vyžadují znalost obou přístupů.
Když codebase roste, dřív nebo později narazíte na to, že jednotkové testy sice procházejí, ale stejně vám něco uniká. Chyba vzniká až ve chvíli, kdy se spojí databáze, HTTP klient a fronta zpráv. Řešení není nahradit jedno druhým, ale vědomě rozdělit, co který typ testu ověřuje, a hlídat, aby se hranice neposouvaly samovolně.
Nevracejte víc dat, než potřebujete. SELECT * je pohodlný při ladění, ale v produkci zbytečně přenáší sloupce, které aplikace nepoužije. U velkých textových nebo binárních sloupců to může být rozdíl mezi milisekundami a sekundami. Stejně tak LIMIT bez ORDER BY nedává smysl, protože databáze neví, které řádky má vrátit, a stejně musí projít všechna data.
Většina pomalých dotazů nevzniká kvůli slabému hardwaru, ale kvůli tomu, jak jsou napsané. Než začnete přidávat paměť nebo měnit server, projděte si samotný dotaz a jeho plán provedení. Právě tam se skrývá největší prostor pro zrychlení. Následujících pět návyků zabere minimum času a přinese měřitelný rozdíl.
Kde se hranice rozpadá a jak ji držet Typický problém při růstu je „mockovací peklo". Test má deset mocků, které se navzájem ovlivňují, a při každé změně signatury se opravuje půlka sady. Řešení: pokud potřebujete mockovat víc než dvě až tři závislosti, pravděpodobně testujete špatnou věc. Rozdělte kód tak, aby logika byla oddělená od infrastruktury, a integrační část nechte na malém počtu testů, které projdou reálnou cestou. Pomáhá i to, že mocky nahradíte lokálními implementacemi osvětlení v obýváku paměti — například repozitář v paměti místo databáze. Testy pak zůstanou rychlé a přesto ověří skutečné chování.
Indexy používejte cíleně, ne nazdařbůh Index není dekorace. Každý sloupec, který se objevuje v podmínce WHERE, v JOINu nebo v ORDER BY, by měl být zvážen pro index. Zároveň ale platí, že příliš mnoho indexů zpomaluje zápisy, protože se musí aktualizovat při každém INSERTu a UPDATEu. Sledujte, které dotazy běží nejčastěji a nejdéle, a indexujte podle nich. U složených indexů záleží na pořadí sloupců – první sloupec musí být ten, který filtruje nejvíc. Častá chyba je index na sloupec s nízkou rozlišovací schopností, například na pohlaví nebo stavový příznak s pěti hodnotami. Tam index většinou nepomůže a jen zabírá místo.
Další častá chyba je testování přes příliš mnoho vrstev. Integrační test, který prochází celou aplikací včetně autentizace, plateb a e-mailů, je pomalý a křehký. Vyplatí se testovat integraci po menších celcích: zvlášť repository proti databázi, zvlášť HTTP handler proti službě. Tyto testy se dají spouštět paralelně a izolovaně, což při růstu codebase rozhoduje o tom, zda sada běží minuty, nebo hodiny. Pokud test potřebuje vlastní databázi, použijte kontejner spuštěný pro testovací běh, ne sdílenou instanci, do které se vám míchají data z jiných testů.
Struktura projektu by měla od začátku odpovídat tomu, co aplikace dělá. Oddělte uživatelské rozhraní od logiky. Pro data použijte modelové struktury, pro komunikaci se sítí asynchronní funkce. Vyhněte se psaní celé aplikace do jednoho souboru. Rozdělte kód do menších souborů podle odpovědnosti. To usnadní testování i pozdější úpravy. Pokud pracujete s databází, zvažte, zda použít nativní rámec pro ukládání dat, nebo jednodušší řešení. U malých projektů zbytečně nekomplikujte architekturu.
- 이전글5 zasad, które naprawdę zmieniają sposób jedzenia 26.10.03
- 다음글Když chcete truhlíky na balkon v paneláku, začněte uchycením 26.10.03
댓글목록
등록된 댓글이 없습니다.
