Тестирование 
производительности 
IT-Академия Алексея Сухорукова
Тестирование производительности 
• Тестирование, которое проводится с 
целью определения, как быстро 
работает вычислительная система или 
её часть под определённой нагрузкой 
• Может служить для проверки и 
подтверждения других атрибутов 
качества системы, таких как 
масштабируемость, надежность и 
потребление ресурсов
Цели тестирования 
производительности 
• демонстрация того, что система 
удовлетворяет критериям 
производительности 
• Определение, производительность 
какой из двух или нескольких систем 
лучше 
• определение, какой элемент нагрузки 
или часть системы приводит к 
снижению производительности
Направления тестирования 
производительности 
• Нагрузочное тестирование 
• Стрессовное тестирование (stress 
testing) 
• Объемное тестирование (volume 
testing) 
• Тестирование стабильности (Stability / 
Reliability Testing) 
• Конфигурационное тестирование
Нагрузочное тестирование 
• Исследует работу системы под 
регалментируемой нагрузкой 
• Проводится, чтобы убедиться, что 
приложение обладает 
запланированной пропускной 
способностью и работает стабильно 
• Можно узнать, какова 
производительностьсистемы на 
заданном количестве пользователей и 
плановой нагрузке
Стрессовое тестирование 
• Используется для 
определения пределов 
пропускной способности 
приложения 
• Система подвергается экстремальным нагрузкам и 
исследуется ее поведение в ситуациях, когда 
регламентируемые пределы нагрузок в несколько раз 
выше 
• Можно найти истинный предел работы приложения
Объемное тестирование 
• Исследует работу системы при 
увеличении объема 
обрабатываемой информации 
• Можно выяснить, что будет, 
если база данных прилодения 
вырастет в несколько раз 
• Производится измерение времени работы выбранных 
операций при определенной интенсивности 
• Производится измерение количества пользователей, 
одновременно работающих с приложением
Тестирование стабильности 
• Проверяет 
длительную работу 
системы при 
среднем уровне 
нагрузки 
• Не очень важна скорость выполнения 
отдельных операций 
• Главные объекты мсследования: утечки памяти, 
перезагрузки серверов, и другие аспекты 
которые могут повлиять на стабильность 
работы системы
Конфигурационное тестирование 
• тестируется эффект влияния на 
производительность изменений в 
конфигурации 
• эксперименты с различными методами 
балансировки нагрузки 
• может быть совмещено с нагрузочным, 
стресс или тестированием 
стабильности
Метрики тестирования 
производительности 
• Показатели производительности 
приложения, получаемые при 
тестировании производительности 
• Используются для анализа 
производительности приложения
Примеры метрик 
• Потребление ресурсов центрального 
процессора (CPU, %) 
• Потребление оперативной памяти 
(Memory usage, Mb) 
• Потребление сетевых ресурсов 
• Работа с дисковой подсистемой (I/O 
Wait) 
• Время выполнения запроса (request 
response time, ms)
Компоненты 
• Система (system under test) 
• Нагрузчик (loader) 
• Мониторинг (значения метрик)
• Виртуальный пользователь (Virtual 
User) - программный процесс, циклически 
выполняющий моделируемые операции 
• Профиль нагрузки (Performance Profile) 
- это набор операций с заданными 
интенсивностями, полученный на основе 
сбора статистических данных либо 
определенный путем анализа требований 
к тестируемой системе
JMeter 
• инструмент для проведения нагрузочного 
тестирования, разрабатываемый Apache 
Software Foundation 
• способен проводить нагрузочные тесты для 
JDBC-соединений, FTP, LDAP, SOAP, JMS, 
POP3, IMAP, HTTP и TCP 
• логирование результатов теста 
• визуализация результатов в виде диаграмм, 
таблиц и т. п.
Тест-план в JMeter 
План тестирования (Test Plan) веб- 
приложения представляет собой 
описание последовательности шагов, 
которые будет исполнять JMeter
Содержание плана тестирования 
• Группы потоков (Thread Groups) 
• Логические контроллеры (Logic conrollers) 
• Генераторы нагрузки (Samplers) 
• Слушатели (Listeners) 
• Таймеры (Timers) 
• Утверждения, проверки (Assertions) 
• Конфигурационные элементы (Configuration 
elements)
Thread Groups 
• позволяет задавать параметры 
генерируемой на приложение нагрузки 
• Является профилем нагрузки 
• Отдельный поток - виртуальный 
пользователь
Основные параметры Thread Groups 
– Number of threads - количество имитируемых 
пользователей одновременно работающих с 
сайтом; 
– Ramp-up period - общее время, за которое все 
виртуальные пользователи должны быть 
запущены; 
– Loop count - количество раз, которое будет 
выполняться сценарий внутри Thread Group; 
– Forever – сценарий будет выполняться всегда, 
пока не будет прерван явно; 
– Scheduler – планировщик времени работы 
сценария; 
– Action to be taken after a Sample Error – действие, 
выполняемое после того, как сэмплер (запрос) 
вызовет ошибку.
Автоматическая запись скрипта 
• Создаем прокси-сервер: WorkBench -> Add 
-> Non-Test Elements -> HTTP Proxy Server. 
• Указываем любой свободный порт
Автоматическая запись скрипта (2) 
• Настраиваем браузер (для IE): Сервис 
-> Свойства обозревателя -> 
Подключения -> кнопка Настройка 
сети -> Использовать прокси-сервер 
• Возвращаемся в JMeter и нажимаем 
Start 
• Все обращения браузера будут 
записываться.
HTTP Request 
• Для работы с HTTP трафиком в JMeter 
предусмотрен элемент «HTTP 
Request» 
• Для его создания необходимо добавить 
элемент «Thread Group» и из 
контекстного меню этого элемента 
выбрать «Add» -> «Sampler -> «HTTP 
Request»
Основные параметры запроса 
• Name - Название запроса 
• Server name or IP - Адрес веб-сервера (URL или IP- 
адрес) 
• Port number - Порт веб-сервера (по умолчанию 80) 
• Protoсol (default http) - Протокол (по умолчанию 
HTTP) 
• Method - Метод передачи данных 
• Path - Путь к запускаемому файлу на сервере 
• Parameters - Передаваемые параметры и их 
значения
Структура HTTP-сообщения 
• Стартовая строка (Starting line) — определяет 
тип сообщения; 
• Заголовки (Headers) — характеризуют тело 
сообщения, параметры передачи и прочие 
сведения; 
• Тело сообщения (Message Body) — 
непосредственно данные сообщения. 
Обязательно должно отделяться от 
заголовков пустой строкой 
Заголовки и тело сообщения могут 
отсутствовать, но стартовая строка 
является обязательным элементом.
Стартовая строка 
• Строка запроса: Метод URI HTTP/Версия 
• Метод (Method) — название запроса, 
одно слово заглавными буквами. 
• URI определяет путь к запрашиваемому 
документу. 
• Версия (Version) — пара разделённых 
точкой цифр. Например: 1.0
Пример 
• Страница википедии 
http://ru.wikipedia.org/wiki/HTTP 
• HTTP запрос 
GET /wiki/HTTP HTTP/1.0 - стар. 
строка 
Host: ru.wikipedia.org - заголовки 
(пустая строка) - сообщение
Методы 
• GET - используется для запроса 
содержимого указанного ресурса 
• POST - применяется для передачи 
пользовательских данных заданному 
ресурсу
View Results Tree 
• Встроенная в JMeter возможность 
просматривать ответы на запросы
Aggregate Report 
• Сводный отчет в виде таблицы, каждая 
строка которого соответствует имени 
запроса в тесте
• Samples – количество запросов с данной меткой 
• Average – среднее время выполнения запросов 
• Median – 50% быстрее этого значения и 50% 
медленнее этого значения 
• 90% Line - 90% бестрее этого значения 
• Min – минимальное время выполнения запроса 
• Max – максимальное время выполнения запроса 
• Error % - % запросов, выполненных с ошибкой 
• Throughput – пропускная способность в 
час/минуту/секунду, в зависимости от скорости 
выполнения 
• Kb/sec – пропускная способность измеряеятся в 
кбит/секунду.

