2.11M
Category: marketingmarketing

JMeter. Что такое производительность, профили нагрузки

1.

JMeter.
Что такое производительность,
профили нагрузки.

2.


Временные характеристики
Использование ресурсов
Потенциальные возможности
Тестирование производительности - исследование
системы с целью оценить данные характеристики:
оценить время выполнения операции, оценить
использование ресурсов и потенциальные
возможности тестируемой системы

3.

Характеристики качества:
Время отклика (response time)
Пропускная способность (throughput)
Способность к параллеливанию (concurrency)
Доступность (availability, uptime)
Потребление ресурсов (resource utilization)
Потенциальная мощность (capacity)

4.

Производительность:
Веб сервер
процессор
оперативная память
операционная система
сервер баз данных
наше ПО, которое
разрабатываем
Сеть
скорость
пропускная
способность
Веб сайт
клиентская
программа
(браузер)
Пользователя интересует время отклика на
отправленные запросы.

5.

Производительность:
Но пользователей может быть много и
запросы отправляются одновременно.
Для обработки всех этих запросов требуется:
1. процессорное время для вычислений
2. оперативная память для хранения данных
3. пропускная способность для того, чтобы
обмениваться этими запросами между
клиентами и сервером.

6.

Производительность:
типичная
организация web
приложения:
разнообразие
девайсов, сетей,
провайдеров:
Для организации тестирования такой
сложной системы существует два
пути:
Измерять производительность с точки
зрения этого реального пользователя
Обеспечить определенный запас
мощности(скорости), который будет
съеден промежуточными звеньями.
С какой же скоростью на самом деле
это работает для конечного
пользователя? БЫСТРО? МЕДЛЕННО?

7.

Что значит быстро или медленно?
меньше 0.1 секунды - мгновенно
меньше секунды - быстро
меньше 2 секунд - достаточно быстро
2-4 секунды - приемлемо
4-15 секунды - медленно
больше 15 секунд - очень долго
Необходимо учитывать, что 10 шагов по 0.1 секунде хуже,
чем 1 шаг за 4 секунды.
Необходимо учитывать удобство использования, а не
только производительность.

8.

Что значит быстро или медленно?
Можно и нужно оценивать отдельные части системы:
Например, запрос к базе данных.
Выполнить запрос, проанализировать, выполнить в какомнибудь алгоритме и выявить какой вклад он вносит в
систему в целом.
Анализ необходим для того, чтобы можно было отлаживать
отдельные части системы и оптимизировать.

9.

Классификация проблем:
медленная подсистема/функция
(например медленно загружается страница или выполняется скрипт)
точка насыщения/"узкое горлышко"
(например, пропускная способность сети или очереди для запросов, когда исчерпывается длина
этой очереди и начинаются отказы)
функциональный дефект
(когда несколько систем используют один объект и одновременно меняют его состояние)
дефект интерфейса
(восстановление от ошибки - тесно граничит с UX тестированием)

10.

Как выбрать операцию?
Критически важные (например, авторизация)
Связанные с рисками (например, возврат средств)
Требуемые заказчиком (например, есть просадки по завершению оплаты)
Часто используемые (например, поиск товаров)
Ресурсоемкие (например, получение архива)

11.

Требования к производительности:
стала ли новая версия работать быстрее?
что тормозит - софт или железо?
почему пользователи не завершают заказы?
выдержит ли сервер?
какое состояние приложения?
Цели тестирования:
сравнить две версии приложения
найти причину проблемы с производительностью
оценить потенциальные возможности
получить подтверждение, что все хорошо
Проектирование тестов:
1.
2.
3.
4.
5.
Выясняем цели
Описываем требования и условия
Формулируем гипотезу для проверки
Описываем профиль нагрузки
Делаем сценарии для профиля нагрузки

12.

Как выбрать количество операций и
пользователей?
Отображение на прототипе выполнение
операции в определенной ситуации
должна быть пропорционально реальной
картине на сайте
Модель активности пользователей

13.

Профили нагрузки:
Профиль нагрузки - это подбор сценариев (объединение логических действий) для
эмулирования нагрузки на ресурс.
Например сценарий регистрации ночью на сайте и в популярное время.
Собираются данные, строятся графики и делаются выводы на основании полученных данных.

14.

Профили нагрузки:
Количество пользователей
Количество сценариев
Количество запросов (транзакций)
Задержки между запросами (помогают регулировать количество операций)
Задержки между транзакциями (группами запросов, например загрузка страницы, так как
пользователь читает инфу, заполняет данные и тд)
Запрос - одна операция
Транзакция - группа операций/запросов
Сценарий - граппа транзакций (например переходы по
нескольким страницам сайта)

15.

Профили нагрузки:

16.

Профили нагрузки:
Среднестатистический компьютер ~ 500-600 потоков
*если не использовать тяжеловесные компоненты в JMETER,
такие как View Result Tree
Можно считать:
1) Количество пользователей
2) Количество транзакций/единицу времени
(здесь необходимо стараться, чтобы количество
транзакций было постоянным)

17.

Профили нагрузки:
Потоками (пользователями) можно
регулировать количество транзакций.
jp@gc - Response Times Over Time
Например транзакция выполняется за 0,1сек - 1
пользователь,
если 1 секунда - 10 пользователей.
jp@gc - Synthesis Report (filtered)

18.

Профили нагрузки:
Способ 1
Добавить этот
график можно через:
jp@gc - Active Threads Over Time

19.

Профили нагрузки:
Способ 2
каждые 2 минуты будет добавляться по 6 потоков,
пока не достигнем 30 потоков.
10 мин/5 шагов = 2 минуты(1 шаг)
30 потоков/5 шагов = 6 потоков (1 шаг)
Итого: 3 потока в 1 минуту
После достижения 30 потоков,
в течение 10 минут будут нагружать сервер.
bzm - Concurrency Thread Group
- 30 threads
- 10 minutes Ramp Up Time
- 5 Ramp-Up Steps
- 10 minutes holding the target rate

20.

Профили нагрузки:
1.
2.
3.
4.
5.
jp@gc - Ultimate Thread Group
количество потоков
время перед началом нагрузки
время запуска
время длительности
время прекращения нагрузки

21.

Алгоритм действий:
Выбрать эталонную модель и снять показатели
Поискать точки насыщения
Прогнать не очень долго на 80% от максимума
Прогнать долго на 20% от максимума
Каждый сеанс выполнить несколько раз
Пока идут тесты:
Следить за появлением точек насыщения
Анализировать предыдущие результаты
Готовить следующие запуски
Оценивать производительность в ручную

22.

Для анализа результатов:
jp@gc - Active Threads Over Time
jp@gc - Response Times Over Time
jp@gc - Response Times Percentiles
Summary Report
Simple Data Writer ~/reportJmeter.csv

23.

Используемая функциональность.
HTTP Header Manager.

24.

Используемая функциональность.
User Defined Variables.
адрес сайта
фрагменты пути
фрагменты заголовков
прочие переменные

25.

Литература:
User Community Modeling Language
(UCMLT)
Web load testing for dummies
Пример тест плана .jmx
The Art of Application Performance Testing

26.

Домашнее задание:
Создать тесты для оценки производительности и
быстродействия с профилями нагрузки. Сохранить Test Plan,
файл будем иметь расширение .jmx
English     Русский Rules