Upload
ontico
View
103
Download
2
Embed Size (px)
Citation preview
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
Node1Node3 Node4
Node2
19 Международная конференция по вопросам качества ПО
sqadays.com
23
Дело о пропавшей диаграммеПослеДо
App server
Oracle
Node1Node3 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 не параллелится