Prova de microserveis: una guia per a principiants

Les proves de microserveis són cada vegada més importants a mesura que moltes de les noves aplicacions es construeixen mitjançant l’arquitectura de microserveis.

Abans de poder veure com provar els microserveis, primer hem d’entendre què són.



Què són els microserveis?

Microservici es defineix com un estil arquitectònic, un enfocament per desenvolupar una sola aplicació com a conjunt de serveis. Cada servei es defineix per les seves característiques, algunes de les quals són:


  • S'està executant en el seu procés.
  • Comunicar-se amb un mecanisme lleuger sovint amb una API de recursos HTTP.
  • Desplegable independentment mitjançant una maquinària totalment automatitzada.
  • Utilització de diferents llenguatges de programació / tecnologies / DB.
  • Utilitza diferents tecnologies d’emmagatzematge de dades.

L'estil arquitectònic de microserveis consisteix a desenvolupar aplicacions individuals que puguin funcionar juntes com un conjunt de serveis petits, cadascun executant-se en el seu procés individual i comunicant-se amb mecanismes lleugers com una API de recursos HTTP. Aquests serveis requereixen una gestió centralitzada mínima, fan servir diferents tecnologies d’emmagatzematge de dades i es poden escriure en diferents llenguatges de programació. Aquests serveis, basats en les capacitats empresarials, també es poden desplegar de forma independent mitjançant maquinària que admeti el desplegament totalment automatitzat.

Característiques dels microserveis:


  • Organitzat al voltant de la capacitat empresarial,
  • Desplegament automatitzat,
  • Intel·ligència en els punts finals en lloc del bus de servei,
  • Control descentralitzat d'idiomes i dades.


En què es diferencien els microserveis de SOA

  • Arquitectura orientada al servei (SOA): un patró arquitectònic en el disseny de programari informàtic en què els components de l’aplicació proporcionen serveis a altres components mitjançant un protocol de comunicacions, normalment a través d’una xarxa.
  • Microserveis : Un estil d’arquitectura de programari en què les aplicacions complexes es componen de petits processos independents que es comuniquen entre ells mitjançant API agnòstiques de llenguatge

Exemple:

Si Uber es construís amb un SOA, els seus serveis podrien ser:

  • GetPaymentsAndDriverInformationAndMappingDataAPI
  • AuthenticateUsersAndDriversAPI

Si Uber es construís amb microserveis, les seves API podrien ser més semblants a:

  • SubmitPaymentsService
  • GetDriverInfoService
  • GetMappingDataService
  • AuthenticateUserService
  • AuthenticateDriverService

Més API, conjunts de responsabilitats més petits.




Com provar els microserveis

Proves d’unitat

Les proves unitàries fan servir petits programes, com ara una funció de l'aplicació, per determinar si produeixen la sortida desitjada donat un conjunt d'entrades conegudes.

Val a dir que les proves unitàries per si soles no ofereixen garanties sobre el comportament del sistema. Necessitem altres tipus de proves de microserveis.

Proves de components

Un cop realitzades les proves d’unitats de totes les funcions d’un microservei, hem de provar el mateix microservei de forma aïllada.

Normalment, una aplicació estaria composta per diversos microserveis, de manera que, per provar de forma aïllada, hem de burlar-nos dels altres microserveis.


Les proves de components també provaran la interacció del microservei amb les seves dependències, com ara una base de dades, tot com una sola unitat.

Proves d’integració

Després de verificar la funcionalitat de cada microservei, hem de provar les comunicacions entre serveis. Una prova d’integració verifica els camins de comunicació i les interaccions entre components per detectar defectes de la interfície

Les trucades al servei s’han de fer amb integració a serveis externs, que han d’incloure casos d’error i èxit, per tant, les proves d’integració validen que el sistema treballa junt sense problemes i que les dependències entre els serveis estan presents tal com s’esperava.

Proves de contracte

Les proves de contracte verificen les interaccions al límit d’un servei extern afirmant que compleix el contracte esperat per un servei consumidor.


Aquest tipus de proves haurien de tractar cada servei com una caixa negra i tots els serveis s’han de trucar de forma independent i s’hauran de verificar les seves respostes.

Un 'contracte' és com es fa referència a una trucada de servei (en què s'espera un resultat o un resultat específic per a determinades entrades) mitjançant la prova del contracte del consumidor. Tots els consumidors han de rebre els mateixos resultats d’un servei al llarg del temps, fins i tot si el servei canvia. Hi hauria d’haver la flexibilitat per afegir més funcionalitats segons es requereixi a les respostes més endavant. Tot i això, aquestes addicions no han de trencar la funcionalitat del servei.

Proves d'extrem a extrem

El paper de les proves de punta a punta és assegurar-se que tot s’uneix i que no hi hagi desacords d’alt nivell entre els microserveis.

Les proves de punta a punta verificen que un sistema compleix els requisits externs i assoleix els seus objectius, provant tot el sistema de cap a cap.


Les proves també verificen que tot el procés i els fluxos d'usuaris funcionin correctament, inclosa tota la integració de serveis i bases de dades. Una prova exhaustiva de les operacions que afecten diversos serveis garanteix que el sistema funcioni junt en conjunt i compleixi tots els requisits.



Exemple de proves de microserveis

Fem un microservei A això depèn d'altres dos serveis B & C . Cal establir un entorn aïllat on es trobi l’estat de A , B i C està ben definit i es pot configurar repetidament.

Per exemple, estat / emmagatzematge de B i C s’hauria de preinicialitzar. Després d’això, només cal que executeu un conjunt de proves que provin les API del microservei A utilitzant el conjunt d’eines de prova REST / WebService habituals, p. SABÓ o bé Chakram o una alternativa xUnit simple per al vostre llenguatge de programació.

Mofeu-vos de qualsevol servei d'igual que l'API depèn d'utilitzar restito. Altres alternatives són rest-driver, WireMock i Mochito.

El desafiament obvi són les API de tercers que es burlen / simulen quan fan proves d’integració de microserveis. Podeu utilitzar qualsevol de les eines de burla esmentades anteriorment; només cal tractar-les com a part del nostre dispositiu de prova i assegurar-vos que esteu al dia amb les noves versions de l'API.