Компонентная среда разработки инструментария нагрузочного тестирования Евгений Рачинский. СПбГУ в сотрудничестве с Siemens Corporate Tech

Содержание

Слайд 2

Нагрузочное тестирование Изучение поведения многопользовательской системы под нагрузкой Цели: Оценка характеристик

Нагрузочное тестирование

Изучение поведения многопользовательской системы под нагрузкой
Цели:
Оценка характеристик производительности системы под

нагрузкой
Поиск узких мест в системе
Планирование производительности
Средства
Моделирование нагрузки
Инструментарий генерации нагрузки и измерения показателей
Методы анализа результатов
Слайд 3

Инструментарий Существующие средства нагрузочного тестирования не обладают достаточной гибкостью и адаптивностью

Инструментарий

Существующие средства нагрузочного тестирования не обладают достаточной гибкостью и адаптивностью
Решение: создание

платформы для разработки инструментария нагрузочного тестирования
Области применения
Нагрузочное и стресс тестирование с использованием нестандартных протоколов
Поддержка статистических методов в нагрузочном тестировании
Автоматизация нагрузочного тестирования
Поддержка continues integration process
Слайд 4

Типовая архитектура Load injectors Load Control Measurements Input Output Monitoring

Типовая архитектура

Load injectors

Load

Control

Measurements

Input

Output

Monitoring

Слайд 5

Области расширения Компонентная среда (OSGi/Java) Архитектура основанная на plug-ins API, точки расширения

Области расширения

Компонентная среда (OSGi/Java)
Архитектура основанная на plug-ins
API, точки расширения

Слайд 6

Сценарий Симулирует поведение пользователей Java классы Сценарий Транзакция (шаг) Запрос Иерархичность,

Сценарий

Симулирует поведение пользователей
Java классы
Сценарий
Транзакция (шаг)
Запрос
Иерархичность, модульность
Идентификация частей сценария
Генерация кода сценариев
Отладка (Eclipse)

Слайд 7

