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