Testování mikroslužeb je stále důležitější, protože mnoho nových aplikací se staví pomocí architektury mikroslužeb.
Než budeme moci vidět, jak testovat mikroslužby, musíme nejprve pochopit, o co jde.
Microservice je definována jako architektonický styl, přístup k vývoji jedné aplikace jako sady služeb. Každá služba je definována jejími charakteristikami, z nichž některé jsou:
Architektonický styl mikroslužeb zahrnuje vývoj jednotlivých aplikací, které mohou pracovat společně jako sada malých služeb, z nichž každá běží ve svém individuálním procesu a komunikuje s lehkými mechanismy, jako je API prostředků HTTP. Tyto služby vyžadují minimální centralizovanou správu, používají různé technologie ukládání dat a lze je psát v různých programovacích jazycích. Tyto služby, postavené na obchodních funkcích, lze také nasadit nezávisle na strojích, které podporují plně automatické nasazení.
Vlastnosti mikroslužeb:
Příklad:
Pokud by byl Uber postaven na SOA, mohly by být jeho služby:
Pokud byl Uber postaven s mikroslužbami, jejich API by mohla vypadat spíše jako:
Více API, menší sady odpovědností.
Testy jednotek procvičují malé části softwaru, jako je funkce v aplikaci, aby zjistily, zda produkují požadovaný výstup daný sadou známých vstupů.
Stojí za zmínku, že testování jednotky samo o sobě neposkytuje záruky chování systému. Potřebujeme další typy testování pro mikroslužby.
Jakmile jsme provedli jednotkové testování všech funkcí v mikroslužbě, pak musíme otestovat samotnou mikroslužbu samostatně.
Typicky by se aplikace skládala z řady mikroslužeb, takže abychom mohli testovat izolovaně, musíme zesměšňovat ostatní mikroslužby.
Testy komponent budou také testovat interakci mikroslužby s jejími závislostmi, jako je databáze, vše jako jedna jednotka.
Poté, co jsme ověřili funkčnost každé mikroslužby, musíme otestovat komunikaci mezi službami. Test integrace ověří komunikační cesty a interakce mezi komponentami, aby se zjistily vady rozhraní
Servisní volání musí být prováděna s integrací do externích služeb, což by mělo zahrnovat případy chyb a úspěchů, proto testování integrace ověřuje, že systém funguje bez problémů a že závislosti mezi službami jsou přítomny podle očekávání.
Testy smlouvy ověřují interakce na hranici externí služby a tvrdí, že splňuje smlouvu očekávanou náročnou službou.
Tento typ testování by měl každou službu považovat za černou skříňku a všechny služby musí být volány nezávisle a musí být ověřeny jejich odpovědi.
„Smlouva“ je způsob, jakým je volání služby (kde se u určitých vstupů očekává konkrétní výsledek nebo výstup) označováno testováním spotřebitelské smlouvy. Každý spotřebitel musí v průběhu času dostávat ze služby stejné výsledky, i když se služba změní. Měla by existovat flexibilita pro přidání dalších funkcí, jak bude později vyžadováno v odpovědích. Tyto doplňky však nesmí narušit funkčnost služby.
Úlohou end-to-end testů je zajistit, aby se všechno spojilo a mezi mikroslužbami neexistovaly žádné neshody na vysoké úrovni.
End-to-end testy ověřují, že systém splňuje externí požadavky a dosahuje svých cílů, testování celého systému, od začátku do konce.
Testy také ověřují, že celý proces a toky uživatelů fungují správně, včetně všech služeb a integrace databáze. Důkladné testování operací, které ovlivňují více služeb, zajišťuje, že systém funguje společně jako celek a splňuje všechny požadavky.
Pojďme na mikroslužbu NA to závisí na dvou dalších službách B & C . Musíte vytvořit izolované prostředí, kde je stav NA , B a C je dobře definovaný a lze jej opakovaně nastavit.
Například stav / úložiště B a C by mělo být předem inicializováno. Poté stačí spustit sadu testů testujících API mikroslužeb NA pomocí obvyklé sady testovacích nástrojů REST / WebService, např. MÝDLO nebo Chakram nebo jednoduchá alternativa xUnit pro váš programovací jazyk.
Vysmívat se jakýmkoli rovnocenným službám, které API závisí na používání restito. Mezi další alternativy patří řidič odpočinku, WireMock a Mochito.
Zjevnou výzvou jsou posměšné / falešné API třetích stran při testování integrace mikroslužeb. Můžete použít kterýkoli z výše uvedených zesměšňovacích nástrojů, stačí s vysmíváním zacházet jako s částí našeho testovacího zařízení a ujistěte se, že máte aktuální informace o nových verzích API.