Testování mikroslužeb - Průvodce pro začátečníky

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.



Co jsou mikroslužby?

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:


  • Běží ve svém procesu.
  • Komunikace s odlehčeným mechanismem často pomocí API prostředků HTTP.
  • Nezávisle nasaditelný plně automatizovaným strojním zařízením.
  • Používání různých programovacích jazyků / technologií / DB.
  • Používá různé technologie ukládání dat.

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:


  • Organizováno podle obchodních schopností,
  • Automatické nasazení,
  • Inteligence spíše v koncových bodech než v servisní sběrnici,
  • Decentralizovaná kontrola jazyků a dat.


Jak se mikroslužby liší od SOA

  • Architektura orientovaná na služby (SOA): architektonický vzor v designu počítačového softwaru, ve kterém komponenty aplikace poskytují služby jiným komponentám prostřednictvím komunikačního protokolu, obvykle přes síť.
  • Mikroslužby : Styl softwarové architektury, ve kterém jsou složité aplikace složeny z malých, nezávislých procesů, které spolu komunikují pomocí jazykově agnostických API

Příklad:

Pokud by byl Uber postaven na SOA, mohly by být jeho služby:

  • GetPaymentsAndDriverInformationAndMappingDataAPI
  • AuthenticateUsersAndDriversAPI

Pokud byl Uber postaven s mikroslužbami, jejich API by mohla vypadat spíše jako:

  • SubmitPaymentsService
  • GetDriverInfoService
  • GetMappingDataService
  • AuthenticateUserService
  • AuthenticateDriverService

Více API, menší sady odpovědností.




Jak testovat mikroslužby

Testy jednotek

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.

Zkoušky součástí

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.

Testy integrace

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

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.

End-to-end testy

Ú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.



Příklad testování mikroslužeb

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.