19 Международная конференция
по вопросам качества ПО
sqadays.com
Андрей Дмитриев
Москва 2016
Performance Management lessons learnt
19 Международная конференция
по вопросам качества ПО
sqadays.com• разработчик, тимлид, груплид
• лидер JUG.ru и CodeFreeze.ru
2
Кто я?
19 Международная конференция
по вопросам качества ПО
sqadays.com• разработчик, тимлид, груплид
• лидер JUG.ru и CodeFreeze.ru
3
Кто я?
19 Международная конференция
по вопросам качества ПО
sqadays.com• разработчик, тимлид, груплид
• лидер JUG.ru и CodeFreeze.ru
4
Кто я?
19 Международная конференция
по вопросам качества ПО
sqadays.com• разработчик, тимлид, груплид
• лидер JUG.ru и CodeFreeze.ru
5
Кто я?
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
6
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
7
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
8
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
9
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
• Поделиться своим опытом
10
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
• Поделиться своим опытом
11
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
• Поделиться своим опытом
• Нагрузочное тестирование – это не (с)только автоматизированные
сценарии, но и автоматизация:
12
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
• Поделиться своим опытом
• Нагрузочное тестирование – это не (с)только автоматизированные
сценарии, но и автоматизация:
• выборки данных,
13
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
• Поделиться своим опытом
• Нагрузочное тестирование – это не (с)только автоматизированные
сценарии, но и автоматизация:
• выборки данных,
• предстартовой проверки и
14
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Научить вас проводить performance-тестирование
• Показать как не надо делать
• Поделиться своим опытом
• Нагрузочное тестирование – это не (с)только автоматизированные
сценарии, но и автоматизация:
• выборки данных,
• предстартовой проверки и
• анализа результатов.
15
Цель
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Нагрузочное тестирование – это не (с)только автоматизированные
сценарии, но и автоматизация:
• выборки данных,
• предстартовой проверки и
• анализа результатов.
16
Цель
А B
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Нагрузочное тестирование – это не (с)только автоматизированные
сценарии, но и автоматизация:
• выборки данных,
• предстартовой проверки и
• анализа результатов.
17
Цель
А B C
19 Международная конференция
по вопросам качества ПО
sqadays.com
•Все лгут
•Тестирование – это данные
•Знай и умей свои компоненты
18
План
19 Международная конференция
по вопросам качества ПО
sqadays.com
19
Все лгут
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Файл с 1,5 миллионами ордеров
20
Тестирование начинается с volumetrix
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Файл с 1,5 миллионами ордеров
• Валидация заказчиком пройдена
• Тем не менее, ошибка в плане допущена
21
Тестирование начинается с volumetrix
19 Международная конференция
по вопросам качества ПО
sqadays.com
22
Дело о пропавшей диаграмме
ПослеДо
App server
Oracle
Node1
Node3 Node4
Node2
19 Международная конференция
по вопросам качества ПО
sqadays.com
23
Дело о пропавшей диаграмме
ПослеДо
App server
Oracle
Node1
Node3 Node4
Node2
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет на тесте работает моментально, а на проде - часы
24
Отчет убить нельзя починить
19 Международная конференция
по вопросам качества ПО
sqadays.com
25
Отчет убить нельзя починить: Было
EVT:
CCN:
PON:
*
*
TOMS:
IMA:
*
19 Международная конференция
по вопросам качества ПО
sqadays.com
26
Отчет убить нельзя починить: Как нужно
EVT:
CCN:
PON:
*
*
TOMS:
IMA:
ICON:
*
*
19 Международная конференция
по вопросам качества ПО
sqadays.com
27
Отчет убить нельзя починить: Стало
EVT:
CCN:
PON:
*
*
TOMS:
IMA:
ICON:
*
19 Международная конференция
по вопросам качества ПО
sqadays.com
28
Отчет убить нельзя починить: Как нужно
EVT:
CCN:
PON:
*
*
TOMS:
IMA:
ICON:
*
*
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет на тесте работает моментально, а на проде - часы
• Разработчик в хотфиксе не поставил звездочку на поле
• Тест продолжал искать без одного критерия и выдавал пустое множество
29
Отчет убить нельзя починить
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет на тесте работает моментально, а на проде - часы
• Разработчик в хотфиксе не поставил звездочку на поле
• Тест продолжал искать без одного критерия и выдавал пустое множество
• После восстановления функциональности тест по-прежнему работал быстрее,
чем на проде
30
Отчет убить нельзя починить
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет на тесте работает моментально, а на проде - часы
• Разработчик в хотфиксе не поставил звездочку на поле
• Тест продолжал искать без одного критерия и выдавал пустое множество
• После восстановления функциональности тест по-прежнему работал быстрее,
чем на проде
• Но это уже следующая история
31
Отчет убить нельзя починить
19 Международная конференция
по вопросам качества ПО
sqadays.com
32
Тестирование – это данные
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет на тесте работает быстро, а на проде - часы
33
Синтетика данных
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет на тесте работает быстро, а на проде - часы
• Причина - разные сложности данных
• Да, мы делаем автопроверку теперь
• Да, мы делаем выборку правильных данных теперь
34
Синтетика данных
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет все равно строится дольше, чем ожидается
• Причина: синтетические данные лежат в файлах данных последовательно
• В реальности они сильно фрагментированы
35
Синтетика данных - копаем дальше
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отчет все равно строится дольше, чем ожидается
• Причина: синтетические данные лежат в файлах данных последовательно
• В реальности они сильно фрагментированы
• Данные выровняли:
• эмулировали “натуральное” их создание
• создали индексы правильно
• Идеально было бы копировать .dbf-файлы вместо импорта
36
Синтетика данных - копаем дальше
19 Международная конференция
по вопросам качества ПО
sqadays.com
37
Кривая 90% line
19 Международная конференция
по вопросам качества ПО
sqadays.com
38
Кривая 90% line
19 Международная конференция
по вопросам качества ПО
sqadays.com
39
Кривая 90% line
19 Международная конференция
по вопросам качества ПО
sqadays.com
40
Кривая 90% line
19 Международная конференция
по вопросам качества ПО
sqadays.com
41
Кривая 90% line
Квартет Энскомба: https://goo.gl/wBOLhI
19 Международная конференция
по вопросам качества ПО
sqadays.com
42
Знай и умей свои компоненты
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Результаты тестов показали таймауты
43
Я твои стабы на перфоманс проверял
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Результаты тестов показали таймауты
• Проблема – в стабах
44
Я твои стабы на перфоманс проверял
19 Международная конференция
по вопросам качества ПО
sqadays.com
45
Я твои стабы на перфоманс проверял
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Результаты тестов показали таймауты
• Проблема – в стабах
• Решение – это ядро плюс сторонние компоненты
46
Я твои стабы на перфоманс проверял
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отсутствие данных sar на тестовой системе
47
Дело о пропавшей Саре
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отсутствие данных sar на тестовой системе
48
Дело о пропавшей Саре
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Отсутствие данных sar на тестовой системе
• Причина - переполнение партиции /home
• В чеклист и скрипт включили проверку места подо все
49
Дело о пропавшей Саре
19 Международная конференция
по вопросам качества ПО
sqadays.com
• В отчетах снова стали появляться задержки по 30 секунд!
• Хьюстон, у нас проблемы!
50
Injector не выдержит двоих
19 Международная конференция
по вопросам качества ПО
sqadays.com
• В отчетах снова стали появляться задержки по 30 секунд!
• Хьюстон, у нас проблемы!
51
Injector не выдержит двоих
Injector
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Нужна проверка окружения до начала тестов
• Нужна проверка данных до и после замера
• Нужна проверка результатов после замера
• Автоматизация – это не только скрипты тестов
52
Итоги
19 Международная конференция
по вопросам качества ПО
sqadays.com
53
Extra
Введение в Performance Management
• В систему будет поступать в
среднем 3000 запросов в сутки
• Длительность теста - 1 час
А. 375 C. 125
B. 3000 D. Неизвестно
Сколько запросов должно быть выполнено за 1 час?
Введение в Performance Management
• В систему будет поступать в
среднем 3000 запросов в сутки
• Длительность теста - 1 час
А. 375 (3000/8) C. 125 (3000/12)
B. 3000 D. Неизвестно
Сколько запросов должно быть выполнено за 1 час?
Простой пример #1
• В систему будет поступать в среднем 3000 запросов в сутки
• Длительность теста - 1 час
• Сколько запросов должно быть выполнено?
Введение в Performance Management
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Что такое конфигурация
• Когда используется Compliance
• Причины почему недотюнили
• Что получилось в итоге
57
Мертвая лошадь Compliance
19 Международная конференция
по вопросам качества ПО
sqadays.com
• Runnable run = new Runnable (){
• public void run () {
• synchronized (STATIC_OBJECT) {
• вызватьЗапрос();
• }
• }
• }
58
ThreadPool не параллелится

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

  • 1.
    19 Международная конференция повопросам качества ПО sqadays.com Андрей Дмитриев Москва 2016 Performance Management lessons learnt
  • 2.
    19 Международная конференция повопросам качества ПО sqadays.com• разработчик, тимлид, груплид • лидер JUG.ru и CodeFreeze.ru 2 Кто я?
  • 3.
    19 Международная конференция повопросам качества ПО sqadays.com• разработчик, тимлид, груплид • лидер JUG.ru и CodeFreeze.ru 3 Кто я?
  • 4.
    19 Международная конференция повопросам качества ПО sqadays.com• разработчик, тимлид, груплид • лидер JUG.ru и CodeFreeze.ru 4 Кто я?
  • 5.
    19 Международная конференция повопросам качества ПО sqadays.com• разработчик, тимлид, груплид • лидер JUG.ru и CodeFreeze.ru 5 Кто я?
  • 6.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование 6 Цель
  • 7.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование 7 Цель
  • 8.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать 8 Цель
  • 9.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать 9 Цель
  • 10.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать • Поделиться своим опытом 10 Цель
  • 11.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать • Поделиться своим опытом 11 Цель
  • 12.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать • Поделиться своим опытом • Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация: 12 Цель
  • 13.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать • Поделиться своим опытом • Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация: • выборки данных, 13 Цель
  • 14.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать • Поделиться своим опытом • Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация: • выборки данных, • предстартовой проверки и 14 Цель
  • 15.
    19 Международная конференция повопросам качества ПО sqadays.com • Научить вас проводить performance-тестирование • Показать как не надо делать • Поделиться своим опытом • Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация: • выборки данных, • предстартовой проверки и • анализа результатов. 15 Цель
  • 16.
    19 Международная конференция повопросам качества ПО sqadays.com • Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация: • выборки данных, • предстартовой проверки и • анализа результатов. 16 Цель А B
  • 17.
    19 Международная конференция повопросам качества ПО sqadays.com • Нагрузочное тестирование – это не (с)только автоматизированные сценарии, но и автоматизация: • выборки данных, • предстартовой проверки и • анализа результатов. 17 Цель А B C
  • 18.
    19 Международная конференция повопросам качества ПО sqadays.com •Все лгут •Тестирование – это данные •Знай и умей свои компоненты 18 План
  • 19.
    19 Международная конференция повопросам качества ПО sqadays.com 19 Все лгут
  • 20.
    19 Международная конференция повопросам качества ПО sqadays.com • Файл с 1,5 миллионами ордеров 20 Тестирование начинается с volumetrix
  • 21.
    19 Международная конференция повопросам качества ПО sqadays.com • Файл с 1,5 миллионами ордеров • Валидация заказчиком пройдена • Тем не менее, ошибка в плане допущена 21 Тестирование начинается с volumetrix
  • 22.
    19 Международная конференция повопросам качества ПО sqadays.com 22 Дело о пропавшей диаграмме ПослеДо App server Oracle Node1 Node3 Node4 Node2
  • 23.
    19 Международная конференция повопросам качества ПО sqadays.com 23 Дело о пропавшей диаграмме ПослеДо App server Oracle Node1 Node3 Node4 Node2
  • 24.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет на тесте работает моментально, а на проде - часы 24 Отчет убить нельзя починить
  • 25.
    19 Международная конференция повопросам качества ПО sqadays.com 25 Отчет убить нельзя починить: Было EVT: CCN: PON: * * TOMS: IMA: *
  • 26.
    19 Международная конференция повопросам качества ПО sqadays.com 26 Отчет убить нельзя починить: Как нужно EVT: CCN: PON: * * TOMS: IMA: ICON: * *
  • 27.
    19 Международная конференция повопросам качества ПО sqadays.com 27 Отчет убить нельзя починить: Стало EVT: CCN: PON: * * TOMS: IMA: ICON: *
  • 28.
    19 Международная конференция повопросам качества ПО sqadays.com 28 Отчет убить нельзя починить: Как нужно EVT: CCN: PON: * * TOMS: IMA: ICON: * *
  • 29.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет на тесте работает моментально, а на проде - часы • Разработчик в хотфиксе не поставил звездочку на поле • Тест продолжал искать без одного критерия и выдавал пустое множество 29 Отчет убить нельзя починить
  • 30.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет на тесте работает моментально, а на проде - часы • Разработчик в хотфиксе не поставил звездочку на поле • Тест продолжал искать без одного критерия и выдавал пустое множество • После восстановления функциональности тест по-прежнему работал быстрее, чем на проде 30 Отчет убить нельзя починить
  • 31.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет на тесте работает моментально, а на проде - часы • Разработчик в хотфиксе не поставил звездочку на поле • Тест продолжал искать без одного критерия и выдавал пустое множество • После восстановления функциональности тест по-прежнему работал быстрее, чем на проде • Но это уже следующая история 31 Отчет убить нельзя починить
  • 32.
    19 Международная конференция повопросам качества ПО sqadays.com 32 Тестирование – это данные
  • 33.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет на тесте работает быстро, а на проде - часы 33 Синтетика данных
  • 34.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет на тесте работает быстро, а на проде - часы • Причина - разные сложности данных • Да, мы делаем автопроверку теперь • Да, мы делаем выборку правильных данных теперь 34 Синтетика данных
  • 35.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет все равно строится дольше, чем ожидается • Причина: синтетические данные лежат в файлах данных последовательно • В реальности они сильно фрагментированы 35 Синтетика данных - копаем дальше
  • 36.
    19 Международная конференция повопросам качества ПО sqadays.com • Отчет все равно строится дольше, чем ожидается • Причина: синтетические данные лежат в файлах данных последовательно • В реальности они сильно фрагментированы • Данные выровняли: • эмулировали “натуральное” их создание • создали индексы правильно • Идеально было бы копировать .dbf-файлы вместо импорта 36 Синтетика данных - копаем дальше
  • 37.
    19 Международная конференция повопросам качества ПО sqadays.com 37 Кривая 90% line
  • 38.
    19 Международная конференция повопросам качества ПО sqadays.com 38 Кривая 90% line
  • 39.
    19 Международная конференция повопросам качества ПО sqadays.com 39 Кривая 90% line
  • 40.
    19 Международная конференция повопросам качества ПО sqadays.com 40 Кривая 90% line
  • 41.
    19 Международная конференция повопросам качества ПО sqadays.com 41 Кривая 90% line Квартет Энскомба: https://goo.gl/wBOLhI
  • 42.
    19 Международная конференция повопросам качества ПО sqadays.com 42 Знай и умей свои компоненты
  • 43.
    19 Международная конференция повопросам качества ПО sqadays.com • Результаты тестов показали таймауты 43 Я твои стабы на перфоманс проверял
  • 44.
    19 Международная конференция повопросам качества ПО sqadays.com • Результаты тестов показали таймауты • Проблема – в стабах 44 Я твои стабы на перфоманс проверял
  • 45.
    19 Международная конференция повопросам качества ПО sqadays.com 45 Я твои стабы на перфоманс проверял
  • 46.
    19 Международная конференция повопросам качества ПО sqadays.com • Результаты тестов показали таймауты • Проблема – в стабах • Решение – это ядро плюс сторонние компоненты 46 Я твои стабы на перфоманс проверял
  • 47.
    19 Международная конференция повопросам качества ПО sqadays.com • Отсутствие данных sar на тестовой системе 47 Дело о пропавшей Саре
  • 48.
    19 Международная конференция повопросам качества ПО sqadays.com • Отсутствие данных sar на тестовой системе 48 Дело о пропавшей Саре
  • 49.
    19 Международная конференция повопросам качества ПО sqadays.com • Отсутствие данных sar на тестовой системе • Причина - переполнение партиции /home • В чеклист и скрипт включили проверку места подо все 49 Дело о пропавшей Саре
  • 50.
    19 Международная конференция повопросам качества ПО sqadays.com • В отчетах снова стали появляться задержки по 30 секунд! • Хьюстон, у нас проблемы! 50 Injector не выдержит двоих
  • 51.
    19 Международная конференция повопросам качества ПО sqadays.com • В отчетах снова стали появляться задержки по 30 секунд! • Хьюстон, у нас проблемы! 51 Injector не выдержит двоих Injector
  • 52.
    19 Международная конференция повопросам качества ПО sqadays.com • Нужна проверка окружения до начала тестов • Нужна проверка данных до и после замера • Нужна проверка результатов после замера • Автоматизация – это не только скрипты тестов 52 Итоги
  • 53.
    19 Международная конференция повопросам качества ПО sqadays.com 53 Extra
  • 54.
    Введение в PerformanceManagement • В систему будет поступать в среднем 3000 запросов в сутки • Длительность теста - 1 час А. 375 C. 125 B. 3000 D. Неизвестно Сколько запросов должно быть выполнено за 1 час?
  • 55.
    Введение в PerformanceManagement • В систему будет поступать в среднем 3000 запросов в сутки • Длительность теста - 1 час А. 375 (3000/8) C. 125 (3000/12) B. 3000 D. Неизвестно Сколько запросов должно быть выполнено за 1 час?
  • 56.
    Простой пример #1 •В систему будет поступать в среднем 3000 запросов в сутки • Длительность теста - 1 час • Сколько запросов должно быть выполнено? Введение в Performance Management
  • 57.
    19 Международная конференция повопросам качества ПО sqadays.com • Что такое конфигурация • Когда используется Compliance • Причины почему недотюнили • Что получилось в итоге 57 Мертвая лошадь Compliance
  • 58.
    19 Международная конференция повопросам качества ПО sqadays.com • Runnable run = new Runnable (){ • public void run () { • synchronized (STATIC_OBJECT) { • вызватьЗапрос(); • } • } • } 58 ThreadPool не параллелится