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
О Себе
• Разработчик с 2006
• Тестировщик с 2007
• Менеджер с 2009
• Инженер 2006 - н.в.
!
!
!
@PapaMinos
http://test-fail...
Преамбула
3
При	
  увеличении	
  объема	
  хранимых	
  данных	
  в	
  10	
  раз,	
  	
  
систему	
  хранения	
  данных	
  ...
Кейс №1: Попадание на
Antispam
Цель: проверить что пользователь попадающий на
цензор блокируется
!
Шаги:
Свежесозданным по...
Кейс №1: Попадание на
Antispam
5
Кейс №2
Цель: проверить «тяжелые» данные на окружениях
!
Предусловие: у пользователя есть видео, настройки
доступа к нему ...
Кейс №2: Окружения и данные
7
Кейс №3: Уникальное видео
Цель: проверить перекодирование видео
!
Шаги:
Пользователь загружает новое (уникальное) видео.
П...
(промежуточный) Итог
9
(промежуточный) Итог
10
Монолитная архитектура
11
Микросервисы
• Никто не знает что такое микросервисы
• Есть общие характеристики
• Есть мнение что микросерсвисы это:
• «п...
Микросервисная архитектура
13
Характерные черты
• Выделение компонентов в сервисы
• Организация вокруг нужд бизнеса (DDD)
• Связи между узлами не имеют ...
Микросервисы и автотесты
15
Что это нам дает
Надежность
Скорость
Трудные	
  места
Удобство
Окружения
16
Хранение контента
17
Хранение контента
18
Генерация контента
19
Сгенерированное видео
20
История	
  про	
  WebDriver	
  Torso	
  от	
  Google	
  
Преимущества
• Весь контент в одном месте
• Отдельно от кода
• Можно генерировать
• Сервис всегда можно сделать умнее
21
22
Storekeeper
Регистрация
23
Удаление
24
Что умеет
• Регистрировать ботов
• Отдавать ботов в тесты
• пол, возраст, прочее…
• Удалять ботов
• Разблокировать ботов
2...
Как это работает
26
storekeeper.deleteBot(bot)
storekeeper.getBot()
Storekeeper: Результаты
• Ускорение	
  тестов	
  
• Профит	
  при	
  увеличении	
  числа	
  
ботов	
  
• Запас	
  ботов	
 ...
28
Mnemonic
Окружения
29
Окружения (на самом деле)
30
Key
Prod	
  value
Test	
  value	
  
Stage	
  value
Dev	
  value
31
Key - Value
KEY
Bot	
  1	
  +	
  State
Bot	
  2	
  +	
  State
Bot	
  3	
  +	
  State
