Тестване на микроуслуги - Ръководство за начинаещи

Тестването на Microservices става все по-важно, тъй като много от новите приложения се изграждат с помощта на архитектура Microservices.

Преди да можем да видим как да тестваме микроуслуги, първо трябва да разберем какви са те.



Какво представляват микроуслугите?

Microservice се определя като архитектурен стил, подход за разработване на едно приложение като набор от услуги. Всяка услуга се определя от нейните характеристики, някои от които са:


  • Работи в неговия процес.
  • Комуникацията с лек механизъм често с API на HTTP ресурс.
  • Независимо за разгръщане от напълно автоматизирана машина.
  • Използване на различни програмни езици / технологии / DB.
  • Използва различни технологии за съхранение на данни.

Архитектурният стил на микросервиса включва разработване на единични приложения, които могат да работят заедно като набор от малки услуги, като всяко се изпълнява в своя индивидуален процес и комуникира с леки механизми като HTTP API за ресурси. Тези услуги изискват минимално централизирано управление, използват различни технологии за съхранение на данни и могат да бъдат написани на различни програмни езици. Тези услуги, изградени около бизнес възможности, могат също да бъдат внедрени независимо от машини, които поддържат напълно автоматизирано внедряване.

Характеристики на микроуслуги:


  • Организирани около бизнес възможности,
  • Автоматизирано разполагане,
  • Интелигентност в крайните точки, а не в сервизна шина,
  • Децентрализиран контрол на езиците и данните.


По какво се различават микросервизите от SOA

  • Архитектура, ориентирана към услуги (SOA): архитектурен модел в дизайна на компютърен софтуер, при който компонентите на приложението предоставят услуги на други компоненти чрез комуникационен протокол, обикновено през мрежа.
  • Микроуслуги : Стил на софтуерна архитектура, в който сложните приложения се състоят от малки, независими процеси, комуникиращи помежду си с помощта на езиково-агностични API

Пример:

Ако Uber е изграден със SOA, услугите им могат да бъдат:

  • GetPaymentsAndDriverInformationAndMappingDataAPI
  • AuthenticateUsersAndDriversAPI

Ако Uber е изграден с микроуслуги, техните API могат да бъдат по-скоро като:

  • SubmitPaymentsService
  • GetDriverInfoService
  • GetMappingDataService
  • AuthenticateUserService
  • AuthenticateDriverService

Повече API, по-малки набори от отговорности.




Как да тестваме Microservices

Единични тестове

Единичните тестове упражняват малките парчета софтуер, като функция в приложението, за да определят дали те произвеждат желания изход при набор от известни входове.

Струва си да се отбележи, че единичното тестване само по себе си не дава гаранции за поведението на системата. Имаме нужда от други видове тестове за микроуслуги.

Тестове на компоненти

След като сме извършили модулно тестване на всички функции в рамките на една микрослужба, тогава трябва да тестваме самата микрослужба изолирано.

Обикновено приложението ще бъде съставено от редица микроуслуги, така че за да тестваме изолирано, трябва да се подиграваме с другите микроуслуги.


Тестовете на компоненти също ще тестват взаимодействието на микросервиза с неговите зависимости, като база данни, всички като едно цяло.

Тестове за интеграция

След като проверим функционалността на всяка микрослужба, трябва да тестваме комуникациите между услугите. Интеграционен тест проверява комуникационните пътища и взаимодействията между компонентите за откриване на дефекти в интерфейса

Обажданията за услуги трябва да се извършват с интеграция към външни услуги, което трябва да включва случаи на грешки и успех, следователно тестването на интеграция потвърждава, че системата работи безпроблемно и че зависимостите между услугите са налице, както се очаква.

Тестове по договор

Тестовете по договор проверяват взаимодействията на границата на външна услуга, като твърдят, че тя отговаря на договора, очакван от консумираща услуга.


Този тип тестване трябва да третира всяка услуга като черна кутия и всички услуги трябва да бъдат извикани независимо и отговорите им да бъдат проверени.

„Договор“ е начинът на повикване за услуга (където се очаква конкретен резултат или изход за определени входове) при тестване на потребителския договор. Всеки потребител трябва да получи едни и същи резултати от услугата с течение на времето, дори ако услугата се промени. Трябва да има гъвкавост за добавяне на повече функционалност, както се изисква към отговорите по-късно. Тези допълнения обаче не трябва да нарушават функционалността на услугата.

Тестове от край до край

Ролята на тестовете от край до край е да се увери, че всичко е свързано и няма разногласия на високо ниво между микроуслугите.

Тестовете от край до край проверяват дали системата отговаря на външните изисквания и постига целите си, като тества цялата система от край до край.


Тестовете също така проверяват дали целият процес и потребителските потоци работят правилно, включително всички интеграции на услуги и DB. Изчерпателното тестване на операции, които засягат множество услуги, гарантира, че системата работи заедно като цяло и отговаря на всички изисквания.



Пример за тестване на микроуслуги

Нека вземем микросервиз ДА СЕ това зависи от две други услуги Б. & ° С . Трябва да създадете изолирана среда, където състоянието на ДА СЕ , Б. и ° С е добре дефиниран и може да бъде многократно настроен.

Например състояние / съхранение на Б. и ° С трябва да бъде предварително инициализирана. След това просто стартирате набор от тестове за тестване на API на микросервиз ДА СЕ използвайки обичайния набор от тестови инструменти REST / WebService, напр. САПУН или Чакрам или проста алтернатива xUnit за вашия програмен език.

Подигравайте се с всички партньорски услуги, от които API зависи от използването на restito. Други алтернативи включват драйвер за почивка, WireMock и Mochito.

Очевидното предизвикателство е подигравателните / фалшивите API на трети страни при извършване на интеграционно тестване на микроуслуги. Можете да използвате всеки от инструментите за подигравки, споменати по-горе, просто третирайте макетите като част от нашето тестово устройство и се уверете, че сте в крак с новите версии на API.