Ответ
Нагрузочное тестирование (Load testing) — это тип нефункционального тестирования, которое проверяет поведение системы под ожидаемой рабочей нагрузкой (например, определённым количеством одновременных пользователей или транзакций). Его цель — убедиться, что приложение стабильно работает в условиях, имитирующих реальное использование, и выявить проблемы производительности до релиза.
Ключевые цели и проверяемые метрики:
- Время отклика системы на действия пользователей.
- Пропускная способность (throughput) — количество обработанных операций в единицу времени.
- Использование ресурсов сервера: загрузка CPU, потребление памяти (RAM), операции ввода-вывода (I/O).
- Стабильность — отсутствие сбоев, утечек памяти или деградации производительности в течение теста.
Пример сценария в Apache JMeter:
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Пользовательская нагрузка" enabled="true">
<intProp name="ThreadGroup.num_threads">100</intProp> <!-- 100 виртуальных пользователей -->
<intProp name="ThreadGroup.ramp_time">60</intProp> <!-- Наращивание нагрузки за 60 секунд -->
<longProp name="ThreadGroup.duration">300</longProp> <!-- Длительность теста 300 секунд -->
</ThreadGroup>
Важное отличие: Load testing не следует путать со стресс-тестированием (Stress testing). Нагрузочное тестирование проверяет систему в пределах или около плановых нагрузок, в то время как стресс-тестирование нацелено на работу за пределами нормальной ёмкости, чтобы определить точку отказа и поведение системы при восстановлении.