101 способ провести нагрузочное тестирование...
DESCRIPTION
TRANSCRIPT
101 способ провести нагрузочное тестирование неправильно
Екатерина Карасаева, Андрей Дмитриев, NetCracker
3© 2014 NetCracker Technology Corporation Confidential
Кто мы
Андрей Дмитриев
• разработчик, тимлид
• лидер Jug.ru и CodeFreeze.ru
Екатерина Карасаева
• инженер по нагрузочному тестированию
• опыт в нагрузочном тестировании 3,5 года
4© 2014 NetCracker Technology Corporation Confidential
Цель
• Показать подводные камни• Поделиться best-practices
5© 2014 NetCracker Technology Corporation Confidential
Цель
• Показать подводные камни• Поделиться best-practices
6© 2014 NetCracker Technology Corporation Confidential
Цель
• Показать подводные камни• Поделиться best-practices
7© 2014 NetCracker Technology Corporation Confidential
Цель
• Показать подводные камни• Поделиться best-practices
8© 2014 NetCracker Technology Corporation Confidential
Повестка дня
• Что нужно проверять• Тесты: что меряем, что эмулируем• Инструменты под рукой• Процесс замера по шагам• Что можно сделать неправильно?• Вопросы и ответы
9© 2014 NetCracker Technology Corporation Confidential
Термины
• NFR (Non-Functional Requirements)• SVT (Stress and Volume Testing)• Response Time• Throughput• Production vs Test Server vs QA Server/Dev Server• Integrations
10© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• ???
11© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Соответствие решения NFR
12© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Соответствие решения NFR• Поиск регрессионных проблем
13© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Соответствие решения NFR• Поиск регрессионных проблем • Оценка пределов системы
14© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Соответствие решения NFR• Поиск регрессионных проблем • Оценка пределов системы• Красивая картинка для клиента
15© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Соответствие решения NFR
• Поиск регрессионных проблем
• Оценка пределов системы
• Красивая картинка для клиента
• ….
16© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Соответствие решения NFR
• Поиск регрессионных проблем
• Оценка пределов системы
• Красивая картинка для клиента
• ….
17© 2014 NetCracker Technology Corporation Confidential
Цель Stress and Volume Testing
• Предсказание поведения на Production-системе
• Соответствие решения NFR
• Поиск регрессионных проблем
• Оценка пределов системы
18© 2014 NetCracker Technology Corporation Confidential
Частые проблемы
• Разное железо и конфигурация• Разные OS, patches, versions• Разные данные• Разные профили нагрузки• Нужен быстрый результат
19© 2014 NetCracker Technology Corporation Confidential
Проблема 5: Разные OS, patches, versions
• “А давайте накатим вам новый патч?”
20© 2014 NetCracker Technology Corporation Confidential
Проблема 5: Разные OS, patches, versions
• “А давайте накатим вам новый патч?”
Выход:• При смене патча, сборки, версии и подобного
нужен замер ДО и ПОСЛЕ (baseline-зАмЕр)• 1 фактор изменения – 1 пара замеров
21© 2014 NetCracker Technology Corporation Confidential
Проблема 5: Разные OS, patches, versions
• “А давайте накатим вам новый патч?”
Выход:• При смене патча, сборки, версии и подобного
нужен замер ДО и ПОСЛЕ (baseline-зАмЕр)• 1 фактор изменения – 1 пара замеров
22© 2014 NetCracker Technology Corporation Confidential
Проблема 9: отличие Production от тестового стенда
• Дамп базы данных• Access logs (поведение пользователей)• Распределение нагрузки
Выход:• Регулярная синхронизация с production
23© 2014 NetCracker Technology Corporation Confidential
Проблема 9: отличие Production от тестового стенда
• Дамп базы данных• Access logs (поведение пользователей)• Распределение нагрузки (
Выход:• Регулярная синхронизация с production
24© 2014 NetCracker Technology Corporation Confidential
Схема решения
25© 2014 NetCracker Technology Corporation Confidential
Схема решения
26© 2014 NetCracker Technology Corporation Confidential
Схема решения
27© 2014 NetCracker Technology Corporation Confidential
Схема решения
28© 2014 NetCracker Technology Corporation Confidential
Схема решения
Integration
29© 2014 NetCracker Technology Corporation Confidential
Схема решения
Integration
30© 2014 NetCracker Technology Corporation Confidential
Схема решения
Integration
Integration
Integration
31© 2014 NetCracker Technology Corporation Confidential
Проблема 28: входные данные отличаются от Production
Location House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
Location
Location
Location
32© 2014 NetCracker Technology Corporation Confidential
Проблема 28: входные данные отличаются от Production
Выход:
• данные как-на-продакшн
• автоматизированный генератор данных как-на-продакшн
Location House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
Location
Location
Location
33© 2014 NetCracker Technology Corporation Confidential
Проблема 28: входные данные отличаются от Production
Выход:
• данные как-на-продакшн
• автоматизированный генератор данных как-на-продакшн
Location House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
Location
Location
Location
34© 2014 NetCracker Technology Corporation Confidential
Проблема 28: входные данные отличаются от Production
Выход:
• данные как-на-продакшн
• автоматизированный генератор данных как-на-продакшн
House Record
House Record
Location House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
House Record
Location
Location
Location
35© 2014 NetCracker Technology Corporation Confidential
Что эмулируют наши тесты?
• дневные бизнес-часы (пользователей в системе 400+);
• ночное время (пользователей в системе 80+, а также интеграции с 20+ системами);
• Тестирование масштабируемости решения (100%, 150%, 200%)
36© 2014 NetCracker Technology Corporation Confidential
Процесс замера
• Регулярный план релизов и сборок
• SVT-план
• Подготовка стенда
• Новые проекты - новые тесты
• Смоук-тестирование
• Нагрузка (дневная, ночная)
• Восстановление базы
• Отчет, анализ проблемы
37© 2014 NetCracker Technology Corporation Confidential
Что можно сделать неправильно?
• ???
38© 2014 NetCracker Technology Corporation Confidential
Что можно сделать неправильно?
• Больше, чем можно себе представить!
39© 2014 NetCracker Technology Corporation Confidential
Что можно сделать неправильно?
• Готовы? Поехали!
40© 2014 NetCracker Technology Corporation Confidential
Проблема 45: Плотное расписание сборок
41© 2014 NetCracker Technology Corporation Confidential
Проблема 45: Плотное расписание сборок
Выход:• автоматизация ручной работы• сокращение тестового покрытия
42© 2014 NetCracker Technology Corporation Confidential
Проблема 45: Плотное расписание сборок
Выход:• автоматизация ручной работы• сокращение тестового покрытия
43© 2014 NetCracker Technology Corporation Confidential
Проблема 56: Сборки сырые, хотфикс на хотфиксе
44© 2014 NetCracker Technology Corporation Confidential
Проблема 56: Сборки сырые, хотфикс на хотфиксе
Выход:• не брать хотфиксов в работу (желательно);• брать сборку с грифом «QA-Passed»• иметь несколько серверов
45© 2014 NetCracker Technology Corporation Confidential
Проблема 56: Сборки сырые, хотфикс на хотфиксе
Выход:• не брать хотфиксов в работу (желательно);• брать сборку с грифом «QA-Passed»• иметь несколько серверов
Маленький хотфикс тестировать столько же, сколько и большой.
46© 2014 NetCracker Technology Corporation Confidential
Проблема 56: Сборки сырые, хотфикс на хотфиксе
Выход:• не брать хотфиксов в работу (желательно);• брать сборку с грифом «QA-Passed» Passed• иметь несколько серверов
Маленький хотфикс тестировать столько же, сколько и большой.
47© 2014 NetCracker Technology Corporation Confidential
Проблема 61: Неправильный выбор нагрузочных сценариев
48© 2014 NetCracker Technology Corporation Confidential
Проблема 61: Неправильный выбор нагрузочных сценариев
Выход:• SVT не должно покрывать все сценарии• Нет – однотипным сценариям!• Да – бизнес-критичным сценариям!• Да – самым тяжелым сценариям!
49© 2014 NetCracker Technology Corporation Confidential
Проблема 61: Неправильный выбор нагрузочных сценариев
Выход:• SVT не должно покрывать все сценарии• Нет – однотипным сценариям!• Да – бизнес-критичным сценариям!• Да – самым тяжелым сценариям!
50© 2014 NetCracker Technology Corporation Confidential
Инструменты под рукой
• Jmeter•sar•Oracle AWR•SVTF
51© 2014 NetCracker Technology Corporation Confidential
Кто такой SVTF и что умеет
• Управление:• профилями тестов;• конфигурацией;• пререквизитами;• замером.
• Сбор логов и статистики с распределенных машин
• История хранения запусков
• Обработка данных и построение отчетов
52© 2014 NetCracker Technology Corporation Confidential
53© 2014 NetCracker Technology Corporation Confidential
Минутка планирования
DataGen Замер Анализ Flashback DataGen
54© 2014 NetCracker Technology Corporation Confidential
Проблема 79: Невалидные входные данные?
55© 2014 NetCracker Technology Corporation Confidential
Проблема 79: Невалидные входные данные?
Выход:• восстановление базы данных после каждого
замера• автоматизированный валидатор входных
данных
56© 2014 NetCracker Technology Corporation Confidential
Проблема 79: Невалидные входные данные?
Выход:• восстановление базы данных после каждого
замера• автоматизированный валидатор входных
данных
57© 2014 NetCracker Technology Corporation Confidential
Проблема 82: Jmeter-скрипт часто валится
58© 2014 NetCracker Technology Corporation Confidential
Проблема 82: Jmeter-скрипт часто валится
59© 2014 NetCracker Technology Corporation Confidential
Проблема 82: Jmeter-скрипт часто валится
Выход:• Чем проще – тем лучше• Нет – пререквизитам в скрипте• Нет – лишней логике в нагрузочном скрипте• Пользоваться стандартными решениями
60© 2014 NetCracker Technology Corporation Confidential
Проблема 82: Jmeter-скрипт часто валится
Выход:• Чем проще – тем лучше• Нет – пререквизитам в скрипте• Нет – лишней логике в нагрузочном скрипте• Пользоваться стандартными решениями
61© 2014 NetCracker Technology Corporation Confidential
Проблема 95: В начале теста сервер тормозит
62© 2014 NetCracker Technology Corporation Confidential
Проблема 95: В начале теста сервер тормозит
Выход:• прогревочный замер обязателен• отрезать первые 10-30 минут из основного
замера
63© 2014 NetCracker Technology Corporation Confidential
Проблема 95: В начале теста сервер тормозит
Выход:• прогревочный замер обязателен• отрезать первые 10-30 минут из основного
замера
64© 2014 NetCracker Technology Corporation Confidential
Проблема 97: Закончилось место во время замера
65© 2014 NetCracker Technology Corporation Confidential
Проблема 97: Закончилось место во время замера
Выход:• знать, сколько места занимает 1 прогон тестов• (авто) чек-лист
‒ tablespaces‒ hdd‒ archivelogs‒ RAM
66© 2014 NetCracker Technology Corporation Confidential
Проблема 97: Закончилось место во время замера
Выход:• знать, сколько места занимает 1 прогон тестов• (авто) чек-лист
‒ tablespaces‒ hdd‒ archivelogs‒ RAM
67© 2014 NetCracker Technology Corporation Confidential
Проблема 101: В фоне что-то работало, невалидный замер
68© 2014 NetCracker Technology Corporation Confidential
Проблема 101: В фоне что-то работало, невалидный замер
Выход:• проверка перед замером, что система в
спокойном состоянии• проверка, что система не находится в swap• выключение соседних инстансов и баз, если
они находятся на одном оборудовании
69© 2014 NetCracker Technology Corporation Confidential
Проблема 101: В фоне что-то работало, невалидный замер
Выход:• проверка перед замером, что система в
спокойном состоянии• проверка, что система не находится в swap• выключение соседних инстансов и баз, если
они находятся на одном оборудовании
70© 2014 NetCracker Technology Corporation Confidential
Выводы
• 100% проблем с производительностью заранее не обнаружить
• Но можно двигаться в этом направлении!
71© 2014 NetCracker Technology Corporation Confidential
Контакты
Андрей Дмитриев• [email protected]
Екатерина Карасаева• [email protected]
Q&A
72© 2014 NetCracker Technology Corporation Confidential
Thank you!
73© 2014 NetCracker Technology Corporation Confidential