Le coeur perdu – Paris

První konzolová aplikace v C#: chyba, která zdrží každého

Prevence nekončí u kódu. Do vývojového procesu patří kontrola závislostí, protože zranitelnosti přicházejí i z knihoven a frameworků. Pomáhá jednotný přístup k databázovým dotazům v celém projektu, aby se nezaváděly výjimky. A v neposlední řadě testování: zkuste do vstupů poslat uvozovky, komentáře a logické výrazy a sledujte, co aplikace udělá. Když se chová jinak než s běžným textem, máte co řešit.

Načasování je druhá past. Async thunk často spouští více akcí za sebou. Nespoléhejte na to, že promise doběhne sama. Po zavolání thunku je potřeba počkat, až se fronta mikroúloh vyprázdní. Pomůže await na návratovou hodnotu thunku, pokud ji vrací. Když thunk nic nevrací, musíte počkat na dokončení promise, kterou jste mu dali k dispozici. Test, který pouze zavolá thunk a hned kontroluje dispatch, selže nepravidelně. To je horší než selhání vždy, protože se projeví až v CI.

Základem je oddělit pozorování od interpretace. Místo „komunikace v týmu vázne” je potřeba slyšet „od minulého sprintu čekám na odpověď v kanálu déle než den a pak nestíhám termín”. První věta se nedá řešit, druhá ano. Pravidlo pro celou místnost zní: každé tvrzení musí mít konkrétní situaci, čas a dopad. Kdo ho nemá, ten ho buď doplní, nebo ho odloží. Facilitátor to hlídá a je ochotný větu zastavit uprostřed.

Než nainstaluješ cokoli dalšího, rozhodni se, na čem budeš pracovat. Pro Android je oficiální cestou Android Studio, které obsahuje potřebné nástroje pro kompilaci, ladění i testování. Stačí jej stáhnout, nainstalovat a nechat doběhnout prvotní konfiguraci. Během ní si nainstaluj SDK pro alespoň jednu starší a jednu novější verzi systému. Emulátor si nastav tak, aby odpovídal zařízení, na kterém chceš aplikaci reálně testovat – ideálně telefon s běžným rozlišením a rozumnou pamětí.

Kde se nejčastěji chybuje Typická chyba je dynamické skládání dotazu pro řazení nebo výběr sloupce: název sloupce nebo směr řazení se nedá předat jako parametr, a tak se vkládá do textu dotazu. Řešením je mapování vstupu na předem povolený seznam hodnot, ne přímé vložení. Další častá chyba je ošetřování jen některých vstupů — vývojář zabezpečí formulář, ale zapomene na parametr v URL, hlavičku nebo tělo JSON. Útočník neposílá data tam, kam se čeká, ale tam, kde to projde.

Testování reducerů je nejjednodušší část celého Reduxu, protože reducer je čistá funkce. Dostane stav a akci, vrátí nový stav. Žádné HTTP, žádné časovače, žádné závislosti. Pokud váš reducer sahá na Date.now(), Math.random() nebo na globální konfiguraci, přestává být čistý a testy začnou být křehké. Nejprve tyto závislosti vytáhněte do akce nebo do argumentu. Teprve pak má smysl psát testy, které něco ověřují.

Základní test vypadá tak, že zavoláte reducer s výchozím stavem a akcí a porovnáte výsledek s očekávaným objektem. Pište testy pro každou větev přepínače zvlášť. Typická chyba je testovat jen šťastnou cestu a zapomenout na neznámou akci, na prázdné pole nebo na chybějící klíč. Další častá chyba je sdílení jednoho stavového objektu mezi testy. Pokud reducer vrací stejnou referenci, kterou dostal, a vy si ji uložíte do konstanty, další test ji může omylem mutovat. Vždy začněte od čerstvé kopie výchozího stavu.

Začněte malou sadou testů, které pokrývají nejčastější cesty uživatelů. Nesnažte se automatizovat všechno najednou. Testovací prostředí udržujte oddělené od produkčního a data pro testy připravujte skriptem, ne ručně. Nestabilní testy, které jednou projdou a podruhé ne, jsou horší než žádné – lidé jim přestanou věřit a začnou je ignorovat. Pokud test opakovaně selhává bez skutečné chyby v aplikaci, opravte ho nebo smažte.

Zvláštní pozornost věnujte chybám. Async akce by měla při selhání odeslat akci s chybou a případně nezměnit stav. Otestujte, že se stav nezměnil, a že se odeslala očekávaná chybová akce. Častá chyba je zapomenout na finally blok a nechat v testu viset promise, která nikdy nedoběhne. Pokud používáte časovače, nahraďte je fake implementací a posouvejte čas ručně. Jinak testy trvají zbytečně dlouho a jsou náchylné k výkyvům. Bez integračního prostředí se dá ověřit většina logiky. Skutečné síťové chování a middleware řetězec patří do samostatných testů, které spouštíte méně často.

Až program poběží, zkuste ho spustit znovu po malé úpravě. Změňte text, přidejte druhou proměnnou, vypište výsledek jednoduchého výpočtu. Právě opakovaným spouštěním a čtením chyb se naučíte nejvíc. Nekopírujte dlouhé bloky kódu, kterým nerozumíte. Lepší je mít deset řádků, u kterých umíte vysvětlit každý znak, než sto řádků, které fungují jen náhodou. Až budete hotoví, projekt nezavírejte násilím, ale ukončete terminál a složku si ponechte pro další cvičení.

If you liked this article and you would like to acquire more info relating to celý článek kindly visit the web site.

Lascia un commento

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

0
    CARRELLO
    Il tuo carrello è vuoto!Torna allo shop