Pro testování více vstupů slouží parametrizace. Dekorátor @pytest.mark.parametrize předá funkci sadu hodnot a pytest postupně spustí každou kombinaci. Výsledkem je přehledný report, který u každého případu ukáže, zda prošel. U výjimek se používá kontextový manažer pytest.raises. Ověříte jím nejen typ výjimky, ale i text zprávy. Pozor na příliš široké zachytávání – test, který projde u jakékoli chyby, neověřuje nic užitečného.
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.
Mezi typické chyby patří i testování pouze v ideální síti. Přepněte zařízení do režimu s vysokou latencí, vypněte data uprostřed nahrávání souboru nebo simulujte ztrátu připojení. Sledujte, zda aplikace zobrazí srozumitelnou chybu, zda se data neztratí a zda se po obnovení připojení stav sám opraví. Právě tyto situace rozhodují o tom, zda uživatel aplikaci po prvním problému otevře znovu.
Pojmenování je druhá věc, která rozhoduje o čitelnosti. Funkce by měla dělat to, co říká její název, a název by měl být sloveso: spocitejCenu, nactiUzivatele, zvalidujEmail. Vyhněte se zkratkám jako tmp, data2 nebo obj. Čím konkrétnější název, tím méně komentářů potřebujete. Naopak zbytečné komentáře, které popisují, co kód dělá, jen zvyšují šum. Komentář má vysvětlovat proč, ne co – třeba proč je někde zvláštní podmínka kvůli chování prohlížeče.
Pro přechod existujícího projektu nezačínejte přepisem všeho. Zapněte TypeScript v režimu, kdy se soubory s příponou .ts kontrolují, a soubory .js nechte být. Postupně přejmenujte ty, které upravujete, a přidejte typy jen na jejich rozhraní. Nástroje jako kontrolor typů spustíte nad celým projektem i bez překladu, takže získáte přehled o chybách, aniž byste cokoli měnili. Když se počet chyb ustálí, zvyšte přísnost. Tímto tempem se vyhnete týdnům, kdy projekt nejde sestavit a nikdo neví, která část je hotová.
První unit test vzniká nejlépe tam, kde už máte malou funkci, která dělá jednu věc a vrací předvídatelný výsledek. Vyberte si metodu, jež nezávisí na databázi, souborovém systému ani na aktuálním čase. Pokud takovou nemáte, rozložte větší celek na menší části. Testování celé aplikace najednou je cesta k pomalým a křehkým testům. Začněte od nejjednoduššího chování: například funkce, která sečte dvě čísla nebo ověří formát vstupu.
Častou chybou je testovat pouze na nejnovější verzi systému. Uživatelé s staršími verzemi tvoří nezanedbatelnou část a právě tam bývají problémy s kompatibilitou. Stejně tak se vyplatí testovat na zařízeních s malým množstvím úložiště a s omezeným výkonem. Aplikace, která se tváří plynule na výkonném telefonu, může být na slabším zařízení nepoužitelná.
Po prvním zeleném testu přidejte druhý případ, který ověří hraniční hodnotu. Například prázdný vstup, nulu nebo záporné číslo. Právě tam se objevují chyby, které běžné použití neodhalí. Nespěchejte na pokrytí celého modulu. Raději mějte tři spolehlivé testy než dvacet náhodných. Pokud test opakovaně selhává bez změny kódu, pravděpodobně obsahuje skrytou závislost nebo špatně nastavená očekávání.
Nakonec si všimněte, co vás první test naučil o návrhu kódu. Často zjistíte, že funkce dělá příliš mnoho nebo že její rozhraní je nepohodlné. To je správný okamžik pro malý refaktoring. Unit test není jen kontrolní mechanismus, ale i nástroj pro lepší strukturu. Jakmile zvládnete jeden test, bude psaní dalších výrazně rychlejší a přirozenější.
Nezapomínejte na přístupnost a lokalizaci. Otestujte aplikaci s větším zvětšením textu, s čtečkou obrazovky a v jazyce, který má delší názvy tlačítek. České překlady bývají delší než anglické a často rozbíjí rozložení obrazovky. Stejně důležité je sledovat chování po aktualizaci aplikace, kdy se mohou stará data dostat do konfliktu s novou strukturou. Testování není jednorázová aktivita před vydáním, ale průběžná součást vývoje, která se vyplatí nejvíc ve chvíli, kdy ji nikdo neodbývá.
Od izolace k prvnímu spuštění Vytvořte testovací soubor pojmenovaný stejně jako testovaný modul, jen s příponou podle konvence vašeho jazyka. Uvnitř napište jednu testovací metodu, která připraví vstupy, zavolá funkci a porovná výsledek s očekávanou hodnotou. Nepřidávejte hned deset případů. Jeden test, jedno tvrzení. Pokud test selže, chcete přesně vědět, co je špatně. Spusťte testovací runner a sledujte výsledek. Červená je v pořádku, pokud odhalí skutečnou chybu v kódu nebo v očekávání.
If you liked this post and you would like to obtain extra info pertaining to návod najdete zde kindly visit our own web site.