![Page 1: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/1.jpg)
Компонентная среда разработки инструментария нагрузочного
тестированияЕвгений Рачинский. СПбГУ в сотрудничестве с Siemens Corporate Technology
СПбГУ
![Page 2: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/2.jpg)
Нагрузочное тестирование
• Изучение поведения многопользовательской системы под нагрузкой
• Цели:– Оценка характеристик производительности системы
под нагрузкой– Поиск узких мест в системе– Планирование производительности
• Средства– Моделирование нагрузки– Инструментарий генерации нагрузки и измерения
показателей – Методы анализа результатов
![Page 3: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/3.jpg)
Инструментарий
• Существующие средства нагрузочного тестирования не обладают достаточной гибкостью и адаптивностью
• Решение: создание платформы для разработки инструментария нагрузочного тестирования
• Области применения– Нагрузочное и стресс тестирование с использованием
нестандартных протоколов– Поддержка статистических методов в нагрузочном
тестировании– Автоматизация нагрузочного тестирования – Поддержка continues integration process
![Page 4: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/4.jpg)
Типовая архитектура
Load injectorsLoad injectors
ControllerController
AnalysisAnalysis
Scenario Scenario definitiondefinition
Workload definitionWorkload definition
SUTSUT
Load
Control
Measurements
Input
Output
Monitoring
![Page 5: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/5.jpg)
Области расширения
• Компонентная среда (OSGi/Java)• Архитектура основанная на plug-ins
• API, точки расширения
Platform/framework
Scenario
Workload
Protocol and measurements
Statistics and analysis
Load test management
![Page 6: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/6.jpg)
Сценарий
• Симулирует поведение пользователей
• Java классы– Сценарий– Транзакция (шаг)– Запрос
• Иерархичность, модульность
• Идентификация частей сценария
• Генерация кода сценариев
• Отладка (Eclipse)
Scenario
Transaction
Request
1*
1*
![Page 7: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/7.jpg)
Сценарий (пример)
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 );
}}
![Page 8: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/8.jpg)
НагрузкаRequest time
Virt
ual u
sers
Think time
time
Request rate
...
Virtual users
SUTλ µ
• Нагрузка это частота обращений к системе• Определяется через
– количество виртуальных пользователей И– среднее значение и распределение времени ответа
![Page 9: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/9.jpg)
Определение нагрузки (пример)
Custom osocilating Workload
0
2
4
6
8
10
12
14
16
tim e
Vir
tual
use
rs
Workload
0
2
4
6
8
10
12
14
16
Time
Vir
tual
use
rs
})1)/((,min{)( max incrementVIntervaltVtV 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)); }
)*sin()( tfreqAVtV c
![Page 10: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/10.jpg)
Поддержка сетевых протоколов и измерений
• Любой протокол, имеющий клиентcкие Java библиотеки
• Регистрация значений:– Время исполнения– Ошибки протокола/приложения– Проткол-специфические измерения (размер пакета, время
установления соединения, DNS время и т.п.)
• Инструментирование библиотек протоколов
• Поддержка протоколов интегрируется в базовые классы сценариев
![Page 11: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/11.jpg)
Run-time статистика и журналирование
• Измерения собираются в статистики:– Среднее значение– Частота событий– Счетчики– Определенная пользователем
• Масштабирование значений – Среднее значение на разных масштабах времени
• Расширяемый «движок» статистики– Filter/Pipe design pattern
• Журналирование – Набор CSV файлов, Apache Derby– Формат определен протоколом
![Page 12: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/12.jpg)
Управление тестом
• Пользовательский интерфейс– Eclipse RCP UI– Command line
• Подготовка теста– Eclipse Java IDE, PDE– Рабочее окружение Eclipse
• Исполнение теста и мониторинг – Графики статистики
• Расширяемость– Eclipse plugin-ins– Chart API (JFree chart)– ANT tasks
Response time
0
500
1000
1500
2000
2500
3000
3500
00:0
0:15
00:0
5:45
00:1
1:15
00:1
6:45
00:2
2:15
00:2
7:45
00:3
3:15
00:3
8:45
00:4
4:15
00:4
9:45
00:5
5:15
01:0
0:45
01:0
6:15
01:1
1:45
01:1
7:15
mse
c Transaction1
Transaction2
Results export
Load test controller
Load test definition
Response time distribution density
response time (msec)
De
nsity
0 500 1000 1500
0.0
00
00
.00
10
0.0
02
0 empirical
logNormal
Weibull
gamma
![Page 13: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/13.jpg)
Компоненты платформы
Agent container
Scenario manager
Virtual users manager
Statistics service
Log service
Experiment session Service
Controller container
Workload manager
Experiment workflow
Remote agent management
Run time statistics processing
Results Repository
Scenario
Workload
Statistics filters definition
Network protocol libraries
Log format definition
Test artifacts (OSGi bundles)
Remote deployLegend:
Platform Service Deployable component
![Page 14: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/14.jpg)
Замечания по реализации
• Высокая производительность агентов• Сложность точного измерения времени в Java (msec,
nanosec)• Синхронизация потоков виртуальных пользователей • Синхронизация времени в распределенной среде• Интенсивный поток данных (измерений)• Сложность использование Java аннотаций и
рефлексии
![Page 15: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/15.jpg)
Приложения платформы
• Стандартное нагрузочное тестирование– HTTP, SOAP, RMI
• Сложные сценарии– Различные протоколы в одном сценарии– Симуляция вероятностного поведения
пользователя (СBMG)– Генерация кода сценариев (из трасс или
моделей)
• Нагрузочное тестирование и регулярная сборка – ANT task для определения и запуска теста
0.9
0.3
0.71.0
0.5
1.0
0.5
0.1End
Start
![Page 16: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/16.jpg)
Приложения платформы (2)
• Генерация заданной нагрузки– Пуассоновский поток запросов
• Автоуправление нагрузкой в зависимости от текущих показателей производительности– Измерение среднего значения времени ответа с заданным
доверительным интервалом – Автоматический поск максимальной пропускной способности
системы (max TPS)
• Симуляция пульсирующей нагрузки
![Page 17: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/17.jpg)
Максимальная пропускная способность системы
Load
Res
pons
e tim
e
LoadT
hrou
ghpu
t (T
PS
)
Average response time Throughput (TPS)
![Page 18: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/18.jpg)
Анализ результатов
• Пакеты статистической обработки– S-Plus (R statistics)
• Дисперсионный анализ – сравнение производительности альтернативных
конфигураций системы
• Корреляционный анализ
• Вывод параметров аналитических моделей (очереди)
• Построение моделей «черного ящика»
![Page 19: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/19.jpg)
Спасибо за внимание!
![Page 20: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/20.jpg)
Backup slides
![Page 21: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/21.jpg)
Descriptive statistics example – KPI VS. load
![Page 22: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/22.jpg)
Тестирование производительности
распределенных систем
Web serverWeb server
ApplicationApplication Server Server
Application ServerApplication Server
DatabaseDatabase
Authentication Authentication ServiceService
LDAPLDAP
Tickets Reservation Tickets Reservation ServiceService
Доступно для тестирования под нагрузкой
Недоступно для тестирования под нагрузкой
![Page 23: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/23.jpg)
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
0 10 20 30 40 50 60
05
00
10
00
15
00
Average Response time
Virtual users
Ave
rag
e r
esp
on
se
tim
e (
ms)
0 10 20 30 40 50 60
05
10
15
20
25
Transactions per second
Virtual users
TP
S
Response time distribution density
response time (msec)
De
nsity
0 500 1000 1500
0.0
00
00
.00
10
0.0
02
0
empirical
logNormal
Weibull
gamma
0 10 20 30 40 50
45
67
Response time logmean
queue length
logm
ean
0 10 20 30 40 50
0.4
0.6
0.8
1.0
1.2
1.4
Response time logsd
queue length
logs
d
![Page 24: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/24.jpg)
Results comparisonSUT with real service SUT with emulated serviceLegend:
![Page 25: Компонентная среда разработки инструментария нагрузочного тестирования](https://reader036.vdocuments.pub/reader036/viewer/2022062418/555e1b4dd8b42a9e188b5925/html5/thumbnails/25.jpg)
time