SlideShare a Scribd company logo
1 of 24
Контрактное
тестирование
микросервисов
На примере PACT
Александр Хотемской - 2017
Содержание
Что такое микросервисы?
Что такое контракт?
Как записать контракт?
Как тестировать контракт?
Что такое
микросервисы?
И зачем они вам определенно нужны
Что такое микросервисы?
Вид архитектуры приложений
Приложение функционально разбито на более мелкие
части – сервисы
Каждый сервис должен решать как можно меньшую
задачу
Протокол общения HTTP (обычно)
Вместо одного большого сервера, получаем сотни мелких
серверов
Что такое микросервисы?
Независимость в работе, обмен только данными
Отказоустойчивость
Быстрое наращивание мощностей, и сворачивание, когда
они не нужны
Проще поддерживать и вносить изменения в отдельный
функционал
Чтотакоемикросервис?Коммуникация между сервисами может быть очень сложной
Сложность разворачивания и поддержки множества отдельных сервисов вместе
Совместимость между разными версиями требует тестирования
Что такое
контракт?
Добавим немного терминологии
Пример
Provider
• Отдает информацию по
животным
• Добавляет животных
Consumer
• Находит пару
животному
• Запрашивает
информацию о
животных у Provider
Контракт
Коллекция соглашений между Consumer и Provider
сервисами, которые описывают коммуникацию которая
может возникать между ними
Контракты помогают разрабатывать Provider так, как это
удобно Consumer
Есть готовые инструменты для работы с контрактами,
например - PACT(JVM, .NET, Python, JavaScript, Go, Swift, и
как отдельный сервис), который позволяет составлять,
хранить и проверять контракты
Как записать
контракт?
Записываем на стороне Consumer
ПишемтестынасторонеConsumer
Как записать контракт?
Подключайте PACT к вашим интеграционным тестам
PACT запускается как конфигурируемый Mock сервер, и
записывает ваши запросы и ответы в контракт
Не забывайте что нам нужно протестировать свой
микросервис, а не чужой!
Постарайтесь минимизировать использование
хардкодженых значений в Mock сервере, PACT дает
возможность устанавливать нестрогие значения
Контракт
Вот такой контракт
записывает PACT
Коллекция запросов и
ожидаемых ответов
Технически это JSON
В минимальном варианте –
можно руками отдавать этот
файл Provider
PactBroker
Специальный репозиторий для ваших контрактов
Хранит, выдает, обновляет ваши контракты
Как
протестировать
контракт?
Проверяем на стороне Provider
ПрогоняемзаписаныйконтрактнасторонеProvider
Как протестировать контракт?
Получите ваш файл контракта, или подключитесь к Pact
Broker
Запустите PACT в режиме Provider
Получите результат
Какпротестировать контракт?
Пример для JS
Общая картина
Которая как всегда намного сложней чем
примеры
Общая картина
Микросервис может выступать как Provider и Consumer
одновременно
Ваши моки требуют поддержки, и это нормально
Самый сложный момент – правильно описать что нужно от
Provider. Вспоминайте классы эквивалентности
Контрактное тестирование это не замена юнит,
интеграционным или e2e тестам
Самостоятельное обмазывание
https://martinfowler.com/articles/microservices.html#Charact
eristicsOfAMicroserviceArchitecture
https://martinfowler.com/articles/consumerDrivenContracts.h
tml
https://docs.pact.io/
https://www.youtube.com/watch?v=nQ0UGY2-YYI
https://github.com/pact-foundation/pact-
js/tree/master/examples/e2e
Теория
Про инструмент
Конец
xotabu4.github.io

More Related Content

Similar to Олександр Хотемський “Обмазываемся контрактными тестами для микросервисов” 

лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
student_kai
 
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Ontico
 
LegalCamp 14/03/2010
LegalCamp 14/03/2010LegalCamp 14/03/2010
LegalCamp 14/03/2010
Derevyanko
 
LegalCamp 14/03/2010
LegalCamp 14/03/2010LegalCamp 14/03/2010
LegalCamp 14/03/2010
Derevyanko
 
выступление
выступлениевыступление
выступление
Derevyanko
 
Windows Server 2008 семинар 15.05
Windows Server 2008   семинар 15.05Windows Server 2008   семинар 15.05
Windows Server 2008 семинар 15.05
Alexander Babich
 
