Нагрузочное тестирование программного обеспечения

Информационная безопасность 11.07.2018 60426
Нагрузочное тестирование программного обеспечения

Любое программное обеспечение должно работать под нагрузкой длительное время. Сбои и отказы системы могут привести к убыткам, потере клиентов и другим неприятным последствиям. Нагрузочное тестирование позволяет определить, как и с какой скоростью работает программа под определенной нагрузкой. Посредством нагрузочного тестирования оценивается соответствие производительности продукта требованиям, сформулированным в ТЗ.

Нагрузочное тестирование рекомендуется проводить при выпуске нового программного обеспечения, доработке эксплуатируемого ПО и при изменении конфигурации стендов.

Ключевые преимущества

⦁ Оценка возможностей системы и ⦁ определение максимальной производительности.
⦁ Предупреждение отказов системы в промышленной эксплуатации.
⦁ Выявление ошибок (например, утечка памяти, некорректные настройки или распределение ресурсов).
Поиск оптимального комплекса технических средств (КТС).
Выдерживая громадные нагрузки, программное обеспечение просто обязано эффективно работать. Поэтому нагрузочное тестирование является гарантией стабильности действий приложений.

Нагрузочное тестирование является сложным процессом, включающим в себя
⦁ аналитическую работу,
⦁ выбор подходящего вида тестирования под заданные цели.

Нагрузочное тестирование требует обстоятельных знаний специфики различных серверов, сетевых протоколов, практических навыков в программировании и т. д.

Основные этапы нагрузочного тестирования

Подготовка — Проводится анализ целей и статистики эксплуатации системы. Определяются бизнес-операции, имеющие значение с точки зрения нагрузки на систему. Создается и согласуется документ «Методика нагрузочного тестирования», который включает: стратегию тестирования, список и описание тестов, критерии успешного завершения, описание средств мониторинга и инструментов нагрузочного тестирования. Осуществляется подготовка тестовых данных, настраивается мониторинг, наполняется база данных.

Проведение — Выполняется запись и отладка скриптов нагрузочного тестирования и реализация сценариев нагрузочного тестирования. С помощью разработанной системы нагрузочного тестирования выполняется тестирование приложений. В рамках нагрузочных испытаний собирается различная статистическая информация, с помощью которой выполняется анализ производительности.

Отчет — После проведения нагрузочного тестирования компании клиенту предоставляется отчет, который описывает результаты тестирования, отступления от методики (если имеются), список ошибок, предложения по оптимизации работы системы, общие замечания.

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

Тестирование производительности — Определение характеристик производительности системы

Тестирование стабильности — Проверка работоспособности системы в течение длительного времени эксплуатации, в том числе с большими объемами данных и высокой нагрузкой

Стресс-тестирование — Проверка корректности работы системы в режиме перегрузки и сбоев

Тестирование на достижимость бизнес-планов — Исследование того, как система будет работать, когда будут достигнуты плановые бизнес-показатели

Объемное тестирование — Тестирование поведения системы при увеличении объема данных

Тестирование сервера — Проверка работоспособности и надежности серверной части системы

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

Тестирование производительности позволяет определить максимальную интенсивность операций, при которой система удовлетворяет требованиям ко времени отклика. Тестирование производительности рекомендуется проводить для новой версии ПО, планируемого к внедрению.

Ключевые преимущества

⦁ Выявление и предотвращение отказов системы перед внедрением в промышленную эксплуатацию.
⦁ Определение максимального количества одновременно работающих пользователей в системе.
⦁ Определение максимального количества одновременно выполняемых операций без потери качества обслуживания.

Основные задачи

В рамках тестирования производительности собирается статистика использования системы, на основе которой составляется профиль нагрузки. После этого вычисляется начальная точка и размер шага для увеличения интенсивности выполнения операций.

В ходе выполнения тестирования определяется максимальная производительность системы:

⦁ наибольшая интенсивность выполнения операций с требуемым качеством обслуживания (SLA);
⦁ пиковая производительность системы, при которой происходит ухудшение показателей качества обслуживания операций (время выполнения, отказы).

Объемное тестирование

Данный вид тестирования позволяет проверить использование системных ресурсов при увеличении объема данных и принять проактивные меры для предотвращения отказа системы в будущем. Объемное тестирование подходит не только для систем, планируемых к внедрению в опытно-промышленную эксплуатацию, но и на стадии проектирования.

Ключевые преимущества

Объемное тестирование позволяет:

⦁ Определить глубину хранения данных, при которой не произойдет деградации производительности системы.
⦁ Подобрать оптимальный комплекс технических средств.
⦁ Выявить лучшее архитектурное решение для системы, находящейся на этапе проектирования.

Основные задачи

Главной задачей объемного тестирования является оценка производительности системы при увеличении потока данных. В ходе тестирования эмулируется увеличение интенсивности операций системы с одновременным увеличением объемов базы данных. В процессе тестирования измеряется общая производительность системы: количество операций за определенный период времени, время отклика системы и количество пользователей, одновременно работающих в системе.

Объемное тестирование рекомендуется основывать на следующих бизнес-прогнозах:

⦁ как увеличится число пользователей системы?
⦁ как увеличится интенсивность операций?
⦁ какой объем базы данных будет, например, через 5 лет?

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

Тестирование стабильности предназначено для оценки возможности системы работать длительное время под нагрузкой. Этот тип тестирования позволяет выявить утечки памяти или некорректные настройки ПО. Данный вид работ рекомендуется проводить как для новых систем, так и для новых версий уже эксплуатируемого ПО.

