101 способ провести нагрузочное тестирование...

72
101 способ провести нагрузочное тестирование неправильно Екатерина Карасаева, Андрей Дмитриев, NetCracker

Upload: sqalab

Post on 14-Nov-2014

835 views

Category:

Education


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 101 способ провести нагрузочное тестирование неправильно

101 способ провести нагрузочное тестирование неправильно

Екатерина Карасаева, Андрей Дмитриев, NetCracker

Page 2: 101 способ провести нагрузочное тестирование неправильно

3© 2014 NetCracker Technology Corporation Confidential

Кто мы

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

• разработчик, тимлид

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

Екатерина Карасаева

• инженер по нагрузочному тестированию

• опыт в нагрузочном тестировании 3,5 года

Page 3: 101 способ провести нагрузочное тестирование неправильно

4© 2014 NetCracker Technology Corporation Confidential

Цель

• Показать подводные камни• Поделиться best-practices

Page 4: 101 способ провести нагрузочное тестирование неправильно

5© 2014 NetCracker Technology Corporation Confidential

Цель

• Показать подводные камни• Поделиться best-practices

Page 5: 101 способ провести нагрузочное тестирование неправильно

6© 2014 NetCracker Technology Corporation Confidential

Цель

• Показать подводные камни• Поделиться best-practices

Page 6: 101 способ провести нагрузочное тестирование неправильно

7© 2014 NetCracker Technology Corporation Confidential

Цель

• Показать подводные камни• Поделиться best-practices

Page 7: 101 способ провести нагрузочное тестирование неправильно

8© 2014 NetCracker Technology Corporation Confidential

Повестка дня

• Что нужно проверять• Тесты: что меряем, что эмулируем• Инструменты под рукой• Процесс замера по шагам• Что можно сделать неправильно?• Вопросы и ответы

Page 8: 101 способ провести нагрузочное тестирование неправильно

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

Page 9: 101 способ провести нагрузочное тестирование неправильно

10© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• ???

Page 10: 101 способ провести нагрузочное тестирование неправильно

11© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Соответствие решения NFR

Page 11: 101 способ провести нагрузочное тестирование неправильно

12© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Соответствие решения NFR• Поиск регрессионных проблем

Page 12: 101 способ провести нагрузочное тестирование неправильно

13© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Соответствие решения NFR• Поиск регрессионных проблем • Оценка пределов системы

Page 13: 101 способ провести нагрузочное тестирование неправильно

14© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Соответствие решения NFR• Поиск регрессионных проблем • Оценка пределов системы• Красивая картинка для клиента

Page 14: 101 способ провести нагрузочное тестирование неправильно

15© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Соответствие решения NFR

• Поиск регрессионных проблем

• Оценка пределов системы

• Красивая картинка для клиента

• ….

Page 15: 101 способ провести нагрузочное тестирование неправильно

16© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Соответствие решения NFR

• Поиск регрессионных проблем

• Оценка пределов системы

• Красивая картинка для клиента

• ….

Page 16: 101 способ провести нагрузочное тестирование неправильно

17© 2014 NetCracker Technology Corporation Confidential

Цель Stress and Volume Testing

• Предсказание поведения на Production-системе

• Соответствие решения NFR

• Поиск регрессионных проблем

• Оценка пределов системы

Page 17: 101 способ провести нагрузочное тестирование неправильно

18© 2014 NetCracker Technology Corporation Confidential

Частые проблемы

• Разное железо и конфигурация• Разные OS, patches, versions• Разные данные• Разные профили нагрузки• Нужен быстрый результат

Page 18: 101 способ провести нагрузочное тестирование неправильно

19© 2014 NetCracker Technology Corporation Confidential

Проблема 5: Разные OS, patches, versions

• “А давайте накатим вам новый патч?”

Page 19: 101 способ провести нагрузочное тестирование неправильно

20© 2014 NetCracker Technology Corporation Confidential

Проблема 5: Разные OS, patches, versions

• “А давайте накатим вам новый патч?”

Выход:• При смене патча, сборки, версии и подобного

нужен замер ДО и ПОСЛЕ (baseline-зАмЕр)• 1 фактор изменения – 1 пара замеров

