Pokrytí testy je oblíbená metrika, ale jen málokdo ví, jak ji správně měřit. Většina týmů se zaměří na procento řádků, které testy projdou, a zapomene, že číslo samo o sobě neříká nic o kvalitě testů. Když se pokrytí blíží sto procentům, může to vypadat skvěle, ale ve skutečnosti to často znamená, že testy jsou povrchní a netestují klíčové scénáře. Jak tedy měřit pokrytí správně a kdy přestat honit čísla?
Když aplikace začne fungovat, dostaví se pokušení přidávat funkce donekonečna. To je past. Udržujte jádro malé a stabilní. Místo nových tlačítek se zaměřte na optimalizaci výkonu: naučte se profilovat paměť a CPU, používejte lazy loading pro seznamy a minimalizujte práci na hlavním vlákně. Typická chyba je ukládat velká data do paměti – raději sáhněte po databázi nebo souborech.
Kdy přestat zvyšovat pokrytí a zaměřit se na jiné věci Pokrytí testy je užitečné do určité hranice, obvykle kolem 70–80 % řádků. Nad touto hranicí začíná být nárůst pokrytí drahý a přináší jen malou hodnotu. Důvod je jednoduchý – testy, které pokrývají zbývající řádky, jsou často složité na napsání, jsou křehké a mění se s každým refaktoringem. Místo abyste se snažili pokrýt posledních dvacet procent, zaměřte se na testy kritických částí aplikace, jako je platební logika, autentizace nebo zpracování dat. Tyto části by měly mít pokrytí co nejvyšší, zatímco u méně důležitých funkcí si můžete dovolit nižší čísla.
Až budete příště prezentovat pokrytí testy svému týmu nebo nadřízeným, přidejte k číslu vysvětlení, co přesně měří a jaká je kvalita testů. Místo „máme 85 % pokrytí” řekněte „máme 85 % řádků pokrytých testy, které prošly mutační analýzou a pravidelně chytají chyby v platebním modulu”. Takový přístup je mnohem vypovídající a pomůže vám vyhnout se falešnému pocitu, že je kód bezpečný. Pamatujte, že pokrytí testy je jen jedno z mnoha měřítek kvality – a rozhodně ne to nejdůležitější.
Jak si poradit s prvním pohovorem Když už se dostaneš k pohovoru, připrav si odpovědi na otázky, které se objevují stále dokola. Nebuď překvapený, když se tě zeptají, co bys dělal, kdyby tvůj program spadl v produkci. V tu chvíli nečekají přesnou odpověď, ale zajímá je tvůj postup: jak bys problém reprodukoval, jak bys hledal příčinu a jak bys zajistil, aby se to neopakovalo. Typická chyba je začít hned radit řešení bez toho, abys pochopil problém – taková odpověď působí ukvapeně.
Základním kamenem je jazyk a nástroje. Pro začátek si vystačíte s Kotlinem, který je modernější a méně ukecaný než Java. Naučte se, jak fungují korutiny pro asynchronní práci a jak vypadá architektura s ViewModelem a LiveData. Nepouštějte se hned do komplikovaných knihoven třetích stran – nejdřív si osvojte čistý Android SDK. Doporučuji psát si vlastní malé projekty, kde si vyzkoušíte práci s RecyclerView, dialogy a životním cyklem. Vyhněte se opisování kódu z tutoriálů bez pochopení – to je nejrychlejší cesta k tomu, že vlastní aplikaci nerozchodíte.
Akce by měly být co nejjednodušší a popisovat událost, ne co se má stát. Typická chyba je vytvářet akce typu SET_USER_AND_LOAD_ORDERS_AND_UPDATE_CART, které v sobě mísí více zodpovědností. Pak je těžké testovat a ladit. Místo toho rozdělte akce na malé, atomické – SET_USER, LOAD_ORDERS, UPDATE_CART. Reducer by měl být synchronní a neměl by provádět žádné vedlejší efekty, jako je volání API nebo zápis do lokálního úložiště. Tyto operace patří do middleware, nejlépe do Redux Thunk nebo Redux Toolkit. Pokud toto nerespektujete, dostanete se do stavů, kdy akce spouští jiné akce a vy ztrácíte přehled o toku dat.
Základní metrikou je řádkové pokrytí, které zjistíte pomocí nástrojů, jež sledují, které řádky kódu byly při běhu testů spuštěny. Toto číslo je snadné získat, ale má zásadní nedostatek – neříká, jestli byly testy skutečně efektivní. Můžete mít sto procent pokrytí a přitom testovat jen happy path, zatímco chyby v edge casech zůstanou neodhalené. Proto byste měli vždy kombinovat řádkové pokrytí s pokrytím větví (branch coverage), které kontroluje, jestli byly projity všechny podmínky, a s pokrytím funkcí, které sleduje, zda byly volány všechny veřejné metody.
Při vývoji pro Android se nevyhnete testování na emulátoru. Nezapomínejte, že emulátor neodpovídá přesně chování reálného zařízení – rozdíly jsou v rychlosti, paměti i v chování senzorů. Proto si pořiďte levný fyzický telefon s čistým systémem a testujte na něm každou větší změnu. Pozor na oprávnění: pokud vaše aplikace žádá přístup k poloze nebo kontaktům, vysvětlete uživateli, proč to potřebujete, a to ještě před žádostí. Jinak ji mnozí odmítnou a vaše aplikace se stane nepoužitelnou.
If you adored this article and you would certainly such as to obtain even more facts pertaining to číst dál kindly check out our webpage.