Controlled technical russian
Controlled technical russianControlled technical russian
Controlled technical russian
Goudron1979
 

Similar to Олександр Хотемський “Обмазываемся контрактными тестами для микросервисов”  (20)

IPTV Deployment
IPTV DeploymentIPTV Deployment
IPTV Deployment
 
Облачные сервисы Майкрософт и возможности для партнеров, Azure University
Облачные сервисы Майкрософт и возможности для партнеров, Azure UniversityОблачные сервисы Майкрософт и возможности для партнеров, Azure University
Облачные сервисы Майкрософт и возможности для партнеров, Azure University
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
 
DNS-SD Extentions - Russian
DNS-SD Extentions - RussianDNS-SD Extentions - Russian
DNS-SD Extentions - Russian
 
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey KovyazinАренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
 
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey KovyazinАренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
Аренда ПО Microsoft: как предлагать и как продавать (Russian), Alexey Kovyazin
 
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераHighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
 
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
 
Введение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруВведение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуру
 
LegalCamp 14/03/2010
LegalCamp 14/03/2010LegalCamp 14/03/2010
LegalCamp 14/03/2010
 
LegalCamp 14/03/2010
LegalCamp 14/03/2010LegalCamp 14/03/2010
LegalCamp 14/03/2010
 
выступление
выступлениевыступление
выступление
 
netrox(sc)
netrox(sc)netrox(sc)
netrox(sc)
 
Конструктор договоров: онлайн сервис для создания и ведения документов.
Конструктор договоров: онлайн сервис для создания и ведения документов. Конструктор договоров: онлайн сервис для создания и ведения документов.
Конструктор договоров: онлайн сервис для создания и ведения документов.
 
MSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureMSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on Architecture
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Windows Server 2008 семинар 15.05
Windows Server 2008   семинар 15.05Windows Server 2008   семинар 15.05
Windows Server 2008 семинар 15.05
 
Content provider access 091215
Content provider access 091215Content provider access 091215
Content provider access 091215
 
Онлайн-сервис «Конструктор договоров»
Онлайн-сервис «Конструктор договоров»Онлайн-сервис «Конструктор договоров»
Онлайн-сервис «Конструктор договоров»
 
Controlled technical russian
Controlled technical russianControlled technical russian
Controlled technical russian
 

More from Dakiry

More from Dakiry (20)

НАРЦИСИЗМ ЯК ПАСИВНЕ КУРІННЯ
НАРЦИСИЗМ ЯК ПАСИВНЕ КУРІННЯНАРЦИСИЗМ ЯК ПАСИВНЕ КУРІННЯ
НАРЦИСИЗМ ЯК ПАСИВНЕ КУРІННЯ
 
МАНІПУЛЯЦІЇ: ХТО КОГО І ДЛЯ ЧОГО? - Інна Тіторенко
МАНІПУЛЯЦІЇ: ХТО КОГО І ДЛЯ ЧОГО? - Інна ТіторенкоМАНІПУЛЯЦІЇ: ХТО КОГО І ДЛЯ ЧОГО? - Інна Тіторенко
МАНІПУЛЯЦІЇ: ХТО КОГО І ДЛЯ ЧОГО? - Інна Тіторенко
 
How to run a discovery workshop
How to run a discovery workshopHow to run a discovery workshop
How to run a discovery workshop
 
З понеділка йду на новий проект. The tester’s version - Олександра Зубаль
З понеділка йду на новий проект. The tester’s version - Олександра ЗубальЗ понеділка йду на новий проект. The tester’s version - Олександра Зубаль
З понеділка йду на новий проект. The tester’s version - Олександра Зубаль
 
Робота з текстом: від чернетки до опублікування
Робота з текстом: від чернетки до опублікуванняРобота з текстом: від чернетки до опублікування
Робота з текстом: від чернетки до опублікування
 
Контентна стратегія в ІТ: від статті до першого ліда
Контентна стратегія в ІТ: від статті до першого лідаКонтентна стратегія в ІТ: від статті до першого ліда
Контентна стратегія в ІТ: від статті до першого ліда
 
