Нагрузочное тестирование с использованием HP LoadRunner Гладнев Иван Сертифицированный специалист HP Руководитель проектов Компания Аплана группа компаний АйТи
План презентации 1.Общее представление о нагрузочном тестировании 2.Общее представление об инструменте автоматизации нагрузочного тестирования HP LoadRunner
Основные проблемы производительности Увеличение количества пользователей Увеличение количества данных
Пример «падения» системы
Цена плохой оценки производительности Ресурсы Время Люди Деньги Клиенты Прибыль
Задачи нагрузочного тестирования Нагрузочное тестирование - анализ поведения системы при эмуляции реальной пользовательской нагрузки Задачи: Проверка производительности Оптимизация производительности Планирование мощностей Проверка стабильности Проверка масштабируемости Уверенность в отказоустойчивости Проверка деградации (регрессионное тестирование)
Цели нагрузочного тестирования На стадии проектирования. Определение архитектурного решения (ОС, БД, технологии и среды разработки) На стадии программирования Определение схем БД, оптимизация кода На стадии тестирования: Максимальная производительность системы Определение увеличения времени отклика и длительность операций при увеличении нагрузки Определение предела применимости программы по числу пользователей Определение влияния конфигурации системы на производительность На стадии поставки: Удовлетворяет ли архитектура и настройка сети требованиям производительности?
Преимущества нагрузочного тестирования Улучшение эксплуатационных свойств Раннее обнаружение основных ошибок проектирования Уменьшение стоимости изменений Уменьшение стоимости програмно-аппаратного комплекса Увеличение прибыли
Принципы нагрузочного тестирования Понимание модели бизнес-процессов Создание адекватных тестов и сценариев Создание нагрузки Мониторинг приложения и инфраструктуры Диагностика Исправление и повторное тестирование до достижения результатов
Недостатки ручного нагрузочного тестирования Время Оборудование Люди Управление
Типы нагрузочного тестирования Тестирование производительности (Performance Testing) получение характеристик производительности системы Нагрузочное тестирование (Load Testing) исследование запаса производительности тестируемой системы, выполняется мониторинг и анализ производительности. Во время тестирования настройка системы не изменяется Стрессовое тестирование (Stress Testing) – проверка корректности работы системы в режиме перегрузки и сбоев, определение производительности системы при заведомо ограниченных ресурсах (недостаточно памяти, низкопроизводительный процессор и т.д.) Объемное тестирование (Volume Testing) оценка работоспособности системы после нескольких лет промышленной эксплуатации (когда объемы данных увеличиваются в сотни или тысячи раз) Тестирование масштабируемости (Scalability Testing) тестирование и анализ производительности продукта на различных аппаратно программных платформах Конкурентное тестирование (Concurrent Testing) проверка способности системы корректно обрабатывать конкурирующие запросы на использование разделяемых ресурсов (записи БД, оперативная память и т.д.) Тестирование надежности (Reliability Testing) проверка работоспособности системы в течение длительного времени эксплуатации, в том числе с большими объемами данных и высокой нагрузкой
Протоколы LoadRunner Application Deployment Solution Citrix Microsoft Remote Dectop Protocol (RDP) Клиент/Серверные DB2 CLI Domain Name Resolution (DNS) Informix Microsoft.NET MS SQL, ODBC Oracle (2-tier) Sybase Ctlib Sybase Dblib Windows Sockets Пользовательские C Vuser Java Vuser Javascript Vuser VB script Vuser VB Vuser VBNet Vuser Distributed Components COM/DCOM Microsoft.NET E-business Action Message Fornat (AMF) AJAX (Click and Script), File Transfer Protocol (FTP) Flex Listing Directory Service (LDAP) Microsoft,Net Web (Click & Script) Web (HTML/HTTP) Web Services ERP/CRM Oracle NCA Oracle Web Applications 11i Peoplesoft Enterprise Peoplesoft-Tuxedo SAP-Web, SAPGUI SAP (Click and Script) Siebel (Web) Enterprise Java Beans Enterprise Java Beans (EJB) Java Java Record Play Legacy Terminal Emulation (RTE) Mailing Services Internet Messaging (IMAP) MS Exchange (MAPI) Post Office Protocol (POP3) Simple Mail Protocol (SMTP) Middleware Tuxedo Tuxedo 6 Streaming MediaPlayer (MMS) Real
Этапы нагрузочного тестирования 1.Анализ и планирование Определение бизнес-процесса и требований к системе Определение тестовой среды и конфигурации Определение модели нагрузки Операции Интенсивность операций Количество пользователей Типовое поведение пользователей 2.Подготовка тестовой среды Настройка Разработка эмуляторов и заглушек 3.Разработка нагрузочных скриптов 4.Проведение нагрузочных испытаний 5.Анализ результатов
Профиль нагрузки Профиль нагрузки представляет собой совокупность операций, участвующих в нагрузочном тестировании, выполняющихся с определенной интенсивностью Профиль нагрузки строится исходя из прогнозируемых данных, из статистических данных по работе предыдущей версии Системы с учетом следующих факторов Статистика обращений к Системе Распределение запросов по типам пользователей Распределение запросов по типам операций
Распределение запросов по группе пользователей Группа пользователейКоличество пользователей Создание заявки40 пользователей Случайный интервал между 20 и 40 сек Редактирование заявки20 пользователей Случайный интервал между 20 и 40 сек Удаление заявки10 пользователей Случайный интервал между 20 и 40 сек
Типы виртуальных пользователей GUI – VUsers QuickTest Pro WinRunner VUsers LoadRunner RTE VUsers LoadRunner
Компоненты LoadRunner Virtual User Generator (VuGen) Запись, отладка, параметризация скрипта Controller Создание и выполнение сценариев тестирования, мониторинг Load Generator Генерация нагрузки Analysis Анализ результатов, генерация отчетов и графиков
Схема тестирования
Virtual User Generator Записать бизнес-операцию Добавить транзакции, параметры, проверки «Очеловечить» скрипты (добавить время ожидания, задержки сети, повторные действия)
Состав скрипта Каждый скрипт состоит из 3 секций: Vuser_init - инициализация (выполняется 1 раз) Action – работа (множественное выполнение) Vuser_end - завершении работы (выполняется 1 раз)
Зачем нужна параметризация и корреляция Параметризация Для исключения кэширования Параметры могут браться из файлов, генерироваться случайно Корреляция Запись в параметр динамических значений для дальнейшего его передачи серверу
Controller [1]
Controller [2]
Analysis [1]
Analysis [2]
Спасибо за внимание! Ваши вопросы?