Le coeur perdu – Paris

Kdy se vyplatí NoSQL a co získáte místo tabulek?

Two businessmen discussing a bisiness problem at meeting in trading office.Největší chyba při zavádění NUnit do C# projektu není špatná knihovna, ale představa, že testy jednotek jsou jen formalita. Vývojáři často napíšou pár testů, které ověřují, že metoda vrátí true, a pak jsou překvapeni, že jim testy neodhalí žádnou regresi. NUnit je přitom nástroj, který umí mnohem víc – od parametrizovaných testů přes fixture až po vlastní assertiony. Jen je potřeba vědět, kde se šlápne vedle.

Přepínání mezi jazyky je návyk, ne funkce. Pomáhá jedna klávesová zkratka pro formátování, jedna pro spuštění testů a jedna pro kontrolu překladů. Pokud v jednom projektu střídáte tři jazyky, držte se stejných zkratek jako v jiných projektech. Svalová paměť je spolehlivější než hledání v nabídkách. Zároveň si nastavte, který jazyk je výchozí pro nové soubory, aby nevznikaly soubory bez přípony.

Po nasazení projekt nekončí. Někdo musí sledovat chyby, aktualizovat závislosti a řešit, co se stane, když přestane fungovat e-mail nebo platební brána. Domluvte se předem, kdo to bude dělat, jak rychle a co se stane, když dotyčný onemocní. Projekt bez vlastníka po nasazení je jen dražší verze prototypu.

Další častá chyba je sdílení stavu mezi testy. NUnit ve výchozím nastavení vytváří pro každý test novou instanci testovací třídy, takže pole nejsou sdílená. Pokud ale použijete statické proměnné nebo singleton, testy na sobě začnou záviset. To se projeví tak, že jednotlivě procházejí, ale v sadě padají. Řešením je izolace – každý test si připraví vlastní data v metodě označené [SetUp] a po sobě uklidí v [TearDown].

Proveďte audit stávající sady a u každého testu odpovězte na jednu otázku: závisí výsledek na stavu mimo testovanou funkci? Pokud ne, patří do jednotkové vrstvy. Pokud ano, do integrační. Testy, které nedokážou odpovědět ani na jednu variantu, obvykle jen kopírují implementaci a nemají hodnotu – ty smažte. Počet integračních testů držte výrazně nižší než jednotkových, obvykle v poměru jedna ku pěti až jedné ku deseti.

Na co si dát pozor v praxi První chyba je zvolit NoSQL jen proto, že je moderní. U transakcí, kde potřebujete atomicitu přes více entit, je relační databáze stále bezpečnější volba. NoSQL transakce existují, ale mívají slabší záruky a složitější obsluhu. Druhá chyba je ignorovat modelování podle dotazů. V relační databázi navrhnete tabulky a dotazy přijdou později. U NoSQL je to obráceně: nejdřív zjistěte, jak se data budou číst, a podle toho navrhněte dokumenty nebo klíče. Třetí chyba je podcenit konzistenci. Distribuované systémy často volí dostupnost před okamžitou shodou, takže se můžete setkat s zastaralými daty. Pro platby nebo skladové zásoby je to nepřijatelné.

Assert.That místo starých assertionů Mnoho týmů stále používá Assert.AreEqual, Assert.IsTrue a podobné. NUnit 3 přinesl model Assert.That s constrainty, který je čitelnější a lépe popisuje, co se očekává. Například Assert.That(vysledek, Is.EqualTo(5)) nebo Assert.That(seznam, Has.Count.EqualTo(3)). Výhodou je, že při selhání dostanete výraz, který přesně pojmenuje problém. Pokud přesto zůstanete u starých assertionů, NUnit vás nebude nutit k migraci, ale přijdete o lepší chybové zprávy.

U složitějších scénářů se vyplatí [TestCaseSource] nebo [TestCase] s více parametry. Pozor na to, že NUnit spouští testy v nedefinovaném pořadí. Nikdy nespoléhejte na to, že test A proběhne před testem B. Pokud spolu testy potřebují komunikovat, je to znamení, že by měly být jedním testem, nebo že testujete něco, co by mělo být oddělené.

Na závěr: testy jednotek v NUnit nejsou o počtu, ale o tom, zda dokážou odhalit chybu dřív než uživatel. Vyhněte se testování implementačních detailů, používejte Assert.That, izolujte stav a pojmenovávejte testy tak, aby z názvu bylo jasné, co se testuje. Jakmile začnete psát testy před kódem, zjistíte, že NUnit není jen knihovna pro ověřování – je to nástroj pro návrh.

NoSQL není jedna technologie, ale skupina databází, které opouštějí pevné tabulky a cizí klíče. Místo toho ukládají data jako dokumenty, klíč-hodnota páry, široké sloupce nebo grafy. Každý typ řeší jiný problém: dokumentové databáze drží celý objekt pohromadě, klíč-hodnota slouží k bleskovému čtení podle identifikátoru, grafové databáze zvládají vztahy mezi entitami. Než začnete, položte si otázku, jestli vůbec potřebujete měnit přístup. Pokud data sedí v tabulkách a dotazy jsou rychlé, přechod jen přidá práci.

Základní past spočívá v tom, že se testy píšou až po implementaci a jen kopírují logiku. Takový test sice projde, ale neověřuje nic nezávisle. Správný postup je nejdřív definovat očekávané chování, napsat test, nechat ho spadnout, a teprve pak implementovat. NUnit k tomu dává atributy [Test] a [TestCase]. U parametrizovaných testů se vyhněte tomu, abyste do jednoho [TestCase] cpali příliš mnoho kombinací – ztratíte čitelnost a při pádu nepoznáte, která hodnota selhala.

If you have any type of concerns pertaining to where and the best ways to make use of Jak ZaříDit Malou Kuchyni, you could contact us at our webpage.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

0
    CARRELLO
    Il tuo carrello è vuoto!Torna allo shop