Нагрузочное тестирование с помощью GrinderИлья Евлампиев“Exigen Services”
Нагрузочное тестирование…определение того, как быстро работает система при определенной нагрузке. Позволяет также определить такие параметры системы как расширяемость и надежность.Вкратце, это:Имитация реальной нагрузки на системуВыполнение тестовАнализ результатов
	Цели нагрузочного тестированияНедопущение «падения» системыОбойтись без излишних затрат на «железо»Снизить стоимость продуктаОблегчить обслуживаниеПродемонстрировать заказчику, что система удовлетворяет требованиям
	Стратегии нагрузочного тестированияПоиск «узкого горла»ОптимизацияСравнение альтернативных вариантовОпределение максимального объема данныхЧистый интерес
	Типы нагрузочного тестированияНагрузочное тестирование (load testing)Тестирование отказоустойчивости (failover testing)Стресс-тестирование (stress testing)Целевые испытания (targeted infrastructure test)Объемное тестирование (volume testing)Тестирование стабильности (endurance testing)Тестирование производительности (performance testing)Тестирование пропускной способности сети (network sensitivity testing)
	СловарьVuser – виртуальный пользовательLoad generator (agent) – генератор нагрузкиProcess - процессThread - потокRun - прогонRamp-up – «разброс»Load controller – контроллер нагрузки
	Схема
	МетрикиВремена отклика +Построение графиков производительности +Пропускная способность +Надежность (MTBF - MeanTimeBetweenFailures)Доступность (какой процент времени сервис лежал)Загрузка процессораЗагрузка памятиСетевой траффик +Особые показатели сервера приложенийОсобые показатели сервера баз данныхЗапросы в секунду +
	Что нужно знать о каждой метрике?Среднее значениеРазбросМаксимальное и минимальное достигнутое значениеПерцентиль (уложившиеся около среднего 90% результатов)Все распределениеУпавшие запросы (процент)
The Grinder100% Java (любая ОС с поддержкой J2SE)Протоколы HTTP, HTTPS (out of the box)SOAP, XML-RPCIIOP, RMI/IIOP, RMI/JRMP, and JMS.POP3, SMTP, FTP, and LDAP.Базы данных – JDBCСкрипт на Jython / АвтозаписьHTTPGrinderStone for Eclipse - дебаггингБесплатный
	The Grinder: Настройка средыJava (JVM)Jython (add to PATH)Add external JARs to Grinder /lib/
	Схема нагрузочного тестирования
The Grider: Property File
The Grider: Property Filegrinder.processesgrinder.threadsgrinder.runsgrinder.processIncrementgrinder.processIncrementIntervalgrinder.initialProcessesgrinder.durationgrinder.scriptgrinder.initialSleepTimegrinder.sleepTimeVariationgrinder.sleepTimeFactor
	The Grinder: UI
	Workflow: Запись скрипта
	Пример скрипта
Jython“an implementation of the Python programming language written in Java”Python Syntax + ability to use Java classes Python написанный на Java, т.е. с возможностью использовать синтаксис Python и библиотеки Java
Содержимое скриптаИмпорт Java библиотекОпределение переменных (HTTP headers/connectionsettings)Определение прокси-объектов для TestГруппировка отдельных тестов в функции TestgroupВызов каждой тестовой функции из главной функции __call__(self)
	Пример лог файла
 Grinder AnalyzerСпециальный питоновский скрипт для анализа логов, записанных с помощью Grinder HTTP Pluginнеобходима установка Jython/Python
Пример отчета
Пример отчета
	Пример отчета
Вопросы?End

Илья Евлампиев - Grinder

  • 1.
    Нагрузочное тестирование спомощью GrinderИлья Евлампиев“Exigen Services”
  • 2.
    Нагрузочное тестирование…определение того,как быстро работает система при определенной нагрузке. Позволяет также определить такие параметры системы как расширяемость и надежность.Вкратце, это:Имитация реальной нагрузки на системуВыполнение тестовАнализ результатов
  • 3.
    Цели нагрузочного тестированияНедопущение«падения» системыОбойтись без излишних затрат на «железо»Снизить стоимость продуктаОблегчить обслуживаниеПродемонстрировать заказчику, что система удовлетворяет требованиям
  • 4.
    Стратегии нагрузочного тестированияПоиск«узкого горла»ОптимизацияСравнение альтернативных вариантовОпределение максимального объема данныхЧистый интерес
  • 5.
    Типы нагрузочного тестированияНагрузочноетестирование (load testing)Тестирование отказоустойчивости (failover testing)Стресс-тестирование (stress testing)Целевые испытания (targeted infrastructure test)Объемное тестирование (volume testing)Тестирование стабильности (endurance testing)Тестирование производительности (performance testing)Тестирование пропускной способности сети (network sensitivity testing)
  • 6.
    СловарьVuser – виртуальныйпользовательLoad generator (agent) – генератор нагрузкиProcess - процессThread - потокRun - прогонRamp-up – «разброс»Load controller – контроллер нагрузки
  • 7.
  • 8.
    МетрикиВремена отклика +Построениеграфиков производительности +Пропускная способность +Надежность (MTBF - MeanTimeBetweenFailures)Доступность (какой процент времени сервис лежал)Загрузка процессораЗагрузка памятиСетевой траффик +Особые показатели сервера приложенийОсобые показатели сервера баз данныхЗапросы в секунду +
  • 9.
    Что нужно знатьо каждой метрике?Среднее значениеРазбросМаксимальное и минимальное достигнутое значениеПерцентиль (уложившиеся около среднего 90% результатов)Все распределениеУпавшие запросы (процент)
  • 10.
    The Grinder100% Java(любая ОС с поддержкой J2SE)Протоколы HTTP, HTTPS (out of the box)SOAP, XML-RPCIIOP, RMI/IIOP, RMI/JRMP, and JMS.POP3, SMTP, FTP, and LDAP.Базы данных – JDBCСкрипт на Jython / АвтозаписьHTTPGrinderStone for Eclipse - дебаггингБесплатный
  • 11.
    The Grinder: НастройкасредыJava (JVM)Jython (add to PATH)Add external JARs to Grinder /lib/
  • 12.
  • 13.
  • 14.
    The Grider: PropertyFilegrinder.processesgrinder.threadsgrinder.runsgrinder.processIncrementgrinder.processIncrementIntervalgrinder.initialProcessesgrinder.durationgrinder.scriptgrinder.initialSleepTimegrinder.sleepTimeVariationgrinder.sleepTimeFactor
  • 15.
  • 16.
  • 17.
  • 18.
    Jython“an implementation ofthe Python programming language written in Java”Python Syntax + ability to use Java classes Python написанный на Java, т.е. с возможностью использовать синтаксис Python и библиотеки Java
  • 19.
    Содержимое скриптаИмпорт JavaбиблиотекОпределение переменных (HTTP headers/connectionsettings)Определение прокси-объектов для TestГруппировка отдельных тестов в функции TestgroupВызов каждой тестовой функции из главной функции __call__(self)
  • 20.
  • 21.
    Grinder AnalyzerСпециальныйпитоновский скрипт для анализа логов, записанных с помощью Grinder HTTP Pluginнеобходима установка Jython/Python
  • 22.
  • 23.
  • 24.
  • 25.