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

31
IT-Академия Алексея Сухорукова Тестирование производительности

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

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

IT-Академия Алексея Сухорукова

Тестирование производительности

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

Тестирование производительности

• Тестирование, которое проводится с целью определения, как быстро работает вычислительная система или её часть под определённой нагрузкой

• Может служить для проверки и подтверждения других атрибутов качества системы, таких как масштабируемость, надежность и потребление ресурсов

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

Цели тестирования производительности

• демонстрация того, что система удовлетворяет критериям производительности

• Определение, производительность какой из двух или нескольких систем лучше

• определение, какой элемент нагрузки или часть системы приводит к снижению производительности

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

Направления тестирования производительности

• Нагрузочное тестирование

• Стрессовное тестирование (stress testing)

• Объемное тестирование (volume testing)

• Тестирование стабильности (Stability / Reliability Testing)

• Конфигурационное тестирование

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

Нагрузочное тестирование

• Исследует работу системы под регалментируемой нагрузкой

• Проводится, чтобы убедиться, что приложение обладает запланированной пропускной способностью и работает стабильно

• Можно узнать, какова производительностьсистемы на заданном количестве пользователей и плановой нагрузке

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

Стрессовое тестирование

• Используется для определения пределов пропускной способности приложения

• Система подвергается экстремальным нагрузкам и исследуется ее поведение в ситуациях, когда регламентируемые пределы нагрузок в несколько раз выше

• Можно найти истинный предел работы приложения

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

Объемное тестирование• Исследует работу системы при

увеличении объема обрабатываемой информации

• Можно выяснить, что будет, если база данных прилодения вырастет в несколько раз

• Производится измерение времени работы выбранных операций при определенной интенсивности

• Производится измерение количества пользователей, одновременно работающих с приложением

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

Тестирование стабильности• Проверяет

длительную работу системы при среднем уровне нагрузки

• Не очень важна скорость выполнения отдельных операций

• Главные объекты мсследования: утечки памяти, перезагрузки серверов, и другие аспекты которые могут повлиять на стабильность работы системы

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

Конфигурационное тестирование

• тестируется эффект влияния на производительность изменений в конфигурации

• эксперименты с различными методами балансировки нагрузки

• может быть совмещено с нагрузочным, стресс или тестированием стабильности

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

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

• Показатели производительности приложения, получаемые при тестировании производительности

• Используются для анализа производительности приложения

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

Примеры метрик

• Потребление ресурсов центрального процессора (CPU, %)

• Потребление оперативной памяти (Memory usage, Mb)

• Потребление сетевых ресурсов• Работа с дисковой подсистемой (I/O

Wait)• Время выполнения запроса (request

response time, ms)

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

Компоненты

• Система (system under test)

• Нагрузчик (loader)

• Мониторинг (значения метрик)

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

• Виртуальный пользователь (Virtual User) - программный процесс, циклически выполняющий моделируемые операции

• Профиль нагрузки (Performance Profile) - это набор операций с заданными интенсивностями, полученный на основе сбора статистических данных либо определенный путем анализа требований к тестируемой системе

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

JMeter

• инструмент для проведения нагрузочного тестирования, разрабатываемый Apache Software Foundation

• способен проводить нагрузочные тесты для JDBC-соединений, FTP, LDAP, SOAP, JMS, POP3, IMAP, HTTP и TCP

• логирование результатов теста• визуализация результатов в виде диаграмм,

таблиц и т. п.

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

Тест-план в JMeter

План тестирования (Test Plan) веб-приложения представляет собой описание последовательности шагов, которые будет исполнять JMeter

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

Содержание плана тестирования

• Группы потоков (Thread Groups)• Логические контроллеры (Logic conrollers)• Генераторы нагрузки (Samplers)• Слушатели (Listeners)• Таймеры (Timers)• Утверждения, проверки (Assertions)• Конфигурационные элементы (Configuration

elements)

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

Thread Groups • позволяет задавать параметры

генерируемой на приложение нагрузки

• Является профилем нагрузки

• Отдельный поток - виртуальный пользователь

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

Основные параметры 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 лекция. тестирование производительности

Автоматическая запись скрипта

• Создаем прокси-сервер: WorkBench -> Add -> Non-Test Elements -> HTTP Proxy Server.

• Указываем любой свободный порт

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

Автоматическая запись скрипта (2)

• Настраиваем браузер (для IE): Сервис -> Свойства обозревателя -> Подключения -> кнопка Настройка сети -> Использовать прокси-сервер

• Возвращаемся в JMeter и нажимаем Start

• Все обращения браузера будут записываться.

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

HTTP Request

• Для работы с HTTP трафиком в JMeter предусмотрен элемент «HTTP Request»

• Для его создания необходимо добавить элемент «Thread Group» и из контекстного меню этого элемента выбрать «Add» -> «Sampler -> «HTTP Request»

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

Основные параметры запроса

• Name - Название запроса• Server name or IP - Адрес веб-сервера (URL или IP-

адрес)• Port number - Порт веб-сервера (по умолчанию 80)• Protoсol (default http) - Протокол (по умолчанию

HTTP)• Method - Метод передачи данных• Path - Путь к запускаемому файлу на сервере• Parameters - Передаваемые параметры и их

значения

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

Структура HTTP-сообщения

• Стартовая строка (Starting line) — определяет тип сообщения;

• Заголовки (Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения;

• Тело сообщения (Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкойЗаголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом.

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

Стартовая строка

• Строка запроса: Метод URI HTTP/Версия

• Метод (Method) — название запроса, одно слово заглавными буквами.

• URI определяет путь к запрашиваемому документу.

• Версия (Version) — пара разделённых точкой цифр. Например: 1.0

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

Пример

• Страница википедииhttp://ru.wikipedia.org/wiki/HTTP

• HTTP запросGET /wiki/HTTP HTTP/1.0 - стар. строкаHost: ru.wikipedia.org - заголовки(пустая строка) - сообщение

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

Методы

• GET - используется для запроса содержимого указанного ресурса

• POST - применяется для передачи пользовательских данных заданному ресурсу

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

View Results Tree• Встроенная в JMeter возможность

просматривать ответы на запросы

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

Aggregate Report

• Сводный отчет в виде таблицы, каждая строка которого соответствует имени запроса в тесте

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

• Samples – количество запросов с данной меткой• Average – среднее время выполнения запросов• Median – 50% быстрее этого значения и 50%

медленнее этого значения• 90% Line - 90% бестрее этого значения• Min – минимальное время выполнения запроса• Max – максимальное время выполнения запроса• Error % - % запросов, выполненных с ошибкой• Throughput – пропускная способность в

час/минуту/секунду, в зависимости от скорости выполнения

• Kb/sec – пропускная способность измеряеятся в кбит/секунду.