Что такое СТРЕСС-тестирование в тестировании программного обеспечения?
⚡ Умное резюме
Стресс-тестирование выводит приложение за пределы его нормальных рабочих параметров, чтобы определить точку отказа, подтвердить корректную обработку сбоев и доказать, что система чисто восстанавливается после снятия экстремальной нагрузки.

Что такое стресс-тестирование?
Стресс-тестирование Стресс-тестирование — это тип тестирования программного обеспечения, который проверяет стабильность и надежность программного приложения. Цель стресс-тестирования — оценить надежность и способность программного обеспечения обрабатывать ошибки в условиях чрезвычайно высокой нагрузки, а также убедиться, что программное обеспечение не выйдет из строя в критических ситуациях. Оно целенаправленно тестирует программное обеспечение за пределами нормальных рабочих точек и оценивает его поведение в экстремальных условиях.
В рамках стресс-тестирования тестируемое приложение подвергается кратковременной нагрузке для определения его устойчивости к воздействию внешних факторов. Наиболее важное применение стресс-тестирования — определение предела, при котором система, программное обеспечение или оборудование выходят из строя. Оно также проверяет, демонстрирует ли система эффективное управление ошибками после превышения этого предела.
In Программная инженерияСтресс-тестирование часто упоминается наряду с другими методами. Тест на выносливостьОднако эти два метода различаются: стресс-тестирование предполагает приложение аномально высокой нагрузки в течение короткого промежутка времени для определения точки разрушения, в то время как испытание на выносливость (пропитку) предполагает выдерживание умеренной нагрузки в течение нескольких часов для выявления постепенного износа.
На скриншоте ниже показан большой блок данных, копируемый с веб-страницы.
Тестируемое приложение подвергается нагрузке, когда 5 ГБ данных копируются с веб-сайта и вставляются в Блокнот. Блокнот теперь находится под нагрузкой и выдает сообщение об ошибке «Не отвечает», как показано на следующем скриншоте.
Тот же принцип напрямую применим и к серверным системам.
Необходимость стресс-тестирования
Рассмотрим следующие примеры из реальной жизни, где использование стресс-тестирования становится очевидным:
- Во время фестивалей работает интернет-магазин.ping На сайте может наблюдаться всплеск трафика или объявление о распродаже.
- Когда блог упоминается в ведущей газете, его посещаемость резко возрастает.
Проведение стресс-тестирования крайне важно для обеспечения возможности обработки таких аномальных всплесков трафика. Неспособность справиться с внезапными наплывами трафика может привести к потере доходов и ухудшению репутации.
Стресс-тестирование также чрезвычайно важно по следующим причинам:
- Она проверяет, работает ли система в нештатных условиях.
- Это подтверждает, что соответствующее сообщение об ошибке отображается, когда система находится под нагрузкой.
- Сбой в системе в экстремальных условиях может привести к огромным финансовым потерям.
- Лучше подготовиться к экстремальным условиям, проведя стресс-тестирование заранее.
В следующем разделе изложены требования, предъявляемые к успешному стресс-тесту.
Цели стресс-тестирования
Цель стресс-тестирования — проанализировать поведение системы после сбоя. Для успешного проведения стресс-тестирования система должна отображать соответствующее сообщение об ошибке в экстремальных условиях.
Для проведения стресс-тестирования иногда используются огромные массивы данных, и эти данные могут быть потеряны во время сбоев системы. Тестировщики должны обеспечить сохранность этих данных, связанных с безопасностью, во время стресс-тестирования.
Основная цель стресс-тестирования — убедиться в способности системы восстанавливаться после сбоя, что называется восстанавливаемостью. Тестирование восстановления затем детально проверяет эту процедуру восстановления.
Испытание под нагрузкой против стресс-тестирования
Обе методики относятся к Тестирование производительности Это касается всей семьи, поэтому их легко перепутать. На диаграмме ниже показано сравнение двух профилей нагрузки.
| испытание нагрузкой | Стресс-тестирование |
|---|---|
| испытание нагрузкой Тестирует поведение системы в условиях нормальной рабочей нагрузки; имитирует фактическую ожидаемую рабочую нагрузку. | Стресс-тестирование проверяет поведение системы в экстремальных условиях и проводится до тех пор, пока система не выйдет из строя. |
| Нагрузочное тестирование не приводит к сбою системы. | Стресс-тестирование целенаправленно пытается вывести систему из строя, перегружая её данными или лишая ресурсов. |
В число связанных профилей входят: Спайк-тестирование (внезапный короткий всплеск), Объемное тестирование (большие объемы данных, а не большое количество пользователей) и Тестирование масштабируемости (потенциал роста).
Виды стресс-тестирования
Ниже описаны типы стресс-тестирования, каждый из которых рассматривается отдельно.
Распределенное стресс-тестирование
В распределенных клиент-серверных системах тестирование проводится на всех клиентах сервера. Роль стресс-сервера заключается в распространении набора стресс-тестов на всех стресс-клиентов и в... track — статус каждого клиента. После того, как клиент связывается с сервером, сервер добавляет имя клиента и начинает отправлять данные для тестирования. На рисунке ниже показано, как стресс-сервер связывается с одними клиентами, но не со всеми.
Тем временем клиентские машины отправляют сигнал, или «пульс», подтверждающий, что они по-прежнему подключены к серверу. Если сервер не получает никакого сигнала от клиентской машины, эту машину необходимо дополнительно исследовать для отладки. На рисунке сервер может подключиться к двум клиентам (Client1 и Client2), но не может отправлять или получать сигналы от Client 3 и Client 4.
Для подобных сценариев стресс-тестирования наилучшим вариантом является запуск системы на ночь. Крупным серверным фермам необходим более эффективный метод определения того, какие компьютеры вышли из строя под нагрузкой и требуют дальнейшего исследования.
Стресс-тестирование приложений
Данное тестирование направлено на выявление дефектов, связанных с блокировкой данных, проблемами в сети и узкими местами в производительности отдельного приложения.
Транзакционное стресс-тестирование
Она выполняет стресс-тестирование одной или нескольких транзакций между двумя или более приложениями. Используется для тонкой настройки и оптимизации системы.
Системное стресс-тестирование
Это интегрированное стресс-тестирование, которое может проводиться на нескольких системах, использующих один и тот же сервер. Оно используется для выявления дефектов, при которых одно приложение блокирует передачу данных другого приложения.
Исследовательское стресс-тестирование
Это тип стресс-тестирования, используемый для проверки системы с необычными параметрами или условиями, которые вряд ли возникнут в реальной ситуации. Он применяется для выявления дефектов в непредвиденных ситуациях, таких как:
- Большое количество пользователей одновременно вошли в систему.
- На всех компьютерах одновременно запускается антивирусная программа.
- База данных отключается во время доступа к ней с веб-сайта.
- В базу данных одновременно вводится большой объем данных.
Какой бы вариант ни был применен, последовательность выполнения остается неизменной.
Как проводить стресс-тестирование?
Процесс стресс-тестирования состоит из 5 основных этапов:
- Шаг 1) Планирование стресс-теста: Здесь вы собираете данные о системе, анализируете систему и определяете цели стресс-тестирования.
- Шаг 2) Создайте сценарии автоматизации: На этом этапе вы создаете сценарии автоматизации стресс-тестирования и генерируете тестовые данные для стресс-сценариев.
- Шаг 3) Выполнение сценария: На этом этапе вы запускаете скрипты автоматизации стресс-тестирования и сохраняете результаты стресс-тестирования.
- Шаг 4) Анализ результатов: На этом этапе вы анализируете результаты стресс-теста и выявляете узкие места.
- Шаг 5) Настройка и оптимизация: На этом этапе вы выполняете тонкую настройку системы, изменяете конфигурации и оптимизируете код с целью достижения желаемого показателя производительности.
Наконец, вы запускаете весь цикл заново, чтобы определить, дали ли внесенные изменения желаемые результаты. Например, нередко требуется от 3 до 4 циклов стресс-тестирования, прежде чем будут достигнуты целевые показатели производительности, поэтому скрипты обычно поддерживаются параллельно с другими процессами. регресс на.
Рекомендуемые инструменты для стресс-тестирования
Четыре представленных ниже инструмента удовлетворяют большинству потребностей, от корпоративных пакетов до бесплатного варианта с открытым исходным кодом.
LoadRunner
LoadRunner Это широко используемый инструмент для нагрузочных испытаний, который теперь продается компанией [название компании]. OpenText в профессиональной, корпоративной и облачной версиях после перехода от HP к Micro Focus. OpenTextРезультаты испытаний под нагрузкой, полученные с помощью LoadRunner, рассматриваются как эталонные.
JMeter
Apache JMeter Это инструмент тестирования с открытым исходным кодом. Это чистый инструмент. Java Это приложение предназначено для стресс-тестирования и тестирования производительности, и оно охватывает такие типы тестов, как нагрузочное, функциональное и стрессовое тестирование. Текущие версии 5.6.x Apache JMeter требовать Java 8 или позже, с Java 17 рекомендовано.
Стресс-тестер
Этот инструмент обеспечивает всесторонний анализ производительности веб-приложений, представляет результаты в графическом формате и прост в использовании. Не требуется написание сложных скриптов, что обеспечивает высокую окупаемость инвестиций.tracподходит для небольших команд.
Neoнагрузка
Neoнагрузка, теперь часть Tricentis Портфолио — популярный инструмент для тестирования веб-сайтов. и мобильных приложений,Он может имитировать работу тысяч пользователей для оценки производительности приложения под нагрузкой и анализа времени отклика. Он также поддерживает интегрированное с облаком тестирование производительности, нагрузки и стресс-тестирование, и хорошо масштабируется.
Дополнительные варианты перечислены в руководстве. инструменты тестирования производительностиКакой бы вариант ни был выбран, его результаты будут иметь значение только в сравнении с приведенными ниже показателями.
Метрики для стресс-тестирования
Метрики помогают оценить производительность системы и обычно изучаются в конце стресс-теста. Часто используемые метрики сгруппированы в три группы.
Измерение масштабируемости и производительности
- Страницы в секунду: Измеряет количество запрошенных страниц в секунду.
- Пропускная способность: Базовый показатель — размер данных ответа в секунду.
- раунды: Соотношение количества запланированных тестовых сценариев и количества случаев их выполнения клиентом.
Ответ приложения
- Время удара: Среднее время загрузки изображения или страницы.
- Время до первого байта: Время, необходимое для возврата первого байта данных или информации.
- Время страницы: Время, затраченное на получение всей информации на странице.
Отказы
- Неудачные подключения: Количество неудачных подключений, отклоненных клиентом (слабый сигнал).
- Неудачные раунды: Количество неудачных раундов.
- Неудачные попытки: Количество неудачных попыток системы (битые ссылки или непросмотренные изображения).
В заключительном разделе перечислены ситуации, которые чаще всего оправдывают проведение стресс-теста.
Примеры стресс-тестирования
Стресс-тестирование оправдано всякий раз, когда ожидается событие, которое значительно увеличит трафик сверх базового суточного уровня:
- Интернет-магазин объявляет о праздничной распродаже.
- Новостной сайт во время крупного события.
- Образовательный совет публикует результаты экзаменов.
- Социальные сети, блоги и мобильные приложения в момент вирусной популярности.
В каждом случае тест отслеживает такие ресурсы, как память, процессор и сеть, проверяет наличие соответствующих сообщений об ошибках при нагрузке и подтверждает, что система после этого возвращается в нормальное состояние. Он вписывается в... жизненный цикл тестирования программного обеспечения в качестве нефункциональной проверки наряду с Тестирование системы и более широкий круг типы тестирования программного обеспечения.

.png)
.png)