Oleh Shpyrna "Security Testing Basics: Check your Webapp for gaps before l_unch"
Oleh Shpyrna "Security Testing Basics: Check your Webapp for gaps before l_unch"Oleh Shpyrna "Security Testing Basics: Check your Webapp for gaps before l_unch"
Oleh Shpyrna "Security Testing Basics: Check your Webapp for gaps before l_unch"
 
Stepan Shykerynets "Power of QA (A Journey: From Hell to Heaven. Story of gr...
Stepan Shykerynets "Power of QA (A Journey: From Hell to Heaven.  Story of gr...Stepan Shykerynets "Power of QA (A Journey: From Hell to Heaven.  Story of gr...
Stepan Shykerynets "Power of QA (A Journey: From Hell to Heaven. Story of gr...
 
Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."Микола Солопій "Selenium рулить, однак..."
Микола Солопій "Selenium рулить, однак..."
 
Oleksandra Zubal "Project starters: test automation view"
Oleksandra Zubal "Project starters: test automation view"Oleksandra Zubal "Project starters: test automation view"
Oleksandra Zubal "Project starters: test automation view"
 
Vladyslav Romanchenko "How to keep high code quality without e2e tests"
Vladyslav Romanchenko "How to keep high code quality without e2e tests"Vladyslav Romanchenko "How to keep high code quality without e2e tests"
Vladyslav Romanchenko "How to keep high code quality without e2e tests"
 
Діана Пінчук "Як відрізнити авторизацію від аутентифікації та перестати бояти...
Діана Пінчук "Як відрізнити авторизацію від аутентифікації та перестати бояти...Діана Пінчук "Як відрізнити авторизацію від аутентифікації та перестати бояти...
Діана Пінчук "Як відрізнити авторизацію від аутентифікації та перестати бояти...
 
Yuriy Malyi "E2E testing organization in multi-system projects"
Yuriy Malyi "E2E testing organization in multi-system projects"Yuriy Malyi "E2E testing organization in multi-system projects"
Yuriy Malyi "E2E testing organization in multi-system projects"
 
Petro Tarasenko "You've become a TL. What's next?"
 Petro Tarasenko "You've become a TL. What's next?" Petro Tarasenko "You've become a TL. What's next?"
Petro Tarasenko "You've become a TL. What's next?"
 
Roman Yakymchuk "Дослідницьке тестування. Перезапуск"
Roman Yakymchuk "Дослідницьке тестування. Перезапуск"Roman Yakymchuk "Дослідницьке тестування. Перезапуск"
Roman Yakymchuk "Дослідницьке тестування. Перезапуск"
 
Maryna Shulga "Mission Impossible. Впровадити тест процеси, якщо ніхто цього ...
Maryna Shulga "Mission Impossible. Впровадити тест процеси, якщо ніхто цього ...Maryna Shulga "Mission Impossible. Впровадити тест процеси, якщо ніхто цього ...
Maryna Shulga "Mission Impossible. Впровадити тест процеси, якщо ніхто цього ...
 
Олексій Брошков "Мистецтво Дослідницького Тестування"
Олексій Брошков "Мистецтво Дослідницького Тестування"Олексій Брошков "Мистецтво Дослідницького Тестування"
Олексій Брошков "Мистецтво Дослідницького Тестування"
 
Альона Тудан " Життя QA в ажурі"
Альона Тудан " Життя QA в ажурі"Альона Тудан " Життя QA в ажурі"
Альона Тудан " Життя QA в ажурі"
 
Андрій Степура "Тренди в публічних виступах"
Андрій Степура "Тренди в публічних виступах"Андрій Степура "Тренди в публічних виступах"
Андрій Степура "Тренди в публічних виступах"
 
Зоряна Борбулевич "Підхід, який трансформував компанію Microsoft: ННК і його...
Зоряна Борбулевич "Підхід, який трансформував компанію Microsoft:  ННК і його...Зоряна Борбулевич "Підхід, який трансформував компанію Microsoft:  ННК і його...
Зоряна Борбулевич "Підхід, який трансформував компанію Microsoft: ННК і його...
 

Олександр Хотемський “Обмазываемся контрактными тестами для микросервисов” 

Editor's Notes

  1. https://github.com/pact-foundation/pact-js/tree/master/examples/e2e#animal-profile-api