Ключевые преимущества

Тестирование стабильности позволяет:
⦁ Предупредить сбои системы и ухудшение скорости и качества обработки данных.
⦁ Проверить возможность стабильной работы системы, находящейся под длительной нагрузкой.
⦁ Определить характеристики системы, которые подлежат отслеживанию в ходе опытно-промышленной эксплуатации.
⦁ Выявить недостаток аппаратных и системных ресурсов до внедрения в опытно-промышленную эксплуатацию.

Основные задачи

В ходе тестирования стабильности на целевую систему в течение не менее 24 часов подается средний уровень нагрузки, 70-80% от максимального уровня.
Одновременно с подачей нагрузки измеряются следующие показатели:
⦁ время выполнения операций;
⦁ распределение системных ресурсов;
⦁ другие показатели с учетом особенности системы.

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

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

В процессе повседневной эксплуатации ИТ-систем достаточно трудно оценить соответствие параметров аппаратной инфраструктуры актуальным техническим требованиям и текущим бизнес-процессам.
Для измерения имеющихся серверных мощностей необходимо создать для них условия, приближенные к пиковым нагрузкам. Нагрузочное тестирование сервера позволяет наиболее точно моделировать подобные сценарии работы.

Какие задачи решает нагрузочное тестирование
⦁ выбор оптимальной аппаратной и программной конфигурации компонентов сервера;⦁ проверка максимальной производительности аппаратных средств и отладка сценариев их работы в периоды пиковых нагрузок;⦁ предупреждение отказов сервера при увеличенном потреблении ресурсов сети, повышенной загрузки оперативной памяти и  центрального процессора;⦁ проверка стабильности работы сервера при максимальных нагрузках в разные временные отрезки в круглосуточном режиме.

Основные этапы нагрузочного тестирования

Определение критериев испытания

Разработка стратегии тестирования, определение параметров работы сервера, допустимых границ значений при работе оборудования. Далее приводится перечень производимых тестов и используемых инструментов. В заключение подготавливаются тестовые параметры и сценарии.

Проведение испытаний

В соответствии с выбранным сценарием производится эмуляция одновременной работы пользователей с приложением. Оценивается скорость обработки данных с дисковой подсистемы, время выполнения запросов, объем потребления ресурсов сети, а также уровень загрузки оперативной памяти и центрального процессора. Возможен запуск нескольких сценариев одновременно.

Анализ результатов тестирования

По результатам нагрузочного тестирования сервера компании клиенту предоставляется детальный отчет о проведенных испытаниях с графиками зависимостей, описанием вероятных проблем и предложениями по улучшению конфигурации оборудования.
Тестирование различных компонентов системы

Сетевая архитектура

Выявление потенциальных дефектов сетевых адаптеров и драйверов. Установление запаса производительности и определение качества работы сети.

Приложения

Оценка максимальной эффективности работы выбранных приложений при заданных значениях метрик производительности. Типичные объекты исследования — операционные системы (Linux, MS Windows Server, Solaris), серверы приложений (WildFly (RedHat JBoss Application Server), IBM WebSphere, WebLogic), системы управления базами данных (MySQL, PostgreSQL, MS SQL), корпоративное ПО (ERP-, CRM-системы и т.д.)

Базы данных

Проверка производительности базы данных при помощи эмуляции множества пользовательских транзакций с постепенным увеличением интенсивности загрузки информации.
Нагрузочное тестирование позволяет определить степень готовности системы к внештатным ситуациям (отказ оборудования, DDoS-атаки), уровень ее надежности и способность к самовосстановлению. Также нагрузочные испытания помогают разработать комплекс адекватных мер для повышения производительности системы, ее устойчивости и защищенности корпоративного окружения.

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

Стресс-тестирование предназначено для проверки поведения системы в условиях стресса и оценки способности системы к восстановлению после прекращения воздействия стресса. Этот тип тестирования необходим для систем с высокой степенью критичности для бизнеса, а также приложений с высокой отказоустойчивостью.

Как правило, стресс-тестирование проводится в следующих случаях:
⦁ Если велика стоимость отказа системы в экстремальных ситуациях.
⦁ Если есть возможность резкого увеличения нагрузки на систему в экстремальных ситуациях.

К стрессовым условиям относятся: повышение интенсивности выполнения операций до очень высоких значений, аварийное изменение конфигурации сервера.

Ключевые преимущества

⦁ Выявляются узкие места в отдельных компонентах системы, из-за которых возможно снижение производительности системы в стрессовых условиях.
⦁ Определяются показатели нагрузки системы, при которых система отвечает требованиям к производительности, заявленным на этапе проектирования.

Основные задачи

В ходе проведения стресс-тестирования  разрабатываются сценарии, эмулирующие нагрузку на систему, значительно превышающую ожидаемые показатели системы. При этом снимаются показатели по производительности, которые в дальнейшем анализируются и позволяют сделать выводы о выносливости или устойчивости приложения в случае всплеска активности по его использованию.
Основными задачами стресс-тестирования являются:
⦁ исследование поведения системы при пиковых нагрузках;
⦁ исследование обработки ошибок и исключительных ситуаций при пиковых и диспропорциональных нагрузках;
⦁ исследование узких мест в отдельных компонентах системы;
⦁ тестирование емкости системы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *