Testovací pyramida, nebo ledovec? Co určuje pořadí testů

Další praktická rada se týká verzování a buildů. Hned na začátku projektu nastavte číslo buildu a verzi aplikace tak, aby se automaticky zvyšovaly. To usnadní testování a hledání chyb v produkci. Konfigurace pro vývoj, testování a produkci by měly být oddělené, ideálně pomocí xcconfig souborů. Nikdy neukládejte do kódu hesla nebo API klíče. Pro produkční prostředí používejte zabezpečené úložiště jako Keychain, ale i to má svá pravidla – klíče šifrujte a pravidelně obnovujte.

Třetím problémem je přetížení pluginy. Instalujete si každý rozšíření, které vypadá užitečně, a po čase se vám prostředí stane nepřehledné, pomalejší a občas i nestabilní. Zásada je: instalujte jen to, co opravdu použijete. Pro základní práci s Pythonem stačí oficiální balíček pro jazyk, ladicí nástroj a formátovač. Ostatní doplňky přidávejte až ve chvíli, kdy víte, že chybějí.

Když začínáte s vývojem pro iOS, první věc, kterou oceníte, je rychlá zpětná vazba od simulátoru. Ale pozor: simulátor není cílové zařízení. Na skutečném iPhonu se chování liší v paměti, výkonu i v chování senzorů. Proto si hned na začátku nastavte fyzické zařízení pro testování. Propojení přes kabel je spolehlivé, ale bezdrátové ladění vám ušetří čas, pokud měníte kód často. Nezapomeňte, že pro testování na zařízení potřebujete platný vývojářský profil a podepsaný kód. Jinak se aplikace nespustí.

Při testování výkonu se zaměřte na reálné podmínky. Neměřte jen na výkonném počítači s rychlým připojením, ale simulujte pomalý mobilní internet a slabší procesor. Použijte nástroje pro simulaci síťového omezení, ať vidíte, jak se aplikace chová při výpadku signálu. Typická chyba je testovat jen šťastnou cestu — kdy vše funguje. Zkuste uživatele, který přeruší stahování, odhlásí se uprostřed transakce nebo otočí telefon. Tyto okrajové případy odhalí nejvíc problémů.

Prvním kritériem je povaha dat a jejich vztahů. Pokud máte hierarchická data nebo propojené entity, kde klient potřebuje různé podmnožiny polí, GraphQL vám ušetří spoustu práce. Klient si totiž požádá přesně o to, co potřebuje, a vy se nemusíte trápit s tvorbou desítek endpointů pro každou variantu. Typickým příkladem je mobilní aplikace, která potřebuje jen jméno a e-mail, zatímco webová verze chce i adresu a historii objednávek. S REST byste museli vytvořit dva endpointy nebo posílat zbytečně velká data.

Druhou pastí je přehlížení integrace s ladicími nástroji. Mnoho začátečníků se spoléhá na tiskové výpisy, ale po čase narazí na problém, který takto neodhalí. Kvalitní IDE vám umožní nastavit breakpointy, procházet kód krok za krokem a sledovat hodnoty proměnných. Pokud tuto funkci ve svém editoru nemáte, naučte se alespoň používat pdb, standardní ladicí nástroj Pythonu. Je to nepohodlné, ale v nouzi zachrání situaci.

První unit test obvykle vzniká s nejlepším úmyslem, ale často končí jako test, který testuje špatnou věc, nebo rovnou testuje implementaci místo chování. Než začnete psát, určete si, co přesně chcete ověřit. Vezměte si jednu konkrétní metodu nebo funkci a definujte si vstup, očekávaný výstup a okrajové případy. Pokud nedokážete říct, co má test dokázat, ještě nezačínejte psát kód.

Třetí oblast, kde dělají vývojáři chyby, je práce s hlavním vláknem. Veškeré změny uživatelského rozhraní musí probíhat na hlavním vlákně. Pokud provádíte síťový požadavek, výsledek zpracujte v asynchronní úloze a poté na hlavním vlákně aktualizujte UI. K tomu slouží dispatch main async nebo novější async/await. Při použití async/await nezapomeňte, že špatné použití Task může vést k závodům. Vždy zkontrolujte, že nezablokujete hlavní vlákno dlouhými synchronními operacemi, jinak aplikace zamrzne a systém ji ukončí.

Poslední bod se týká testování. Nestačí jen spustit aplikaci a podívat se, jestli funguje. Napište unit testy pro logiku a UI testy pro klíčové uživatelské scénáře. Testy spouštějte při každé změně kódu, ať už lokálně nebo v rámci CI. Častým omylem je, že testy píšete až po dokončení funkcionality – pak je snadné je odložit a nakonec chybí. Lepší je psát testy průběžně a hned od začátku. Výsledkem je stabilnější aplikace a méně času stráveného hledáním regresí.

U integračních testů se zaměřte na hranice systému: přístup k datům, komunikaci s externími službami a serializaci. Používejte skutečnou databázi, ideálně stejnou, jakou běží v produkci, ale s oddělenými testovacími daty. Nepodvádějte s transakcemi, které se po testu rollbackují — to sice zrychlí běh, ale neodhalí problémy s únikem spojení nebo s čistěním dat. Pro end-to-end testy vyberte jen ty nejdůležitější uživatelské cesty, třeba registraci, objednávku nebo úhradu. Více než deset takových testů začíná být neudržitelných.

If you cherished this article therefore you would like to obtain more info relating to koukněte sem kindly visit our own page.

Leave a Comment

Your email address will not be published. Required fields are marked *