Какие виды нагрузочного тестирования существуют: стресс, объемное, стабильность, масштабируемость
Что проверяют
Различаете ли вы виды по цели, а не только по названию.
Как отвечать
Каждый вид отвечает на свой вопрос.
- Нагрузочное: выдерживает ли система ожидаемую нагрузку с заданным временем отклика. Это базовая проверка соответствия требованиям;
- Стрессовое: где точка отказа и что происходит за ней. Нагрузку поднимают выше ожидаемой, пока система не начнёт деградировать. Важно не само число, а поведение: отвечает медленнее и корректно или падает, теряет данные, не восстанавливается после снятия нагрузки;
- Объёмное: как система работает с большим объёмом данных, а не запросов. База на сто миллионов строк ведёт себя иначе, чем на ста тысячах: планы запросов меняются, индексы перестают помещаться в память. Часто пропускают, а именно здесь находят самые дорогие проблемы;
- Стабильность (её же называют выносливостью): умеренная нагрузка в течение долгого времени, от нескольких часов до суток. Ищут утечки памяти, рост числа открытых соединений и дескрипторов, переполнение дисков логами, деградацию из-за раздувания таблиц. Короткий прогон такое не покажет;
- Масштабируемость: как меняются показатели при добавлении ресурсов. Растёт ли пропускная способность линейно при удвоении экземпляров или упирается в общую базу;
- Пиковое: резкий скачок нагрузки и возврат. Проверяет автомасштабирование и очереди.
Про метрики скажите отдельно, это отличает понимающего: смотреть надо перцентили времени отклика, а не среднее. Среднее скрывает то, что каждый двадцатый пользователь ждёт десять секунд. Плюс пропускная способность, доля ошибок и утилизация ресурсов.
Условия корректности: окружение, сопоставимое с боевым, реалистичные объёмы данных и профиль нагрузки, разогрев перед замером.
Инструменты: JMeter, k6, Gatling, Locust.
Где спотыкаются
Смотрят среднее время отклика вместо перцентилей.
Не проводят объёмное тестирование и ловят проблему уже в проде.
Гоняют нагрузку десять минут и называют это проверкой стабильности.
Тестируют на стенде вчетверо слабее боевого и переносят выводы напрямую.