Стресс-тестирование программного обеспечения

Стресс-тестирование программного обеспечения

Стресс-тести́рование (англ. Stress Testing) — один из видов тестирования программного обеспечения, которое оценивает надёжность и устойчивость системы в условиях превышения пределов нормального функционирования. Стресс-тестирование особенно необходимо для «критически важного» ПО, однако также используется и для остального ПО. Обычно стресс-тестирование лучше обнаруживает устойчивость, доступность и обработку исключений системой под большой нагрузкой, чем то, что считается корректным поведением в нормальных условиях.

Термин «стресс-тестирование» часто используется как синоним «нагрузочного тестирования», а также «тестирования производительности», что ошибочно, так как эти виды тестирования отвечают на разные бизнес-вопросы и используют различную методологию.

Содержание

Основные принципы

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

Необходимость стресс-тестирования диктуется следующими факторами:

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

Основные направления применения стресс-тестирования:

  1. Общее исследование поведения системы при пиковых нагрузках.
  2. Исследование обработки ошибок и исключительных ситуаций системой при пиковых нагрузках.
  3. Исследование узких мест системы или отдельных компонент при диспропорциональных нагрузках.
  4. Тестирование ёмкости системы.

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

Пропорциональная нагрузка

Стресс-тестирование может применяться как для обособленных приложений, так и для распределенных систем с клиент-серверной архитектурой. Простейшим примером стресс-тестирования обособленного приложения может являться открытие файла размером в 50 Мб программой Notepad, входящей в комплект ОС Windows. Условия стресс-тестирования приложения обычно формируются исходя из критических бизнес-процессов его функциональности, определенными на стадии разработки требований и анализа рисков группой, ответственной за производительность.

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

Диспропорциональная нагрузка

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

Пример 1:

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

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

Использование диспропорциональной нагрузки в стресс-тестах может также применяться для выявления узких мест отдельных компонент системы.

Тестирование Ёмкости

Тестирование Ёмкости (англ. Capacity Testing) является одним из самых важных с точки зрения развития бизнеса направлений стресс-тестирования и самых сложных с точки зрения проведения и анализа. Тестирование Ёмкости проводится с целью определить запас прочности системы при полном соответствии требованиям к производительности.

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

Пример 2:

Веб-сервис предназначен для отображения данных для зарегистрированных пользователей в формате .docx. Разрабатывающая компания собирается опубликовать возможность отображения данных в формате .pdf, при этом ожидается, что текущие пользователи будут продолжать работать со старым форматом, а новые будут использовать формат .pdf. Моделируя нагрузку на системы во время тестирования ёмкости, учитывается не только текущий сценарий ее использования (отображение данных в .docx), но и предполагаемый сценарий использования в будущем (часть одновременно работающих с системой пользователей используют .docx, а часть - .pdf)

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

См. также

Ссылки

Литература

  • Лайза Криспин, Джанет Грегори Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. — М.: «Вильямс», 2010. — 464 с. — (Addison-Wesley Signature Series). — 1000 экз. — ISBN 978-5-8459-1625-9

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Стресс-тестирование программного обеспечения" в других словарях:

  • Тестирование программного обеспечения — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектирование • Программирование • Докумен …   Википедия

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

  • Тестирование производительности — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете …   Википедия

  • Тестирование стабильности — или надежности (Stability / Reliability Testing)  один из видов тестирования ПО, целью которого является проверка работоспособности приложения при длительном тестировании со средним (ожидаемым) уровнем нагрузки. Перед тем как подвергать ПО… …   Википедия

  • тестирование — 3.22 тестирование : Процесс определения соответствия предмета испытания заявленным характеристикам. Источник …   Словарь-справочник терминов нормативно-технической документации

  • Тестирование — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете …   Википедия

  • Нагрузочное тестирование — (англ. Load Testing)  определение или сбор показателей производительности и времени отклика программно технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе …   Википедия

  • Инженерия производительности — (англ. Performance Engineering) часть системотехники, включающая в себя набор ролей, знаний, практик, инструментов и результатов и применяющаяся на каждом этапе Цикла разработки программного обеспечения с целью убедиться в том, что создаваемое,… …   Википедия

  • Внесение неисправностей — Внесение неисправностей  метод, используемый в тестировании программного обеспечения. Предполагает искусственное внесение разного рода неисправностей для тестирования отказоустойчивости и, в частности, обработки исключений. Обычно… …   Википедия

  • SilkPerformer — платный инструмент для автоматизированного нагрузочного тестирования веб систем различного уровня сложности. Инструмент создан компанией Borland, которая в настоящее время приобретена британской компанией Micro Focus. SilkPerformer является… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»