Když tým sklouzne do chaosu, Scrum pomůže najít řád

Typická chyba, kterou vidím u týmů, je honba za stonásobným pokrytím za každou cenu. Programátoři pak píší testy, které jen volají funkce s triviálními vstupy, nebo používají nástroje, které uměle navyšují čísla — třeba provádějí kód přes reflexi nebo vypínají kontroly. Výsledkem je, že metrika vypadá skvěle, ale testy nechytí jedinou skutečnou chybu. Stejně problematické je i pokrytí, které se měří jen v jednom momentě — po změně kódu je často neaktuální. Doporučuji měřit pokrytí průběžně v CI a nastavit si minimální hranici, ale jen jako pojistku proti výraznému propadu, ne jako cíl.<br> <br> <br> <br> Začněte instalací pytestu přes správce balíčků. Poté vytvořte soubor s názvem test_*.py nebo *_test.py, aby pytest testy automaticky našel. Jednotlivé testy jsou obyčejné funkce začínající slovem test_. Příklad:<br> <br> <br> <br> Na co si dát při implementaci pozor? V RESTu se vyhněte vytváření endpointu typu „vše o uživateli", který vrací stovky polí, z nichž klient využije jen deset. Místo toho používejte parametry pro filtrování a výběr polí. U GraphQL nastavte limity na velikost odpovědi a zabraňte vnořeným dotazům, které by mohly zahltit databázi. Také si pohlídejte, aby každý dotaz měl časový limit. Když se rozhodnete správně, získáte API, které je rychlé, škálovatelné a snadno udržovatelné — a to je to, o co v celém procesu jde.<br> <br> <br> <br> <b>Testování je nedílnou</b> součástí vývoje, a pokud pracujete v Pythonu, pytest je jedním z nejpoužívanějších nástrojů. Na rozdíl od standardního unittestu nabízí jednodušší syntaxi, méně kódu a bohaté možnosti rozšíření. V tomto článku se zaměříme na praktické základy – od psaní prvních testů až po typické chyby, kterým se vyhnout.<br> <br> <br> <br> Při návrhu API stojíte před zásadním rozhodnutím: zda použít REST, nebo GraphQL. Nejde o to, který přístup je modernější, ale který lépe sedí na váš konkrétní případ. REST je v praxi stále spolehlivou volbou pro jednoduché a dobře strukturované systémy, zatímco GraphQL přináší flexibilitu tam, kde klient potřebuje přesně to, co chce, a nic navíc. Než se rozhodnete, položte si tři otázky: Jaká je struktura vašich dat? Kdo bude API konzumovat? A jak moc se budou požadavky v čase měnit?<br> <br> <br> <br> Na závěr jedna důležitá věc: Scrum není všelék. Pokud máte tým, který si rozumí, dodává pravidelně a zákazník je spokojený, žádnou změnu nepotřebujete. Pokud ale cítíte chaos, časté přesuny priorit a nízkou předvídatelnost, Scrum vám dá rámec, jak problém pojmenovat a řešit. Začněte malými kroky, komunikujte otevřeně a mějte trpělivost. Agilita není cíl, ale cesta, která vede k tomu, že tým dodává to, co zákazník skutečně potřebuje.<br> <br> <br> <br> Jak se vyhnout problémům s datovými typy a dotazy Nezapomeňte na rozdíly v práci s textem. PostgreSQL rozlišuje typy CHAR, VARCHAR a TEXT, ale v praxi se chovají podobně. Hlavní rozdíl je v porovnávání řetězců: PostgreSQL používá collation podle locale, které může být case-sensitive. Pokud vaše aplikace spoléhá na case-insensitive porovnávání, musíte použít ILIKE nebo upravit dotazy. Také funkce jako GROUP BY jsou v PostgreSQL přísnější: každý sloupec v SELECT musí být buď agregovaný, nebo uvedený v GROUP BY. MySQL toto v některých režimech povoluje, takže po migraci můžete dostat chyby.<br> <br> <br> <br> Při přenosu dat dbejte na transakce. PostgreSQL podporuje plnou transakční integritu, ale migrace velkých objemů dat v jedné transakci může způsobit přetečení logů nebo zpomalení. Rozdělte data do dávek a testujte na vzorku. Také si ověřte, že všechny cizí klíče a unikátní indexy jsou vytvořeny až po naplnění tabulek – urychlí to import a předejdete chybám integrity.<br> <br> <br> <br> assert 1 + 1 == 2Nemusíte psát třídy ani dědit z nějaké základny – stačí funkce a assert. Tento minimalismus je hlavní výhodou oproti unittestu. Při psaní testů se vyplatí mít každý test nezávislý a zaměřený na jednu konkrétní funkcionalitu. Pokud test selže, okamžitě víte, co je rozbité<br> <br> <br> <br> Jak se rozhodnout podle týmu a životního cyklu projektu Pokud máte malý tým a krátký čas na dodání, REST je obvykle rychlejší a jednodušší na implementaci. Nástroje a knihovny pro REST jsou vyspělejší, dokumentace se píše snadněji a ladění je přímočařejší. GraphQL vyžaduje důkladné navržení schématu, což je investice, která se vyplatí až u větších projektů s dlouhou životností. Typická chyba: začít s GraphQL jen proto, že je „trendy", a pak zjistit, že tým neumí efektivně řešit N+1 dotazy nebo že každá změna schématu způsobí problémy s verzováním.<br> <br> <br> <br> <img src="https://i.ytimg.com/vi/54_ITK4C6Gw/hq720.jpg" alt="Iridium a Flexibyt - život naplno i v malém bytě" style="max-width:400px;float:left;padding:10px 10px 10px 0px;border:0px;">Pokrytí kódu testy je jedno z nejčastěji špatně interpretovaných čísel ve vývoji softwaru. Mnoho týmů ho bere jako cíl, ale ve skutečnosti jde o nástroj, který má odhalit slabá místa. Základní metrika, která se počítá jako poměr řádků, větví nebo funkcí pokrytých testy k celkovému počtu, vám řekne, kolik kódu se při testech spustí. Neřekne vám ale, zda testy skutečně ověřují to podstatné — jestli kontrolují správné chování, okrajové případy nebo chybové stavy. Proto je třeba měřit nejen počet řádků, ale i kvalitu testů a jejich schopnost odhalit chyby.