Ответ
Стресс-тестирование — это вид тестирования производительности, при котором система подвергается нагрузке, превышающей её расчётные возможности, с целью определить точку отказа и проверить механизмы восстановления.
Цели:
- Выявить, как система ведёт себя в экстремальных условиях.
- Определить максимальную нагрузку, которую система может выдержать до полного отказа или неприемлемой деградации.
- Проверить отказоустойчивость и способность к самовосстановлению после снятия нагрузки.
- Обнаружить утечки памяти, проблемы с конкурентным доступом, ошибки очистки ресурсов.
Типичные сценарии:
- Резкое увеличение числа пользователей в 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), поведение системы после пика нагрузки, восстановление до нормальных показателей.