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ž změníte pyramidu testů, přestanou vám padat releasy
Strona
Dyskusja
polski
Czytaj
Edytuj
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
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!
Typické chyby při výběru jsou tři. První je výběr podle toho, co je zrovna v módě, bez vztahu k vlastnímu cíli. Druhá je snaha naučit se dva jazyky současně, což vede k povrchním znalostem od obou. Třetí je odkládání praxe – sledování videí a čtení knih bez psaní vlastního kódu. Platí, že za první měsíc napíšete více kódu než za tři měsíce pasivního studia. Stanovte si proto malý projekt, který vás baví, ať už jde o převodník jednotek, evidenci knih nebo jednoduchou hru.<br><br>Nakonec si hlídejte, aby se pyramida nezvrhla v přesýpací hodiny. Jakmile začne převažovat jedna vrstva, ať už unit nebo E2E, znamená to, že ostatní vrstvy neplní svou roli. Pravidelně, třeba jednou za čtvrt roku, se podívejte na poměr testů a na to, jak dlouho běží. Pokud se poměr vychýlí, přesuňte testy tam, kam patří. V dynamickém projektu není pyramida pevná stavba, ale něco, co se neustále vyvažuje.<br><br>Přesuňte těžiště tam, kde se změny dějí Základní pravidlo zní: čím blíž k byznys logice, tím víc testů. Pokud se často mění pravidla, výpočty nebo workflow, vyplatí se posílit vrstvu testů na úrovni služeb a modulů, ne jednotlivých funkcí. Unit testy pište jen tam, kde jde o složitou logiku bez závislostí – ne plošně na každý getter. Místo stovek drobných testů postavte sadu, která ověřuje celé scénáře na úrovni domény. Ty se při změně požadavku upravují na jednom místě, ne na dvaceti.<br><br>Nakonec mějte na paměti, že falešné závislosti musí věrně kopírovat kontrakt. Pokud se reálné API změní, fake implementace může zůstat zastaralá a testy projdou, i když aplikace v produkci selže. Proto udržujte fake třídy co nejblíže skutečnému rozhraní a při každé změně API je aktualizujte. Pomůže i kontraktní test, který ověří, že se fake chová stejně jako reálná služba – alespoň na základní úrovni.<br><br>Uložení klíče patří do transakce spolu s vlastní operací. Pokud nejdřív zapíšete výsledek a pak klíč, může selhat zápis klíče a při opakování vznikne duplicita. Vhodné je použít databázi s unikátním indexem na kombinaci klíče a uživatele. Při souběhu dvou požadavků se stejným klíčem jeden zápis uspěje a druhý dostane konflikt. Tento konflikt se nemá vracet jako chyba 500, ale jako 409 nebo 200 s původním výsledkem. Doba platnosti klíče má být omezená, obvykle hodiny až dny. Příliš krátká expirace dovolí duplicitu později, příliš dlouhá zbytečně plýtvá místem.<br><br>Na co si dát pozor při návrhu závislostí První pastí je příliš těsné propojení s konkrétní knihovnou. Pokud všude voláte přímo HTTP klienta, nemáte kam vložit falešnou implementaci. Vždy definujte rozhraní a injektujte závislost přes konstruktor nebo parametr. Druhou pastí je ignorování chybových stavů. Externí služba může vrátit timeout, chybu 500 nebo neplatný formát odpovědi. Testy musí tyto situace pokrýt, jinak zůstanou skryté. Třetí častou chybou je, že fake implementace vrací vždy stejnou odpověď a testy pak neodhalí změny v logice.<br><br>Testování aplikace, která komunikuje s externími službami, často skončí tak, že vývojář buď spoléhá na živé API, nebo testy úplně vynechá. Ani jedno není správné. Živé API je pomalé, nedeterministické a při výpadku sítě shodí celou sadu testů. Vynechání testů zase znamená, že se chyby v integraci objeví až v produkci. Řešením je nahradit externí služby vlastními závislostmi, které simulují chování rozhraní.<br><br>Základ responzivity není v médiích, ale v tom, že layout sám povolí zmenšení. Grid postavte pomocí grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)). Tento zápis vytvoří tolik sloupců, kolik se jich do šířky vejde, a každý bude mít minimálně 260 pixelů. Šířku nerozbijete pevnými hodnotami v pixelech, ale relativními jednotkami fr, % nebo min(). U Flexboxu používejte flex-wrap: wrap a u potomků flex: 1 1 260px. Tím dosáhnete stejného efektu bez jediného media query.<br><br>Pro datové závislosti, jako je databáze, použijte in-memory úložiště nebo dočasný soubor. Není nutné spouštět celý databázový server. Například v Javě stačí H2 v paměti, v Pythonu SQLite. Důležité je, aby se data mezi testy izolovala – každý test by měl začínat s čistým stavem. Dosáhnete toho buď vytvořením nové instance před každým testem, nebo transakcí, která se na konci rollbackne. Pokud použijete sdílenou databázi, testy si navzájem přepisují data a výsledky jsou náhodné.<br><br>Mezi nejčastější chyby patří nasazování v pátek odpoledne, rollback bez zálohy dat, spoléhání na to, že někdo „to" zvládne ručně, a chybějící monitoring po návratu. Po rollbacku je nutné ověřit nejen dostupnost, ale i správnost dat a front. Až poté se řeší příčina. Následná analýza má odpovědět na tři otázky: co se změnilo, proč to neodhalily testy a jak se příště zkrátí čas do detekce. Bez ní se stejná chyba vrátí při dalším nasazení.
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