6 лекция. тестирование производительности

  • 1.
  • 2.
    Тестирование производительности •Тестирование, которое проводится с целью определения, как быстро работает вычислительная система или её часть под определённой нагрузкой • Может служить для проверки и подтверждения других атрибутов качества системы, таких как масштабируемость, надежность и потребление ресурсов
  • 3.
    Цели тестирования производительности • демонстрация того, что система удовлетворяет критериям производительности • Определение, производительность какой из двух или нескольких систем лучше • определение, какой элемент нагрузки или часть системы приводит к снижению производительности
  • 4.
    Направления тестирования производительности • Нагрузочное тестирование • Стрессовное тестирование (stress testing) • Объемное тестирование (volume testing) • Тестирование стабильности (Stability / Reliability Testing) • Конфигурационное тестирование
  • 5.
    Нагрузочное тестирование •Исследует работу системы под регалментируемой нагрузкой • Проводится, чтобы убедиться, что приложение обладает запланированной пропускной способностью и работает стабильно • Можно узнать, какова производительностьсистемы на заданном количестве пользователей и плановой нагрузке
  • 6.
    Стрессовое тестирование •Используется для определения пределов пропускной способности приложения • Система подвергается экстремальным нагрузкам и исследуется ее поведение в ситуациях, когда регламентируемые пределы нагрузок в несколько раз выше • Можно найти истинный предел работы приложения
  • 7.
    Объемное тестирование •Исследует работу системы при увеличении объема обрабатываемой информации • Можно выяснить, что будет, если база данных прилодения вырастет в несколько раз • Производится измерение времени работы выбранных операций при определенной интенсивности • Производится измерение количества пользователей, одновременно работающих с приложением
  • 8.
    Тестирование стабильности •Проверяет длительную работу системы при среднем уровне нагрузки • Не очень важна скорость выполнения отдельных операций • Главные объекты мсследования: утечки памяти, перезагрузки серверов, и другие аспекты которые могут повлиять на стабильность работы системы
  • 9.
    Конфигурационное тестирование •тестируется эффект влияния на производительность изменений в конфигурации • эксперименты с различными методами балансировки нагрузки • может быть совмещено с нагрузочным, стресс или тестированием стабильности
  • 10.
    Метрики тестирования производительности • Показатели производительности приложения, получаемые при тестировании производительности • Используются для анализа производительности приложения
  • 11.
    Примеры метрик •Потребление ресурсов центрального процессора (CPU, %) • Потребление оперативной памяти (Memory usage, Mb) • Потребление сетевых ресурсов • Работа с дисковой подсистемой (I/O Wait) • Время выполнения запроса (request response time, ms)
  • 12.
    Компоненты • Система(system under test) • Нагрузчик (loader) • Мониторинг (значения метрик)
  • 13.
    • Виртуальный пользователь(Virtual User) - программный процесс, циклически выполняющий моделируемые операции • Профиль нагрузки (Performance Profile) - это набор операций с заданными интенсивностями, полученный на основе сбора статистических данных либо определенный путем анализа требований к тестируемой системе
  • 14.
    JMeter • инструментдля проведения нагрузочного тестирования, разрабатываемый Apache Software Foundation • способен проводить нагрузочные тесты для JDBC-соединений, FTP, LDAP, SOAP, JMS, POP3, IMAP, HTTP и TCP • логирование результатов теста • визуализация результатов в виде диаграмм, таблиц и т. п.
  • 15.
    Тест-план в JMeter План тестирования (Test Plan) веб- приложения представляет собой описание последовательности шагов, которые будет исполнять JMeter
  • 16.
    Содержание плана тестирования • Группы потоков (Thread Groups) • Логические контроллеры (Logic conrollers) • Генераторы нагрузки (Samplers) • Слушатели (Listeners) • Таймеры (Timers) • Утверждения, проверки (Assertions) • Конфигурационные элементы (Configuration elements)
  • 17.
    Thread Groups •позволяет задавать параметры генерируемой на приложение нагрузки • Является профилем нагрузки • Отдельный поток - виртуальный пользователь
  • 18.
    Основные параметры ThreadGroups – Number of threads - количество имитируемых пользователей одновременно работающих с сайтом; – Ramp-up period - общее время, за которое все виртуальные пользователи должны быть запущены; – Loop count - количество раз, которое будет выполняться сценарий внутри Thread Group; – Forever – сценарий будет выполняться всегда, пока не будет прерван явно; – Scheduler – планировщик времени работы сценария; – Action to be taken after a Sample Error – действие, выполняемое после того, как сэмплер (запрос) вызовет ошибку.
  • 19.
    Автоматическая запись скрипта • Создаем прокси-сервер: WorkBench -> Add -> Non-Test Elements -> HTTP Proxy Server. • Указываем любой свободный порт
  • 20.
    Автоматическая запись скрипта(2) • Настраиваем браузер (для IE): Сервис -> Свойства обозревателя -> Подключения -> кнопка Настройка сети -> Использовать прокси-сервер • Возвращаемся в JMeter и нажимаем Start • Все обращения браузера будут записываться.
  • 21.
    HTTP Request •Для работы с HTTP трафиком в JMeter предусмотрен элемент «HTTP Request» • Для его создания необходимо добавить элемент «Thread Group» и из контекстного меню этого элемента выбрать «Add» -> «Sampler -> «HTTP Request»
  • 23.
    Основные параметры запроса • Name - Название запроса • Server name or IP - Адрес веб-сервера (URL или IP- адрес) • Port number - Порт веб-сервера (по умолчанию 80) • Protoсol (default http) - Протокол (по умолчанию HTTP) • Method - Метод передачи данных • Path - Путь к запускаемому файлу на сервере • Parameters - Передаваемые параметры и их значения
  • 25.
    Структура HTTP-сообщения •Стартовая строка (Starting line) — определяет тип сообщения; • Заголовки (Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; • Тело сообщения (Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом.
  • 26.
    Стартовая строка •Строка запроса: Метод URI HTTP/Версия • Метод (Method) — название запроса, одно слово заглавными буквами. • URI определяет путь к запрашиваемому документу. • Версия (Version) — пара разделённых точкой цифр. Например: 1.0
  • 27.
    Пример • Страницавикипедии http://ru.wikipedia.org/wiki/HTTP • HTTP запрос GET /wiki/HTTP HTTP/1.0 - стар. строка Host: ru.wikipedia.org - заголовки (пустая строка) - сообщение
  • 28.
    Методы • GET- используется для запроса содержимого указанного ресурса • POST - применяется для передачи пользовательских данных заданному ресурсу
  • 29.
    View Results Tree • Встроенная в JMeter возможность просматривать ответы на запросы
  • 30.
    Aggregate Report •Сводный отчет в виде таблицы, каждая строка которого соответствует имени запроса в тесте
  • 31.
    • Samples –количество запросов с данной меткой • Average – среднее время выполнения запросов • Median – 50% быстрее этого значения и 50% медленнее этого значения • 90% Line - 90% бестрее этого значения • Min – минимальное время выполнения запроса • Max – максимальное время выполнения запроса • Error % - % запросов, выполненных с ошибкой • Throughput – пропускная способность в час/минуту/секунду, в зависимости от скорости выполнения • Kb/sec – пропускная способность измеряеятся в кбит/секунду.