Co musíte udělat, než vám projde první unit test?

Z Mazovia


Pojmenování testu nese informaci. Místo „test1" napište něco jako „vrací nulu pro prázdný vstup" nebo „vyhazuje chybu pro záporný počet". Až jich budete mít stovky, název je to jediné, co uvidíte ve výsledcích. Stejně tak se vyplatí psát očekávanou hodnotu před skutečnou, protože chybová zpráva je pak čitelnější.

Mezi typické chyby patří testování pouze na nejnovějším rekonstrukce koupelny krok za krokemřízení, ignorování tmavého režimu, chybějící testy po obnovení aplikace z pozadí a podcenění lokalizace. Texty se v jiných jazycích prodlužují a rozbíjejí rozložení. Dalším problémem je nedostatečné testování oprávnění: aplikace musí správně fungovat i tehdy, když uživatel přístup odmítne. Stejně tak je nutné ověřit chování při přerušení hovorem, příchodem notifikace nebo přepnutím na jinou aplikaci.

Pro výkonnostní testy sledujte dobu spuštění, spotřebu paměti, vytížení procesoru a chování při slabém signálu. Měřte také dobu odezvy při přechodu mezi obrazovkami a při studeném startu. U baterie a datového přenosu porovnávejte hodnoty před a po změnách, ne jen absolutní čísla. Emulátory a simulátory jsou vhodné pro rychlou zpětnou vazbu, ale skutečné chování ověříte jen na fyzických zařízeních s různými verzemi systému.

Nezapomínejte na výjimky a hraniční hodnoty. Očekávanou výjimku testujte přes Assert.Throws nebo atribut [ExpectedException] nepoužívejte, je zastaralý. Zkuste nulu, záporná čísla, prázdný řetězec a maximální hodnoty. Právě tam se chyby schovávají nejčastěji. Testy spouštějte po každé změně, ideálně příkazem dotnet test, a udržujte je rychlé. Sada, která běží déle než několik sekund, přestane být používána.

Nakonec nastavte kontinuální běh testů. Každá změna kódu má spustit jednotkové a integrační testy, noční běh pak testy rozhraní na vybrané sadě zařízení. Výsledky sledujte dlouhodobě, protože stabilita testů je stejně důležitá jako jejich počet. Když testy padají náhodně, přestanou jim vývojáři věřit a celé úsilí se ztratí. Testování není jednorázová fáze před vydáním, ale průběžná kontrola, že aplikace dělá to, co má, na zařízeních, která lidé skutečně používají.

Parametrizace je druhý návyk, který výrazně zkrátí testovací soubory. Dekorátor @pytest.mark.parametrize umožní spustit stejnou testovací funkci s různými vstupy a očekávanými výstupy. Místo kopírování testu pětkrát stačí jeden zápis a seznam dvojic. Výhodou je, že při selhání pytest ukáže, která konkrétní kombinace parametrů neprošla. Naopak se nedoporučuje parametrizovat testy, jejichž logika se mezi případy liší – takový test se stává nečitelným a je lepší ho rozdělit.
Rozdíl je i v tom, kdo nese riziko. Analytik odpovídá za obsah a kvalitu zadání, tým za provedení. Když se do jednoho čísla míchá obojí, vzniká tlak na přesnost, kterou nikdo nemůže dát. Drž je oddělené: analytický odhad říká, kdy bude zadání připravené, agilní odhad říká, kolik práce tým zvládne. Teprve spojením dostaneš použitelný plán.

Až test projde, nespokojte se s tím. Zkuste ho záměrně rozbít — změňte očekávanou hodnotu a ověřte, že opravdu selže. Test, který neumí zčervenat, nic netestuje. Potom teprve pokračujte dalším případem. Jeden dobrý test denně je lepší než deset testů, kterým nerozumíte.

Základem je rozdělit testy podle účelu. Jednotkové testy ověřují logiku bez uživatelského rozhraní a mají běžet při každé změně kódu. Integrační testy kontrolují spolupráci mezi moduly, například mezi databází a síťovou vrstvou. Testy uživatelského rozhraní simulují skutečné interakce a odhalují problémy s rozložením, navigací a přístupností. Ruční průzkumné testování doplňuje automatizaci tam, kde jsou scénáře příliš proměnlivé nebo vizuální.

Než napíšete první řádek, rozhodněte, co přesně chcete ověřit. Věta „funkce má fungovat" nestačí. Sepište si na papír tři konkrétní vstupy a očekávané výstupy: běžný případ, hraniční případ a případ, kdy má funkce selhat nebo vrátit prázdno. Tím získáte tři testy, které mají smysl. Pokud neumíte pojmenovat očekávaný výsledek, funkce pravděpodobně dělá příliš mnoho úložné prostory v malém bytěěcí a je potřeba ji nejdřív rozdělit.

Typická chyba je odhadovat v agilním týmu podle nejlepšího možného dne. Další je odhadovat potichu v hlavě a pak ho obhajovat, místo aby vznikl společnou diskusí. Rizikem je i to, že se odhad nikdy nevyhodnotí. Bez zpětné vazby se tým nepoučí a opakuje stejné omyly. Zaveď jednoduché pravidlo: po každém cyklu porovnej odhad se skutečností a zapiš, co odhad posunulo.

Pište testy jako malé, izolované scénáře. Jeden test by měl ověřovat jednu věc a jeho název by měl říkat, co se děje za jakých podmínek. Osvědčuje se formát Metoda_Stav_OcekavanyVysledek, například Secti_DveKladnaCisla_VratiSoucet. If you beloved this article and also you would like to collect more info about crativ.Co.kr generously visit our web-page. V NUnit k tomu slouží atributy [Test] a [TestCase], jak zařídit malou kuchyni které umožňují spustit stejnou logiku s více vstupy. Pokud do jednoho testu nacpete pět Assertů, při pádu nepoznáte, která část přestala fungovat.