Ботнеты
32
Ботнеты в природе
33
Ботнеты в природе
34
Как это работает
mnemonic.setMessage("key").setForCurrent(targetURL);
35
mnemonic.getMessage("key").getForCurrent(targetUR...
Мир вокруг
36
Мир вокруг
37
Мир вокруг
38
Все вместе
HUB
NODE1 NODE	
  2 NODE	
  3 NODE	
  4
A A A A
39
Чтобы взлетело
• Мониторинги
• Логи
• Healthcheck-и
• Понимание взаимосвязей между сервисами
40
Мысль
41
measure performance before and after each
attempted optimization.	

Joshua Bloch, Effective Java
Выводы
• Тестовый фреймворк - не свалка
• Нет единого решения всех проблем
• Делай одну простую вещь хорошо
• Комбинируй п...
Куда идти?
• Мартин Фаулер о
микросервисах
• Selenium-Grid-Extras
• Grible
• Курсы от 10gen по
mongodb (бесплатные)
43
Цел...
Спасибо!
Никита Макаров 

Руководитель группы автоматизации тестирования,
Одноклассники
nikita.makarov@odnoklassniki.ru
!
...
И, да…
есть	
  такая	
  работа	
  –	
  сидеть	
  в	
  
«Одноклассниках»	
  
!
http://v.ok.ru
45
Upcoming SlideShare
Loading in …5
×

Микросервисы для автоматизации тестирования - опыт "Одноклассников"

Доклад Никиты Макарова на конференции SQA Days-17,
29-30 мая 2015 г., Минск
www.sqadays.com

  • Be the first to comment

  • Be the first to like this

Микросервисы для автоматизации тестирования - опыт "Одноклассников"

  1. 1. Микросервисы для автоматизации тестирования - опыт "Одноклассников" 1
  2. 2. О Себе • Разработчик с 2006 • Тестировщик с 2007 • Менеджер с 2009 • Инженер 2006 - н.в. ! ! ! @PapaMinos http://test-failed.blogspot.com 2
  3. 3. Преамбула 3 При  увеличении  объема  хранимых  данных  в  10  раз,     систему  хранения  данных  скорее  всего  придется  пересмотреть
 Олег  Анастасьев При  увеличении  количества  выполняемых  автотестов  в  10  раз,     систему  обеспечивающую  их  выполнение  придется  пересмотреть  
  4. 4. Кейс №1: Попадание на Antispam Цель: проверить что пользователь попадающий на цензор блокируется ! Шаги: Свежесозданным пользователем войти на портал Отправить нецензурное сообщение N пользователям Словить блокировку при попытке отправить сообщение в N+1 раз 4
  5. 5. Кейс №1: Попадание на Antispam 5
  6. 6. Кейс №2 Цель: проверить «тяжелые» данные на окружениях ! Предусловие: у пользователя есть видео, настройки доступа к нему и соц. граф. ! Шаги: Войти другом пользователя, проверить что контент доступен. Войти пользователем, закрыть доступ к контенту Для друзей контент доступен 6
  7. 7. Кейс №2: Окружения и данные 7
  8. 8. Кейс №3: Уникальное видео Цель: проверить перекодирование видео ! Шаги: Пользователь загружает новое (уникальное) видео. Проверить что видео прошло обработку и воспроизводится. ! 8
  9. 9. (промежуточный) Итог 9
  10. 10. (промежуточный) Итог 10
  11. 11. Монолитная архитектура 11
  12. 12. Микросервисы • Никто не знает что такое микросервисы • Есть общие характеристики • Есть мнение что микросерсвисы это: • «правильное SOA» • «лучшая часть SOA» • «SOA наизнанку» 12
  13. 13. Микросервисная архитектура 13
  14. 14. Характерные черты • Выделение компонентов в сервисы • Организация вокруг нужд бизнеса (DDD) • Связи между узлами не имеют фукнционального значения • Децентрализация управления и данных • Автоматизация развертывания • Эволюционный дизайн и дизайн «на отказ» 14
  15. 15. Микросервисы и автотесты 15
  16. 16. Что это нам дает Надежность Скорость Трудные  места Удобство Окружения 16
  17. 17. Хранение контента 17
  18. 18. Хранение контента 18
  19. 19. Генерация контента 19
  20. 20. Сгенерированное видео 20 История  про  WebDriver  Torso  от  Google  
  21. 21. Преимущества • Весь контент в одном месте • Отдельно от кода • Можно генерировать • Сервис всегда можно сделать умнее 21
  22. 22. 22 Storekeeper
  23. 23. Регистрация 23
  24. 24. Удаление 24
  25. 25. Что умеет • Регистрировать ботов • Отдавать ботов в тесты • пол, возраст, прочее… • Удалять ботов • Разблокировать ботов 25 TDS  в  Spotify
  26. 26. Как это работает 26 storekeeper.deleteBot(bot) storekeeper.getBot()
  27. 27. Storekeeper: Результаты • Ускорение  тестов   • Профит  при  увеличении  числа   ботов   • Запас  ботов     • Локальный  запуск 27
  28. 28. 28 Mnemonic
  29. 29. Окружения 29
  30. 30. Окружения (на самом деле) 30
  31. 31. Key Prod  value Test  value   Stage  value Dev  value 31 Key - Value
  32. 32. KEY Bot  1  +  State Bot  2  +  State Bot  3  +  State Ботнеты 32
  33. 33. Ботнеты в природе 33
  34. 34. Ботнеты в природе 34
  35. 35. Как это работает mnemonic.setMessage("key").setForCurrent(targetURL); 35 mnemonic.getMessage("key").getForCurrent(targetURL); mnemonic.getStructMessage("key2").getForCurrent(targetURL);
  36. 36. Мир вокруг 36
  37. 37. Мир вокруг 37
  38. 38. Мир вокруг 38
  39. 39. Все вместе HUB NODE1 NODE  2 NODE  3 NODE  4 A A A A 39
  40. 40. Чтобы взлетело • Мониторинги • Логи • Healthcheck-и • Понимание взаимосвязей между сервисами 40
  41. 41. Мысль 41 measure performance before and after each attempted optimization. Joshua Bloch, Effective Java
  42. 42. Выводы • Тестовый фреймворк - не свалка • Нет единого решения всех проблем • Делай одну простую вещь хорошо • Комбинируй простые вещи 42
  43. 43. Куда идти? • Мартин Фаулер о микросервисах • Selenium-Grid-Extras • Grible • Курсы от 10gen по mongodb (бесплатные) 43 Цель.  Элияху  Голдратт
  44. 44. Спасибо! Никита Макаров 
 Руководитель группы автоматизации тестирования, Одноклассники nikita.makarov@odnoklassniki.ru ! ! 44 @PapaMinos http://test-failed.blogspot.com
  45. 45. И, да… есть  такая  работа  –  сидеть  в   «Одноклассниках»   ! http://v.ok.ru 45

×