Kdy se vyplatí psát unit testy v NUnit a kdy ne?
본문
Kde se to láme: data, efekty a výkon Nejčastější chyba je ukládat do globálního stavu všechno. Lokální otevření dialogu, hodnota ve formuláři nebo pozice kurzoru do storu nepatří. Druhá častá chyba je odvozování dat v komponentách, místo aby se počítalo selektorem. Selektor je funkce, která ze stavu vytáhne jen to potřebné; když ho napíšete jednou a použijete na více místech, zmizí duplicitní výpočty i nekonzistence. U rozsáhlejších dat pomůže knihovna pro memoizované selektory, ale i bez ní platí: spočítejte odvozenou hodnotu jednou a držte ji mimo store.
Přístupnost není volitelná nadstavba. Kontrast textu vůči pozadí musí být dostatečný, ovládací prvky musí mít viditelné ohnisko pro klávesnici a klikací plochy mají být dost velké i pro dotyk. Testujte rozhraní klávesnicí a se zapnutým čtečkou obrazovky. Pokud se v tom ztratíte vy, ztratí se i běžný uživatel na malém displeji nebo ve špatných světelných podmínkách. Velmi často stačí zvětšit odsazení, ztmavit text a přidat okraj k tlačítkům.
Zjistěte, kdo nese odpovědnost za zálohování a obnovu. Někteří dodavatelé předpokládají, že zálohu řeší databázový administrátor, jiní ji řeší na úrovni aplikace. Pokud se to nevyjasní předem, při havárii se ukáže, že data nejsou konzistentní. Trvejte na tom, aby byl popsaný i postup obnovy do konkrétního času, ne jen poslední zálohy.
První rekonstrukce koupelny krok za krokem není psát nové testy, ale rozdělit ty stávající podle toho, co skutečně ověřují. Jednotkový test nemá sahat na databázi, síť ani souborový systém. Pokud sáhne, není to jednotkový test, i když je v adresáři s tímto názvem. Projdi sadu a označ testy, které potřebují externí závislost. Často zjistíš, že polovina z nich testuje jen obal kolem volání, který by šel nahradit jednoduchým dvojníkem.
Nakonec je dobré myslet na to, co testy neřeší. NUnit neověří, že aplikace funguje jako celek, ani že spolu správně komunikují moduly. Unit testy odhalí chyby v izolované logice, ale integrační a end-to-end testy zůstávají potřeba. Pokud se unit testy stanou jediným měřítkem kvality, vznikne falešný pocit bezpečí. Smysluplné je psát testy tam, kde je logika netriviální a kde se změny projevují často. U jednoduchých getterů a setterů je psaní testů ztráta času.
Co odhalí špatně napsaný test Nejčastější chyba je test, který ověřuje příliš mnoho věcí najednou. Když v jednom testu kontrolujete návratovou hodnotu, volání mocku i zápis do logu, při selhání nepoznáte, co se vlastně rozbilo. Test má mít jednu jasnou příčinu selhání. Další častý problém je závislost na pořadí testů. NUnit ve výchozím nastavení testy spouští v určitém pořadí, ale to se nesmí stát součástí logiky. Každý test musí být samostatný a opakovatelný. Pomáhá k tomu atribut [SetUp], který připraví čistý stav před každým testem, a [TearDown], který po sobě uklidí.
Výkon se řeší hlavně na úrovni odběru. Komponenta, která se přihlásí k celému stavu, se překreslí při každé změně, i když ji zajímá jediné pole. Řešením je vybírat data těsně u místa spotřeby a držet odběr co nejmenší. U seznamů dávejte pozor na stabilní identifikátory; index pole jako klíč způsobí, že se při vložení nebo smazání položky překreslí vše za ní. Stejně tak se vyhněte vytváření nových objektů a funkcí v každém renderu, pokud je předáváte dál — zbytečně tím rušíte memoizaci.
Základ stojí na třech věcech: store, akce a reducery. Akce je obyčejný objekt s typem a daty, reducer je čistá funkce, která na základě akce vrátí nový stav, a store je drží pohromadě. V praxi se vyplácí psát reducery po malých částech a kombinovat je podle domén — uživatel, objednávky, filtry. Snažte se, aby každá změna stavu vznikala z jedné jasně pojmenované akce. Jakmile začnete do reduceru cpát logiku, která závisí na čase, náhodě nebo volání sítě, přestane být předvídatelný a testovatelný.
Pozor také na magické hodnoty a kopírování logiky do testů. Pokud do testu opíšete stejný vzorec, jak zařídit malou kuchyniý použíbyt v panelákuá produkční kód, test pravděpodobně projde i ve chvíli, kdy je logika špatně. Lepší je použít konkrétní očekávané hodnoty, které mají význam. NUnit nabízí atributy [TestCase] pro parametrizované testy a [TestCaseSource] pro složitější datové sady. Tím se vyhnete duplicitě a zároveň pokryjete více kombinací vstupů.
Redux v reactové aplikaci není výchozí volbou, ale nástrojem pro konkrétní problém: stav, který potřebuje více nesouvisejících částí aplikace současně a jehož změny musí být dohledatelné. Pokud si vystačíte s lokálním stavem komponenty nebo s kontextem pro několik málo hodnot, Redux přidá vrstvu navíc a s ní i režii. Rozhodnutí tedy nezačíná u knihovny, ale u otázky, kolik míst v aplikaci sahá na stejná data a jak často se mění.
If you're ready to read more info on Rekonstrukce koupelny krok za krokem review our own web site.
댓글목록 0
등록된 댓글이 없습니다.