58
19 Международная конференция по вопросам качества ПО sqadays.com Андрей Дмитриев Москва 2016 Performance Management lessons learnt

Performance management lessons learnt / Андрей Дмитриев (JUGRU)

  • Upload
    ontico

  • View
    103

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

Андрей Дмитриев

Москва 2016

Performance Management lessons learnt

Page 2: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• разработчик, тимлид, груплид

• лидер JUG.ru и CodeFreeze.ru

2

Кто я?

Page 3: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• разработчик, тимлид, груплид

• лидер JUG.ru и CodeFreeze.ru

3

Кто я?

Page 4: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• разработчик, тимлид, груплид

• лидер JUG.ru и CodeFreeze.ru

4

Кто я?

Page 5: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• разработчик, тимлид, груплид

• лидер JUG.ru и CodeFreeze.ru

5

Кто я?

Page 6: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

6

Цель

Page 7: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

7

Цель

Page 8: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

8

Цель

Page 9: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

9

Цель

Page 10: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

• Поделиться своим опытом

10

Цель

Page 11: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

• Поделиться своим опытом

11

Цель

Page 12: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

• Поделиться своим опытом

• Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация:

12

Цель

Page 13: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

• Поделиться своим опытом

• Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация:

• выборки данных,

13

Цель

Page 14: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

• Поделиться своим опытом

• Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация:

• выборки данных,

• предстартовой проверки и

14

Цель

Page 15: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Научить вас проводить performance-тестирование

• Показать как не надо делать

• Поделиться своим опытом

• Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация:

• выборки данных,

• предстартовой проверки и

• анализа результатов.

15

Цель

Page 16: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

• Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация:

• выборки данных,

• предстартовой проверки и

• анализа результатов.

16

ЦельА B

Page 17: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

• Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация:

• выборки данных,

• предстартовой проверки и

• анализа результатов.

17

ЦельА B C

Page 18: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com•Все лгут

•Тестирование – это данные

•Знай и умей свои компоненты

18

План

Page 19: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

19

Все лгут

Page 20: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Файл с 1,5 миллионами ордеров

20

Тестирование начинается с volumetrix

Page 21: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Файл с 1,5 миллионами ордеров

• Валидация заказчиком пройдена

• Тем не менее, ошибка в плане допущена

21

Тестирование начинается с volumetrix

Page 22: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

22

Дело о пропавшей диаграммеПослеДо

App server

Oracle

Node1Node3 Node4

Node2

Page 23: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

23

Дело о пропавшей диаграммеПослеДо

App server

Oracle

Node1Node3 Node4

Node2

Page 24: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет на тесте работает моментально, а на проде - часы

24

Отчет убить нельзя починить

Page 25: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

25

Отчет убить нельзя починить: Было

EVT:

CCN:

PON:

*

*

TOMS:

IMA:

*

Page 26: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

26

Отчет убить нельзя починить: Как нужно

EVT:

CCN:

PON:

*

*

TOMS:

IMA:

ICON:

*

*

Page 27: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

27

Отчет убить нельзя починить: Стало

EVT:

CCN:

PON:

*

*

TOMS:

IMA:

ICON:

*

Page 28: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

28

Отчет убить нельзя починить: Как нужно

EVT:

CCN:

PON:

*

*

TOMS:

IMA:

ICON:

*

*

Page 29: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет на тесте работает моментально, а на проде - часы

• Разработчик в хотфиксе не поставил звездочку на поле

• Тест продолжал искать без одного критерия и выдавал пустое множество

29

Отчет убить нельзя починить

Page 30: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет на тесте работает моментально, а на проде - часы

• Разработчик в хотфиксе не поставил звездочку на поле

• Тест продолжал искать без одного критерия и выдавал пустое множество

• После восстановления функциональности тест по-прежнему работал быстрее, чем на проде

30

Отчет убить нельзя починить

Page 31: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет на тесте работает моментально, а на проде - часы

• Разработчик в хотфиксе не поставил звездочку на поле

• Тест продолжал искать без одного критерия и выдавал пустое множество

