Prvním krokem je rozdělit testy podle toho, co skutečně ověřují, ne podle názvu složky. Jednotkový test volá jednu funkci nebo třídu, nepoužívá databázi, síť ani souborový systém a běží v milisekundách. Integrační test naopak ověřuje spolupráci dvou a více komponent včetně reálného úložiště nebo HTTP vrstvy. Pokud test potřebuje nastartovat aplikaci, není to jednotkový test, i když je v souboru s názvem unit.
Typická chyba je tichý posun. Když zjistíte, že to nestíháte, čekáte, jestli to doženete, a zákazníkovi to řeknete, až když je pozdě. To je horší než původně špatný odhad. Informaci o posunu dodejte ve chvíli, kdy ji máte, spolu s novým odhadem a důvodem. Zákazník nesnáší překvapení víc než zpoždění. Pokud mu dáte čas zareagovat, často si sám upraví priority nebo ubere rozsah.
Druhá situace: extrémně vysoký objem zápisů, kdy potřebujete rozložit zátěž na mnoho serverů. NoSQL databáze často podporují horizontální škálování automaticky. Pokud ale potřebujete silnou konzistenci, narazíte. Většina NoSQL systémů nabízí eventual consistency, což znamená, že se data mohou krátce rozcházet. Pro bankovní převody nebo rezervační systémy je to nepoužitelné. Pro počítadla lajků, logy nebo telemetrii je to naopak ideální.
Třetí situace: data, která nemá smysl normalizovat, protože se čtou vždy jako celek. Typicky uživatelské relace, košíky, cache. Zápis i čtení jsou pak velmi rychlé, protože odpadá spojování tabulek. Čtvrtá situace: grafové vztahy, jako jsou sítě přátel, doporučovací systémy nebo detekce podvodů. Pátá situace: časové řady — metriky, senzory, burzovní data. Zde NoSQL vyniká v kompresi a rychlém zápisu.
Nejčastější chyba je nasadit NoSQL tam, kde potřebujete transakce a složité dotazy. Další chyba je ignorovat modelování podle přístupových vzorů. V relační databázi navrhnete schéma podle dat. V NoSQL musíte nejdřív vědět, jak se bude dotazovat, a podle toho data uspořádat. Když to neuděláte, skončíte s pomalými skeny celé kolekce. Pokud potřebujete obojí — flexibilitu i transakce — zvažte kombinaci: relační databázi pro transakční jádro a NoSQL pro okrajové části systému.
Praktické vodítko: sleduj pokrytí větví, ne jen řádků. Řádkové pokrytí roste i tehdy, když test projde jen jednou cestou. Pokrytí větví ti ukáže, které podmínky nejsou otestované. Zároveň si nastav výjimky pro místa, kde testy nemají smysl: konfigurace, generovaný kód, jednoduché datové třídy. Tyto výjimky musí být explicitní a zdůvodněné, jinak se z nich stane způsob, jak číslo obejít.
Častou chybou je odhadovat jen „šťastnou cestu”. To znamená předpokládat, že všechno půjde hladce, nikdo nebude nic měnit a prostředí bude fungovat na první pokus. Další chybou je zapomínat na přerušení. Vývojář není stroj, který pracuje v izolaci. Telefonáty, dotazy kolegů, neplánované porady – to vše ukrajuje čas. Někteří odhady nafukují záměrně, ale to není řešení. Lepší je pojmenovat konkrétní rizika a k nim přiřadit čas. Tím se odhad stane obhajitelným a srozumitelným i pro ty, kdo do kódu nevidí.
NoSQL databáze nejsou náhradou relačních databází. Jsou to nástroje navržené pro konkrétní typy problémů, které relační model řeší neefektivně nebo vůbec. Pokud začnete s NoSQL jen proto, že je moderní, pravděpodobně narazíte na stejné problémy, které byste měli i s relační databází — jen s menší podporou nástrojů a horší dokumentací.
Kdy se NoSQL vyplatí a na co si dát pozor První situace: ukládání dokumentů, jejichž struktura se liší kus od kusu. Typicky produktové katalogy, kde každá kategorie má jiné atributy. Relační databáze by vyžadovala buď mnoho nulových sloupců, nebo tabulku atributů. Dokumentová databáze uloží celý objekt jako jeden záznam a dotaz vrátí přesně to, co potřebujete. Pozor ale na to, že bez schématu snadno vznikne nekonzistentní datový bordel — chybějící pole, různé názvy pro totéž. Vyplatí se zavést validační pravidla už na úrovni aplikace.
Základní rozdíl spočívá v tom, že relační databáze vyžadují pevné schéma a data ukládají do tabulek s vazbami. NoSQL systémy obvykle obětují některé vlastnosti transakcí (ACID) ve prospěch škálovatelnosti, flexibility schématu nebo rychlosti zápisu. To je výhodné, když potřebujete ukládat dokumenty, klíč-hodnota páry, grafy nebo sloupce s řídkou strukturou.
Prvním krokem je vůbec si tyto činnosti přiznat. Pomáhá rozložit úkol na viditelné a neviditelné části. Viditelné je to, co končí v repozitáři: nová funkce, opravená chyba, upravená konfigurace. Neviditelné je všechno ostatní – od pochopení zadání přes hledání souvislostí až po čekání na schválení. Udělejte si u každého úkolu seznam obou skupin. U neviditelných položek odhadněte čas zvlášť, i kdyby to mělo být jen hrubě.
If you’re ready to see more information about Http://bbs.Yx3.com visit our web site.