Что такое стресс-тестирование (Stress Testing)?

«Что такое стресс-тестирование (Stress Testing)?» — вопрос из категории Тестирование производительности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Цели:

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

Типичные сценарии:

  • Резкое увеличение числа пользователей в 10-100 раз.
  • Длительная работа при 100% утилизации CPU, памяти или дискового I/O.
  • Нагрузка на систему при отказе одного из ключевых компонентов (например, диска или сервера БД).

Пример конфигурации сценария в JMeter:

<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Stress Test">
  <intProp name="ThreadGroup.num_threads">5000</intProp> <!-- 5000 виртуальных пользователей -->
  <intProp name="ThreadGroup.ramp_time">300</intProp> <!-- Наращивание за 5 минут -->
  <longProp name="ThreadGroup.duration">3600</longProp> <!-- Длительность теста 1 час -->
</ThreadGroup>

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