Przejdź do zawartości
Menu główne
Menu główne
przypnij
ukryj
Nawigacja
Strona główna
Ostatnie zmiany
Losowa strona
Pomoc z MediaWiki
Mazovia
Szukaj
Szukaj
Utwórz konto
Zaloguj się
Narzędzia osobiste
Utwórz konto
Zaloguj się
Strony dla anonimowych edytorów
dowiedz się więcej
Edycje
Dyskusja
Edytujesz
Když testy přestanou odhalovat chyby, je čas je zjednodušit
Strona
Dyskusja
polski
Czytaj
Edytuj
Edytuj źródło
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
Edytuj źródło
Wyświetl historię
Ogólne
Linkujące
Zmiany w linkowanych
Strony specjalne
Informacje o tej stronie
Uwaga:
Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli
zalogujesz się
lub
utworzysz konto
, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Filtr antyspamowy.
Nie
wpisuj tu nic!
Většina vývojářů dnes ví, že se mají vyhýbat skládání SQL dotazů pomocí řetězců. Přesto se SQL injection drží na předních příčkách chyb v bezpečnosti webových aplikací. Důvod není neznalost základního pravidla, ale to, že se injektáž často schová tam, kde ji nikdo nečeká: v dynamicky sestavovaných klauzulích ORDER BY, v názvech tabulek nebo v dávkovém zpracování. Tam parametrizace v tom nejběžnějším slova smyslu nefunguje, protože databázový engine nedovolí předat identifikátor jako parametr.<br><br>Začněte tím, že si každý před prací stáhne aktuální stav hlavní větve. Z ní vytvoří novou větev s krátkým, výstižným názvem podle toho, co řešíte. Do větve dělejte malé commity, ideálně několik za den. Jeden commit má obsahovat jednu logickou změnu. Když do jednoho commitu zamícháte opravu překlepu, změnu konfigurace a novou funkci, při pozdějším hledání chyby budete litovat. Zpráva commitu má říct, co změna dělá, ne jak jste se u toho cítili.<br><br>Jak nastavit hranici, která vydrž<br><br>Až bude skript fungovat ručně, teprve pak ho nechte běžet podle plánu. Ověřte, že běží i po restartu počítače, že má přístupová práva ke všem složkám a že případné heslo neukládáte natvrdo do kódu. Automatizace není o tom napsat co nejvíc řádků, ale o tom odstranit přesně tu rutinu, která vás zdržuje. Začněte malým skriptem, který dělá jednu věc spolehlivě, a další přidávejte, až mu budete rozumět.<br><br>Když míra pokrytí roste, ale počet odhalených chyb neroste, přestává být užitečná. Typický stav je, že testy pokrývají hlavně jednoduché cesty a zapomínají na chybové stavy. Další varovný signál: testy jsou křehké, padají při každé drobné změně a lidé je přestanou spravovat. Jakmile údržba testů zabere více času než psaní nového kódu, pokrytí škodí.<br><br>Pokrytí přestává být užitečné ve chvíli, kdy začneš psát testy kvůli číslu, ne kvůli riziku. Typický projev: testy volají funkci, zkontrolují, že nespadla, ale netvrdí nic o výsledku. Další častý případ je ignorování větví, které nelze snadno zasáhnout, takže se místo jejich otestování obalí podmínkou nebo se z kódu odstraní, aby číslo vypadalo lépe. Pokud se v týmu mluví o pokrytí častěji než o chybách, které testy odhalily, je metrika na špatné cestě.<br><br>Míra pokrytí testy se často bere jako ukazatel kvality. Jenže vysoké procento samo o sobě nic neznamená. Pokrytí říká pouze to, které řádky kódu testy prošly, ne jestli ověřují správné chování. Mnohem užitečnější je sledovat, jaké chyby vám testy reálně zachytí. Pokud po nasazení stejně nacházíte závady, které testy měly odhalit, je pokrytí jen číslo do reportu.<br><br>Začněte tím, že si vezmete posledních deset chyb, které se dostaly do produkce. U každé zapište, proč ji testy nezachytily. Výsledkem bude seznam mezer: chybějící okrajové případy, špatně nastavená data, neošetřené chyby vstupů. Tento seznam je cennější než jakékoli procento. Z něj odvoďte nové testy, které skutečně selžou, když se chyba vrátí. Ověřte to tak, že test nejprve spustíte proti vadnému kódu a teprve pak proti opravenému.<br><br>Prvním krokem je izolované prostředí. Nainstalujte Python a vytvořte virtuální prostředí příkazem python -m venv venv, poté ho aktivujte. Do něj pak instalujte pouze knihovny, které opravdu používáte. Pro práci se soubory a cestami stačí standardní moduly pathlib a shutil. Pro tabulky se hodí pandas, pro webové požadavky requests, pro plánování schedule nebo systémový plánovač úloh. Zbytečně nesbírejte desítky balíčků předem.<br><br>Typické chyby: honit číslo místo chování, testovat jen šťastnou cestu, ignorovat chyby v datech a závislosti, nebo si myslet, že pokrytí nahradí ruční průzkumné testování. Také je chyba měřit pokrytí u kódu, který se často mění a brzy zmizí. U nestabilních částí systému je lepší investovat do lepšího návrhu než do testů, které za týden přestanou platit.<br><br>Kdy je lepší ruční skript a kdy plnohodnotná automatizace Ruční skript se vyplatí pro jednorázové úkoly, které spustíte dnes a už nikdy. Napíšete pár řádků, zkontrolujete výsledek a hotovo. Automatizace má smysl, jakmile se úloha opakuje alespoň několikrát do měsíce, pracuje s velkým objemem dat nebo musí běžet v době, kdy u počítače nejste. Rozdíl je i v chybovosti: ruční přepisování čísel z jednoho souboru do druhého dřív nebo později skončí překlepem, zatímco skript udělá stejnou operaci pokaždé identicky.<br><br>Jak nastavit rozumnou hranici Nesnažte se o sto procent. Stanovte si minimum pro kritické části, třeba zpracování plateb nebo přihlašování, a tam pokrytí hlídejte. Pro zbytek kódu se řiďte tím, zda test umí odhalit konkrétní chybu. Pomáhá i to, když testy píšete k novým funkcím ještě před jejich dokončením. U staršího kódu nezačínejte plošným dopisováním testů, ale tím, že při každé opravě přidáte test na danou chybu. Pokrytí pak roste přirozeně tam, kde to má smysl.
Opis zmian:
Wszelki wkład na Mazovia może być edytowany, zmieniany lub usunięty przez innych użytkowników. Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.
Zapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach
domeny publicznej
lub kompatybilnych (zobacz także
Mazovia:Prawa autorskie
).
PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!
Anuluj
Pomoc w edycji
(otwiera się w nowym oknie)
Przełącz ograniczenie szerokości strony