6 лекция. тестирование производительности
TRANSCRIPT
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 – пропускная способность измеряеятся в кбит/секунду.