Testiranje mikrousluga - Vodič za početnike

Testiranje mikrousluga postaje sve važnije jer se mnogi novi programi grade arhitekturom Microservices.

Prije nego što uspijemo vidjeti kako testirati mikrousluge, prvo moramo shvatiti što su.

Što su mikroservisi?

Mikroservis se definira kao arhitektonski stil, pristup razvoju jedinstvene aplikacije kao niza usluga. Svaka usluga definirana je svojim karakteristikama od kojih su neke:

  • Trčanje u njegovom procesu.
  • Komunikacija s laganim mehanizmom često s API-jem HTTP resursa.
  • Neovisno je raspoloživo pomoću potpuno automatiziranih strojeva.
  • Korištenje različitih programskih jezika / tehnologija / DB.
  • Koristi različite tehnologije za pohranu podataka.

Arhitektonski stil mikroservisa uključuje razvoj pojedinačnih aplikacija koje mogu zajedno raditi kao skup malih usluga, a svaka se pokreće u svom pojedinačnom procesu i komunicira s laganim mehanizmima kao što je HTTP API resursa. Te usluge zahtijevaju minimalno centralizirano upravljanje, koriste različite tehnologije za pohranu podataka i mogu se pisati na različitim programskim jezicima. Te usluge, izgrađene na poslovnim mogućnostima, također se mogu samostalno implementirati pomoću strojeva koji podržavaju potpuno automatiziranu implementaciju.

Karakteristike mikrousluga:

  • Organizirani oko poslovne sposobnosti,
  • Automatsko postavljanje,
  • Inteligencija u krajnjim točkama, a ne u sabirnici usluga,
  • Decentralizirana kontrola jezika i podataka.

Po čemu se mikrousluge razlikuju od SOA-e

  • Uslužno orijentirana arhitektura (SOA): arhitektonski obrazac u dizajnu računalnog softvera u kojem komponente aplikacije pružaju usluge ostalim komponentama putem komunikacijskog protokola, obično putem mreže.
  • Mikroservisi : Stil softverske arhitekture u kojem se složene aplikacije sastoje od malih, neovisnih procesa koji međusobno komuniciraju pomoću jezično-agnostičkih API-ja

Primjer:



Da je Uber izgrađen sa SOA-om, njihove bi usluge mogle biti:

  • GetPaymentsAndDriverInformationAndMappingDataAPI
  • AuthenticateUsersAndDriversAPI

Ako se Uber gradi s mikroservisima, njihovi API-ji mogu biti sličniji:

  • SubmitPaymentsService
  • GetDriverInfoService
  • GetMappingDataService
  • AuthenticateUserService
  • AuthenticateDriverService

Više API-ja, manji skup odgovornosti.

Kako testirati mikrousluge

Jedinični testovi

Jedinstveni testovi vježbaju male dijelove softvera, poput funkcije u aplikaciji, kako bi se utvrdilo daju li oni željeni izlaz s obzirom na skup poznatih ulaza.

Vrijedno je napomenuti da jedinstveno testiranje ne pruža jamstva o ponašanju sustava. Potrebne su nam druge vrste ispitivanja mikrousluga.

Ispitivanja komponenata

Nakon što smo proveli jedinstveno testiranje svih funkcija u mikroservisu, tada moramo izolirati i samu mikroservisu.

Tipično, aplikacija bi se sastojala od određenog broja mikroservisa, pa da bismo testirali u izolaciji, trebamo se rugati ostalim mikrouslugama.

Komponentni testovi također će testirati interakciju mikroservisa s njegovim ovisnostima kao što je baza podataka, sve kao jedna cjelina.

Testovi integracije

Nakon što smo provjerili funkcionalnost svake mikro usluge, trebamo testirati međuuslužne komunikacije. Integracijskim testom provjeravaju se komunikacijski putovi i interakcije između komponenata radi otkrivanja kvarova na sučelju

Pozivi na usluge moraju se obavljati s integracijom na vanjske usluge, što bi trebalo uključivati ​​slučajeve pogrešaka i uspjeha, stoga testiranje integracije potvrđuje da sustav neometano radi zajedno i da su ovisnosti između usluga prisutne kako se očekuje.

Ugovorna ispitivanja

Testovi ugovora provjeravaju interakcije na granici vanjske usluge tvrdeći da ispunjava ugovor koji očekuje usluga koja troši.

Ova vrsta testiranja trebala bi svaku uslugu tretirati kao crni okvir, a sve službe moraju se pozivati ​​neovisno i njihovi odgovori moraju biti provjereni.

'Ugovor' je način na koji se pozivom na uslugu (gdje se očekuje određeni rezultat ili izlaz za određene ulaze) navodi ispitivanjem potrošačkog ugovora. Svaki potrošač mora s vremenom dobiti iste rezultate usluge, čak i ako se usluga promijeni. Trebala bi postojati fleksibilnost da biste dodali više funkcionalnosti kako bi se kasnije zahtijevalo da odgovore. Međutim, ovi dodaci ne smiju narušiti funkcionalnost usluge.

Testovi od kraja do kraja

Uloga end-to-end testova je osigurati da se sve poveže i da nema nesuglasica na visokoj razini između mikro usluga.

Testovi od kraja do kraja potvrđuju da sustav zadovoljava vanjske zahtjeve i postiže svoje ciljeve, testirajući cijeli sustav, od kraja do kraja.

Testovi također potvrđuju da cijeli proces i tokovi korisnika rade ispravno, uključujući sve integracije usluga i DB-a. Temeljito testiranje operacija koje utječu na više usluga osigurava da sustav radi zajedno kao cjelina i zadovoljava sve zahtjeve.

Primjer ispitivanja mikrousluga

Uzmimo mikrouslugu DO to ovisi o dvije druge usluge B & C . Morate uspostaviti izolirano okruženje u kojem je stanje DO , B i C dobro je definiran i može se više puta postaviti.

Na primjer, stanje / pohrana B i C treba prethodno inicirati. Nakon toga samo pokrenete niz testova koji testiraju API-je mikrousluga DO pomoću uobičajenog skupa test alata REST / WebService, npr. SAPUN ili Chakram ili jednostavna xUnit alternativa za vaš programski jezik.

Ismijte sve vršnjačke usluge o kojima API ovisi o korištenju restito. Ostale alternative uključuju pokretač odmora, WireMock i Mochito.

Očiti izazov je ismijavanje / lažiranje API-ja treće strane prilikom provođenja integracijskog testiranja mikro usluga. Možete upotrijebiti bilo koji od gore spomenutih alata za ruganje, samo se lažno ponašajte kao dio našeg testnog uređaja i provjerite jeste li u toku s novim izdanjima API-ja.