Сценарий (пример) public class Service1Scenario extends WebScenario { Transaction1 transaction1 =

Сценарий (пример)

public class Service1Scenario extends WebScenario {
Transaction1 transaction1 = new Transaction1();
Transaction2

transaction2 = new Transaction2();
public void run() {
runTransaction(transaction1);
sleep(1000);
runTransaction(transaction2);
}
}

public class Transaction1 extends WebTransaction {
Request1 request1 = new Request1();
public void run() {
runRequest(request1);
}
}

public class Request1 extends WebRequest {
public void run() {
HttpResponse response = null;
response =
getContext().
getClient().execute(url );
}
}

Слайд 8

Нагрузка Request time Virtual users Think time time Request rate ...

Нагрузка

Request time

Virtual users

Think time

time

Request rate

...

Virtual users

SUT

λ

µ

Нагрузка это частота обращений к системе
Определяется

через
количество виртуальных пользователей И
среднее значение и распределение времени ответа
Слайд 9

Определение нагрузки (пример) int maximumVirtualUsers = 15; int incrementInterval = 60;

Определение нагрузки (пример)

int maximumVirtualUsers = 15;
int incrementInterval = 60;

int incrementVirtaulUsersBy = 1;
public IThinkTime getThinkTimeOnTime(long time) {
return new ConstantThinkTime(1000);
}
public int getVirtualUserNumberOnTime(long time) {
int vu = Math.min(
maximumVirtualUsers,
(int)((time/incrementInterval)+1)*incrementVirtaulUsersBy
);
return vu;
}

int Amplitude = 5; //virtual users
double Frequency = 1/60; //virtual users per second
int VerticalShift = 10; //oscillate around
public IThinkTime getThinkTimeOnTime(long time) {
return new ExponentialThinkTime(1000);
}
public int getVirtualUserNumberOnTime(long time) {
return (int)(VerticalShift + Amplitude*Math.sin(Frequency*time));
}

Слайд 10

Поддержка сетевых протоколов и измерений Любой протокол, имеющий клиентcкие Java библиотеки

Поддержка сетевых протоколов и измерений

Любой протокол, имеющий клиентcкие Java библиотеки
Регистрация

значений:
Время исполнения
Ошибки протокола/приложения
Проткол-специфические измерения (размер пакета, время установления соединения, DNS время и т.п.)
Инструментирование библиотек протоколов
Поддержка протоколов интегрируется в базовые классы сценариев
Слайд 11

Run-time статистика и журналирование Измерения собираются в статистики: Среднее значение Частота

Run-time статистика и журналирование

Измерения собираются в статистики:
Среднее значение
Частота событий
Счетчики
Определенная пользователем
Масштабирование значений


Среднее значение на разных масштабах времени
Расширяемый «движок» статистики
Filter/Pipe design pattern
Журналирование
Набор CSV файлов, Apache Derby
Формат определен протоколом
Слайд 12

Управление тестом Пользовательский интерфейс Eclipse RCP UI Command line Подготовка теста

Управление тестом

Пользовательский интерфейс
Eclipse RCP UI
Command line
Подготовка теста
Eclipse Java IDE, PDE
Рабочее

окружение Eclipse
Исполнение теста и мониторинг
Графики статистики
Расширяемость
Eclipse plugin-ins
Chart API (JFree chart)
ANT tasks

Results export

Load test controller

Load test definition

Слайд 13

Компоненты платформы Scenario Workload Statistics filters definition Network protocol libraries Log

Компоненты платформы

Scenario

Workload

Statistics filters
definition

Network protocol
libraries

Log format definition

Test artifacts (OSGi bundles)

Remote

deploy

Legend:

Platform Service

Deployable component

Слайд 14

Замечания по реализации Высокая производительность агентов Сложность точного измерения времени в

Замечания по реализации
Высокая производительность агентов
Сложность точного измерения времени в Java (msec,

nanosec)
Синхронизация потоков виртуальных пользователей
Синхронизация времени в распределенной среде
Интенсивный поток данных (измерений)
Сложность использование Java аннотаций и рефлексии
Слайд 15

Приложения платформы Стандартное нагрузочное тестирование HTTP, SOAP, RMI Сложные сценарии Различные

Приложения платформы

Стандартное нагрузочное тестирование
HTTP, SOAP, RMI
Сложные сценарии
Различные протоколы в одном сценарии
Симуляция

вероятностного поведения пользователя (СBMG)
Генерация кода сценариев (из трасс или моделей)
Нагрузочное тестирование и регулярная сборка
ANT task для определения и запуска теста

0.9

Слайд 16

Приложения платформы (2) Генерация заданной нагрузки Пуассоновский поток запросов Автоуправление нагрузкой

Приложения платформы (2)

Генерация заданной нагрузки
Пуассоновский поток запросов
Автоуправление нагрузкой в зависимости от

текущих показателей производительности
Измерение среднего значения времени ответа с заданным доверительным интервалом
Автоматический поск максимальной пропускной способности системы (max TPS)
Симуляция пульсирующей нагрузки
Слайд 17

Максимальная пропускная способность системы Load Response time Load Throughput (TPS) Average response time Throughput (TPS)

Максимальная пропускная способность системы

Load

Response time

Load

Throughput (TPS)

Average response time

Throughput (TPS)

Слайд 18

Анализ результатов Пакеты статистической обработки S-Plus (R statistics) Дисперсионный анализ сравнение

Анализ результатов

Пакеты статистической обработки
S-Plus (R statistics)
Дисперсионный анализ
сравнение производительности альтернативных

конфигураций системы
Корреляционный анализ
Вывод параметров аналитических моделей (очереди)
Построение моделей «черного ящика»
Слайд 19

Спасибо за внимание!

Спасибо за внимание!

Слайд 20

Backup slides

Backup slides

Слайд 21

Descriptive statistics example – KPI VS. load

Descriptive statistics example – KPI VS. load

Слайд 22

Тестирование производительности распределенных систем Application Server Authentication Service LDAP Tickets Reservation

Тестирование производительности распределенных систем

Application Server

Authentication Service

LDAP

Tickets Reservation Service

Доступно для тестирования под

нагрузкой

Недоступно для тестирования под нагрузкой

Слайд 23

Approach overview Perform load test and collect measurements Windmill + dynamic

Approach overview

Perform load test and collect measurements
Windmill + dynamic workload
Determine response

time distribution
Statistical tests
Lognormal, Gamma, Weibull distributions
Fit response time distribution parameters
Non-parametric models (cubic splines)
Setup runtime simulator
Analytical or table representation of the model
Performance load test of a SUT
Слайд 24

Results comparison

Results comparison