Page 20: 101 способ провести нагрузочное тестирование неправильно

21© 2014 NetCracker Technology Corporation Confidential

Проблема 5: Разные OS, patches, versions

• “А давайте накатим вам новый патч?”

Выход:• При смене патча, сборки, версии и подобного

нужен замер ДО и ПОСЛЕ (baseline-зАмЕр)• 1 фактор изменения – 1 пара замеров

Page 21: 101 способ провести нагрузочное тестирование неправильно

22© 2014 NetCracker Technology Corporation Confidential

Проблема 9: отличие Production от тестового стенда

• Дамп базы данных• Access logs (поведение пользователей)• Распределение нагрузки

Выход:• Регулярная синхронизация с production

Page 22: 101 способ провести нагрузочное тестирование неправильно

23© 2014 NetCracker Technology Corporation Confidential

Проблема 9: отличие Production от тестового стенда

• Дамп базы данных• Access logs (поведение пользователей)• Распределение нагрузки (

Выход:• Регулярная синхронизация с production

Page 23: 101 способ провести нагрузочное тестирование неправильно

24© 2014 NetCracker Technology Corporation Confidential

Схема решения

Page 24: 101 способ провести нагрузочное тестирование неправильно

25© 2014 NetCracker Technology Corporation Confidential

Схема решения

Page 25: 101 способ провести нагрузочное тестирование неправильно

26© 2014 NetCracker Technology Corporation Confidential

Схема решения

Page 26: 101 способ провести нагрузочное тестирование неправильно

27© 2014 NetCracker Technology Corporation Confidential

Схема решения

Page 27: 101 способ провести нагрузочное тестирование неправильно

28© 2014 NetCracker Technology Corporation Confidential

Схема решения

Integration

Page 28: 101 способ провести нагрузочное тестирование неправильно

29© 2014 NetCracker Technology Corporation Confidential

Схема решения

Integration

Page 29: 101 способ провести нагрузочное тестирование неправильно

30© 2014 NetCracker Technology Corporation Confidential

Схема решения

Integration

Integration

Integration

Page 30: 101 способ провести нагрузочное тестирование неправильно

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

Page 31: 101 способ провести нагрузочное тестирование неправильно

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

Page 32: 101 способ провести нагрузочное тестирование неправильно

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

Page 33: 101 способ провести нагрузочное тестирование неправильно

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

Page 34: 101 способ провести нагрузочное тестирование неправильно

35© 2014 NetCracker Technology Corporation Confidential

Что эмулируют наши тесты?

• дневные бизнес-часы (пользователей в системе 400+);

• ночное время (пользователей в системе 80+, а также интеграции с 20+ системами);

• Тестирование масштабируемости решения (100%, 150%, 200%)

Page 35: 101 способ провести нагрузочное тестирование неправильно

36© 2014 NetCracker Technology Corporation Confidential

Процесс замера

• Регулярный план релизов и сборок

• SVT-план

• Подготовка стенда

• Новые проекты - новые тесты

• Смоук-тестирование

• Нагрузка (дневная, ночная)

• Восстановление базы

• Отчет, анализ проблемы

Page 36: 101 способ провести нагрузочное тестирование неправильно

37© 2014 NetCracker Technology Corporation Confidential

Что можно сделать неправильно?

• ???

Page 37: 101 способ провести нагрузочное тестирование неправильно

38© 2014 NetCracker Technology Corporation Confidential

Что можно сделать неправильно?

• Больше, чем можно себе представить!

Page 38: 101 способ провести нагрузочное тестирование неправильно

39© 2014 NetCracker Technology Corporation Confidential

Что можно сделать неправильно?

• Готовы? Поехали!

Page 39: 101 способ провести нагрузочное тестирование неправильно

40© 2014 NetCracker Technology Corporation Confidential

Проблема 45: Плотное расписание сборок

Page 40: 101 способ провести нагрузочное тестирование неправильно

41© 2014 NetCracker Technology Corporation Confidential

Проблема 45: Плотное расписание сборок

Выход:• автоматизация ручной работы• сокращение тестового покрытия

Page 41: 101 способ провести нагрузочное тестирование неправильно

42© 2014 NetCracker Technology Corporation Confidential

Проблема 45: Плотное расписание сборок

Выход:• автоматизация ручной работы• сокращение тестового покрытия

Page 42: 101 способ провести нагрузочное тестирование неправильно

43© 2014 NetCracker Technology Corporation Confidential

Проблема 56: Сборки сырые, хотфикс на хотфиксе

Page 43: 101 способ провести нагрузочное тестирование неправильно

44© 2014 NetCracker Technology Corporation Confidential

Проблема 56: Сборки сырые, хотфикс на хотфиксе

Выход:• не брать хотфиксов в работу (желательно);• брать сборку с грифом «QA-Passed»• иметь несколько серверов

Page 44: 101 способ провести нагрузочное тестирование неправильно

45© 2014 NetCracker Technology Corporation Confidential

Проблема 56: Сборки сырые, хотфикс на хотфиксе

Выход:• не брать хотфиксов в работу (желательно);• брать сборку с грифом «QA-Passed»• иметь несколько серверов

Маленький хотфикс тестировать столько же, сколько и большой.

Page 45: 101 способ провести нагрузочное тестирование неправильно

46© 2014 NetCracker Technology Corporation Confidential

Проблема 56: Сборки сырые, хотфикс на хотфиксе

Выход:• не брать хотфиксов в работу (желательно);• брать сборку с грифом «QA-Passed» Passed• иметь несколько серверов

Маленький хотфикс тестировать столько же, сколько и большой.

Page 46: 101 способ провести нагрузочное тестирование неправильно

47© 2014 NetCracker Technology Corporation Confidential

Проблема 61: Неправильный выбор нагрузочных сценариев

Page 47: 101 способ провести нагрузочное тестирование неправильно

48© 2014 NetCracker Technology Corporation Confidential

Проблема 61: Неправильный выбор нагрузочных сценариев

Выход:• SVT не должно покрывать все сценарии• Нет – однотипным сценариям!• Да – бизнес-критичным сценариям!• Да – самым тяжелым сценариям!

Page 48: 101 способ провести нагрузочное тестирование неправильно

49© 2014 NetCracker Technology Corporation Confidential

Проблема 61: Неправильный выбор нагрузочных сценариев

Выход:• SVT не должно покрывать все сценарии• Нет – однотипным сценариям!• Да – бизнес-критичным сценариям!• Да – самым тяжелым сценариям!

Page 49: 101 способ провести нагрузочное тестирование неправильно

50© 2014 NetCracker Technology Corporation Confidential

Инструменты под рукой

• Jmeter•sar•Oracle AWR•SVTF

Page 50: 101 способ провести нагрузочное тестирование неправильно

51© 2014 NetCracker Technology Corporation Confidential

Кто такой SVTF и что умеет

• Управление:• профилями тестов;• конфигурацией;• пререквизитами;• замером.

• Сбор логов и статистики с распределенных машин

• История хранения запусков

• Обработка данных и построение отчетов

Page 51: 101 способ провести нагрузочное тестирование неправильно

52© 2014 NetCracker Technology Corporation Confidential

Page 52: 101 способ провести нагрузочное тестирование неправильно

53© 2014 NetCracker Technology Corporation Confidential

Минутка планирования

DataGen Замер Анализ Flashback DataGen

Page 53: 101 способ провести нагрузочное тестирование неправильно

54© 2014 NetCracker Technology Corporation Confidential

Проблема 79: Невалидные входные данные?

Page 54: 101 способ провести нагрузочное тестирование неправильно

55© 2014 NetCracker Technology Corporation Confidential

Проблема 79: Невалидные входные данные?

Выход:• восстановление базы данных после каждого

замера• автоматизированный валидатор входных

данных

Page 55: 101 способ провести нагрузочное тестирование неправильно

56© 2014 NetCracker Technology Corporation Confidential

Проблема 79: Невалидные входные данные?

Выход:• восстановление базы данных после каждого

замера• автоматизированный валидатор входных

данных

Page 56: 101 способ провести нагрузочное тестирование неправильно

57© 2014 NetCracker Technology Corporation Confidential

Проблема 82: Jmeter-скрипт часто валится

Page 57: 101 способ провести нагрузочное тестирование неправильно

58© 2014 NetCracker Technology Corporation Confidential

Проблема 82: Jmeter-скрипт часто валится

Page 58: 101 способ провести нагрузочное тестирование неправильно

59© 2014 NetCracker Technology Corporation Confidential

Проблема 82: Jmeter-скрипт часто валится

Выход:• Чем проще – тем лучше• Нет – пререквизитам в скрипте• Нет – лишней логике в нагрузочном скрипте• Пользоваться стандартными решениями

Page 59: 101 способ провести нагрузочное тестирование неправильно

60© 2014 NetCracker Technology Corporation Confidential

Проблема 82: Jmeter-скрипт часто валится

Выход:• Чем проще – тем лучше• Нет – пререквизитам в скрипте• Нет – лишней логике в нагрузочном скрипте• Пользоваться стандартными решениями

Page 60: 101 способ провести нагрузочное тестирование неправильно

61© 2014 NetCracker Technology Corporation Confidential

Проблема 95: В начале теста сервер тормозит

Page 61: 101 способ провести нагрузочное тестирование неправильно

62© 2014 NetCracker Technology Corporation Confidential

Проблема 95: В начале теста сервер тормозит

Выход:• прогревочный замер обязателен• отрезать первые 10-30 минут из основного

замера

Page 62: 101 способ провести нагрузочное тестирование неправильно

63© 2014 NetCracker Technology Corporation Confidential

Проблема 95: В начале теста сервер тормозит

Выход:• прогревочный замер обязателен• отрезать первые 10-30 минут из основного

замера

Page 63: 101 способ провести нагрузочное тестирование неправильно

64© 2014 NetCracker Technology Corporation Confidential

Проблема 97: Закончилось место во время замера

Page 64: 101 способ провести нагрузочное тестирование неправильно

65© 2014 NetCracker Technology Corporation Confidential

Проблема 97: Закончилось место во время замера

Выход:• знать, сколько места занимает 1 прогон тестов• (авто) чек-лист

‒ tablespaces‒ hdd‒ archivelogs‒ RAM

Page 65: 101 способ провести нагрузочное тестирование неправильно

66© 2014 NetCracker Technology Corporation Confidential

Проблема 97: Закончилось место во время замера

Выход:• знать, сколько места занимает 1 прогон тестов• (авто) чек-лист

‒ tablespaces‒ hdd‒ archivelogs‒ RAM

Page 66: 101 способ провести нагрузочное тестирование неправильно

67© 2014 NetCracker Technology Corporation Confidential

Проблема 101: В фоне что-то работало, невалидный замер

Page 67: 101 способ провести нагрузочное тестирование неправильно

68© 2014 NetCracker Technology Corporation Confidential

Проблема 101: В фоне что-то работало, невалидный замер

Выход:• проверка перед замером, что система в

спокойном состоянии• проверка, что система не находится в swap• выключение соседних инстансов и баз, если

они находятся на одном оборудовании

Page 68: 101 способ провести нагрузочное тестирование неправильно

69© 2014 NetCracker Technology Corporation Confidential

Проблема 101: В фоне что-то работало, невалидный замер

Выход:• проверка перед замером, что система в

спокойном состоянии• проверка, что система не находится в swap• выключение соседних инстансов и баз, если

они находятся на одном оборудовании

Page 69: 101 способ провести нагрузочное тестирование неправильно

70© 2014 NetCracker Technology Corporation Confidential

Выводы

• 100% проблем с производительностью заранее не обнаружить

• Но можно двигаться в этом направлении!

Page 70: 101 способ провести нагрузочное тестирование неправильно

71© 2014 NetCracker Technology Corporation Confidential

Контакты

Андрей Дмитриев• [email protected]

Екатерина Карасаева• [email protected]

Page 71: 101 способ провести нагрузочное тестирование неправильно

Q&A

72© 2014 NetCracker Technology Corporation Confidential

Page 72: 101 способ провести нагрузочное тестирование неправильно

Thank you!

73© 2014 NetCracker Technology Corporation Confidential