Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ядро автоматизации под микро-сервисную архитектуру

1,189 views

Published on

Доклад Дмитрия Химиона на конференции SQA Days-21
www.sqadays.com

Published in: Education
  • Be the first to comment

  • Be the first to like this

Ядро автоматизации под микро-сервисную архитектуру

  1. 1. Software quality assurance days 21 Международная конференция по вопросам качества ПО sqadays.com Москва. 26–27 мая 2017 Дмитрий Химион Avito. Москва, Россия Ядро автоматизации тестирования под µ-сервисную архитектуру
  2. 2. Ядро автоматизации тестирования под микро-сервисную архитектуру Дмитрий Химион Head of quality assurance Avito Докладчик на конференциях: 62 проектов по автоматизации тестирования +9 прототипов инструментов АТ • SQA Days 13 • ITSM Forum • SQA Days 14 • SQA Days 15 • SQA Days 16 • CodeFest 2015 • SQA Days 17 • Quality days • SQA Days 18 • CodeFest 2016 • SQA Days 19 • QA FEST 2016 • SQA Days 20
  3. 3. Введение "an implementation should be conservative in its sending behavior, and liberal in its receiving behavior" Ядро автоматизации тестирования под микро-сервисную архитектуру Jon Postel
  4. 4. Введение "an implementation should be conservative in its sending behavior, and liberal in its receiving behavior" Ядро автоматизации тестирования под микро-сервисную архитектуру + µServices =Avito Jon Postel
  5. 5. • Что такое µ-сервисная архитектура • Контракты для µ-сервисной архитектуры • Предикаты для CDC-testing • Имплементация автоматизации под CDC • Учесть при разработке • Итоги • Вопросы Ядро автоматизации тестирования под микро-сервисную архитектуру План доклада
  6. 6. Ядро автоматизации тестирования под микро-сервисную архитектуру Что такое µ-сервисная архитектура? External Service Front-end • Небольшая функция • ≈ 500 LoC
  7. 7. Ядро автоматизации тестирования под микро-сервисную архитектуру Переход к µ-сервисам Back-endFront-end External Service Monolithic
  8. 8. Ядро автоматизации тестирования под микро-сервисную архитектуру Back-end µS4 µS2µS1 µS3 µS9 µS5µS6 µS8 µS10 µS7 Переход к µ-сервисам
  9. 9. Ядро автоматизации тестирования под микро-сервисную архитектуру µS4 µS2µS1 µS3 µS9 µS5 µS6 µS8 µS10µS7 Front- end DB2 DB1 External Service Переход к µ-сервисам
  10. 10. Ядро автоматизации тестирования под микро-сервисную архитектуру µS4 µS2µS1 µS3 µS9 µS5 µS6 µS8µS7 Front- end DB2 DB1 External Service Переход к µ-сервисам µS10
  11. 11. Ядро автоматизации тестирования под микро-сервисную архитектуру µS4 µS2µS1 µS3 µS9 µS5 µS6 µS8µS7 Front- end DB2 DB1 External Service Переход к µ-сервисам µS10
  12. 12. Ядро автоматизации тестирования под микро-сервисную архитектуру Контракты для µ-сервисной архитектуры ServiceY «Classic» Contracts
  13. 13. Ядро автоматизации тестирования под микро-сервисную архитектуру Контракты для µ-сервисной архитектуры µS10 ServiceY «Classic» Contracts Consumer Driven Contracts Consumer Consumer Consumer Provider
  14. 14. Ядро автоматизации тестирования под микро-сервисную архитектуру Контракты для µ-сервисной архитектуры µS10 Consumer Driven Contracts CDC
  15. 15. Ядро автоматизации тестирования под микро-сервисную архитектуру Контракты для µ-сервисной архитектуры µS10 Consumer Driven Contracts CDC CDC-testing (для команды тестирования)
  16. 16. Ядро автоматизации тестирования под микро-сервисную архитектуру Предикаты для CDC-testing 1. Наличие контрактов в разработке 2. Договорённость работать по CDC
  17. 17. Ядро автоматизации тестирования под микро-сервисную архитектуру Предикаты для CDC-testing Repository push Post-hook auto-test Jira task 1. 2. ? 1. Наличие контрактов в разработке 2. Договорённость работать по CDC
  18. 18. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation PACT framework µS6
  19. 19. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation PACT framework µS6
  20. 20. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation PACT framework µS6 Test_1 Test… Test_X External service
  21. 21. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation Logger PACT framework µS6 Test_1 Test… Test_X
  22. 22. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC PACT framework
  23. 23. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Logger PACT framework UP TO YOU
  24. 24. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation Logger PACT framework Config reader µS6 Test_1 Test… Test_X
  25. 25. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation Logger PACT framework Config reader µS6 State :request :response Pact files Test_1 Test… Test_X
  26. 26. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC :request :response Pact files
  27. 27. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC :request :response Pact files
  28. 28. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC State :request :response Pact files
  29. 29. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Test Automation Logger PACT framework Suite runner Config reader µS6 trigger Test_1 Test… Test_X State :request :response Pact files event
  30. 30. Ядро автоматизации тестирования под микро-сервисную архитектуру µS4 µS2µS1 µS3 µS9 µS5 µS6 µS8µS7 Front- end DB2 DB1 External Service Перехода к µ-сервисам µS10
  31. 31. Ядро автоматизации тестирования под микро-сервисную архитектуру Имплементация автоматизации под CDC Mocks/Stubs Test Automation PACT framework µS6 µS8 µS10 µSX µSY Pact files state
  32. 32. Ядро автоматизации тестирования под микро-сервисную архитектуру Учесть при имплементации • Контейнеры для изоляции тестирования • Актуализация «Pact file» требований по контрактам • Ввести процесс актуализации «States» и «Data Suites»
  33. 33. Ядро автоматизации тестирования под микро-сервисную архитектуру Учесть при имплементации • Контейнеры для изоляции тестирования • Актуализация «Pact file» - требований по контрактам • Ввести процесс актуализации «States» и «Data Suites»
  34. 34. Ядро автоматизации тестирования под микро-сервисную архитектуру Учесть при имплементации • Контейнеры для изоляции тестирования • Актуализация «Pact file» требований по контрактам • Ввести процесс актуализацию «States» и «Data Suites» Pact files Test Automation Logger PACT framework Suite runner Config reader Data Suites = Data Driven Testing •Positive •Boundary •Negative
  35. 35. Ядро автоматизации тестирования под микро-сервисную архитектуру Учесть при имплементации • Контейнеры для изоляции тестирования • Актуализация «Pact file» требований по контрактам • Ввести процесс актуализации «States» и «Data Suites» Pact files State Test Automation Logger PACT framework Suite runner Config reader State = • Precondition • SetUp • Fixture
  36. 36. Ядро автоматизации тестирования под микро-сервисную архитектуру Итоги • Post-hooks – часть решения • CDC pattern в разработке – это необходимость • Снижение склонности системы к появлению дефектов • Возможность уйти от ручного тестирования изменений
  37. 37. Вопросы? Picasso-key dmitry.khimion@gmail.com dmitry.khimion Ядро автоматизации тестирования под микро-сервисную архитектуру uestions nswers
  38. 38. Ядро автоматизации тестирования под микро-сервисную архитектуру The benefits to this approach are that you know who all the consumers of your service are, you’ll know when you make breaking changes so it is easier to make changes and the contract is also a form of documentation. Secondly, you’ll know exactly what functionality needs to be provided so you can implement the right services needed by your consumers and can follow the YAGNI principle Ruby Pact: https://github.com/realestate-com-au/pact JVM Pact: https://github.com/DiUS/pact-jvm .Net Pact: https://github.com/SEEK-Jobs/pact-net Pact Go: https://github.com/pact-foundation/pact-go Pact.js: https://github.com/pact-foundation/pact-js Pact Swift: https://github.com/DiUS/pact-consumer-swift Pact Python: https://github.com/pact-foundation/pact-python

×