Тестването на Microservices става все по-важно, тъй като много от новите приложения се изграждат с помощта на архитектура Microservices.
Преди да можем да видим как да тестваме микроуслуги, първо трябва да разберем какви са те.
Microservice се определя като архитектурен стил, подход за разработване на едно приложение като набор от услуги. Всяка услуга се определя от нейните характеристики, някои от които са:
Архитектурният стил на микросервиса включва разработване на единични приложения, които могат да работят заедно като набор от малки услуги, като всяко се изпълнява в своя индивидуален процес и комуникира с леки механизми като HTTP API за ресурси. Тези услуги изискват минимално централизирано управление, използват различни технологии за съхранение на данни и могат да бъдат написани на различни програмни езици. Тези услуги, изградени около бизнес възможности, могат също да бъдат внедрени независимо от машини, които поддържат напълно автоматизирано внедряване.
Характеристики на микроуслуги:
Пример:
Ако Uber е изграден със SOA, услугите им могат да бъдат:
Ако Uber е изграден с микроуслуги, техните API могат да бъдат по-скоро като:
Повече API, по-малки набори от отговорности.
Единичните тестове упражняват малките парчета софтуер, като функция в приложението, за да определят дали те произвеждат желания изход при набор от известни входове.
Струва си да се отбележи, че единичното тестване само по себе си не дава гаранции за поведението на системата. Имаме нужда от други видове тестове за микроуслуги.
След като сме извършили модулно тестване на всички функции в рамките на една микрослужба, тогава трябва да тестваме самата микрослужба изолирано.
Обикновено приложението ще бъде съставено от редица микроуслуги, така че за да тестваме изолирано, трябва да се подиграваме с другите микроуслуги.
Тестовете на компоненти също ще тестват взаимодействието на микросервиза с неговите зависимости, като база данни, всички като едно цяло.
След като проверим функционалността на всяка микрослужба, трябва да тестваме комуникациите между услугите. Интеграционен тест проверява комуникационните пътища и взаимодействията между компонентите за откриване на дефекти в интерфейса
Обажданията за услуги трябва да се извършват с интеграция към външни услуги, което трябва да включва случаи на грешки и успех, следователно тестването на интеграция потвърждава, че системата работи безпроблемно и че зависимостите между услугите са налице, както се очаква.
Тестовете по договор проверяват взаимодействията на границата на външна услуга, като твърдят, че тя отговаря на договора, очакван от консумираща услуга.
Този тип тестване трябва да третира всяка услуга като черна кутия и всички услуги трябва да бъдат извикани независимо и отговорите им да бъдат проверени.
„Договор“ е начинът на повикване за услуга (където се очаква конкретен резултат или изход за определени входове) при тестване на потребителския договор. Всеки потребител трябва да получи едни и същи резултати от услугата с течение на времето, дори ако услугата се промени. Трябва да има гъвкавост за добавяне на повече функционалност, както се изисква към отговорите по-късно. Тези допълнения обаче не трябва да нарушават функционалността на услугата.
Ролята на тестовете от край до край е да се увери, че всичко е свързано и няма разногласия на високо ниво между микроуслугите.
Тестовете от край до край проверяват дали системата отговаря на външните изисквания и постига целите си, като тества цялата система от край до край.
Тестовете също така проверяват дали целият процес и потребителските потоци работят правилно, включително всички интеграции на услуги и DB. Изчерпателното тестване на операции, които засягат множество услуги, гарантира, че системата работи заедно като цяло и отговаря на всички изисквания.
Нека вземем микросервиз ДА СЕ това зависи от две други услуги Б. & ° С . Трябва да създадете изолирана среда, където състоянието на ДА СЕ , Б. и ° С е добре дефиниран и може да бъде многократно настроен.
Например състояние / съхранение на Б. и ° С трябва да бъде предварително инициализирана. След това просто стартирате набор от тестове за тестване на API на микросервиз ДА СЕ използвайки обичайния набор от тестови инструменти REST / WebService, напр. САПУН или Чакрам или проста алтернатива xUnit за вашия програмен език.
Подигравайте се с всички партньорски услуги, от които API зависи от използването на restito. Други алтернативи включват драйвер за почивка, WireMock и Mochito.
Очевидното предизвикателство е подигравателните / фалшивите API на трети страни при извършване на интеграционно тестване на микроуслуги. Можете да използвате всеки от инструментите за подигравки, споменати по-горе, просто третирайте макетите като част от нашето тестово устройство и се уверете, че сте в крак с новите версии на API.