• После восстановления функциональности тест по-прежнему работал быстрее, чем на проде

• Но это уже следующая история

31

Отчет убить нельзя починить

Page 32: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

32

Тестирование – это данные

Page 33: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет на тесте работает быстро, а на проде - часы

33

Синтетика данных

Page 34: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет на тесте работает быстро, а на проде - часы

• Причина - разные сложности данных

• Да, мы делаем автопроверку теперь

• Да, мы делаем выборку правильных данных теперь

34

Синтетика данных

Page 35: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет все равно строится дольше, чем ожидается

• Причина: синтетические данные лежат в файлах данных последовательно

• В реальности они сильно фрагментированы

35

Синтетика данных - копаем дальше

Page 36: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отчет все равно строится дольше, чем ожидается

• Причина: синтетические данные лежат в файлах данных последовательно

• В реальности они сильно фрагментированы

• Данные выровняли:

• эмулировали “натуральное” их создание

• создали индексы правильно

• Идеально было бы копировать .dbf-файлы вместо импорта

36

Синтетика данных - копаем дальше

Page 37: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

37

Кривая 90% line

Page 38: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

38

Кривая 90% line

Page 39: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

39

Кривая 90% line

Page 40: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

40

Кривая 90% line

Page 41: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

41

Кривая 90% line

Квартет Энскомба: https://goo.gl/wBOLhI

Page 42: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

42

Знай и умей свои компоненты

Page 43: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Результаты тестов показали таймауты

43

Я твои стабы на перфоманс проверял

Page 44: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Результаты тестов показали таймауты

• Проблема – в стабах

44

Я твои стабы на перфоманс проверял

Page 45: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

45

Я твои стабы на перфоманс проверял

Page 46: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Результаты тестов показали таймауты

• Проблема – в стабах

• Решение – это ядро плюс сторонние компоненты

46

Я твои стабы на перфоманс проверял

Page 47: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отсутствие данных sar на тестовой системе

47

Дело о пропавшей Саре

Page 48: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

• Отсутствие данных sar на тестовой системе

48

Дело о пропавшей Саре

Page 49: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Отсутствие данных sar на тестовой системе

• Причина - переполнение партиции /home

• В чеклист и скрипт включили проверку места подо все

49

Дело о пропавшей Саре

Page 50: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• В отчетах снова стали появляться задержки по 30 секунд!

• Хьюстон, у нас проблемы!

50

Injector не выдержит двоих

Page 51: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• В отчетах снова стали появляться задержки по 30 секунд!

• Хьюстон, у нас проблемы!

51

Injector не выдержит двоих

Injector

Page 52: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Нужна проверка окружения до начала тестов

• Нужна проверка данных до и после замера

• Нужна проверка результатов после замера

• Автоматизация – это не только скрипты тестов

52

Итоги

Page 53: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com

53

Extra

Page 54: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

Введение в Performance Management

• В систему будет поступать в среднем 3000 запросов в сутки

• Длительность теста - 1 час

А. 375 C. 125

B. 3000 D. Неизвестно

Сколько запросов должно быть выполнено за 1 час?

Page 55: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

Введение в Performance Management

• В систему будет поступать в среднем 3000 запросов в сутки

• Длительность теста - 1 час

А. 375 (3000/8) C. 125 (3000/12)

B. 3000 D. Неизвестно

Сколько запросов должно быть выполнено за 1 час?

Page 56: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

Простой пример #1• В систему будет поступать в среднем 3000 запросов в сутки

• Длительность теста - 1 час

• Сколько запросов должно быть выполнено?

Введение в Performance Management

Page 57: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Что такое конфигурация

• Когда используется Compliance

• Причины почему недотюнили

• Что получилось в итоге

57

Мертвая лошадь Compliance

Page 58: Performance management lessons learnt / Андрей Дмитриев (JUGRU)

19 Международная конференция по вопросам качества ПО

sqadays.com• Runnable run = new Runnable (){

• public void run () {

• synchronized (STATIC_OBJECT) {

• вызватьЗапрос();

• }

• }

• }

58

ThreadPool не параллелится