Ответ
Performance тестирование — это тип нефункционального тестирования, который оценивает, как система ведет себя под определенной нагрузкой с точки зрения скорости, стабильности, масштабируемости и использования ресурсов.
Основные виды performance-тестирования:
| Вид тестирования | Цель | Пример сценария |
|---|---|---|
| Нагрузочное (Load Testing) | Проверить поведение под ожидаемой пиковой нагрузкой. | 1000 пользователей одновременно заходят на главную страницу. |
| Стрессовое (Stress Testing) | Найти точку отказа системы, выявить узкие места. | Постепенно увеличивать нагрузку до 5000 пользователей. |
| Тестирование стабильности/надежности (Soak/Endurance) | Обнаружить утечки памяти или проблемы деградации. | Нагрузка в 500 пользователей поддерживается 24 часа. |
| Тестирование масштабируемости (Scalability Testing) | Определить, как система масштабируется с ростом нагрузки. | Увеличение числа серверов для обработки растущего RPS. |
| Спайковое (Spike Testing) | Проверить реакцию на резкие, кратковременные скачки нагрузки. | Рекламная акция вызывает всплеск трафика за 2 минуты. |
Ключевые метрики:
- Время отклика (Response Time):
Среднее,90-й процентиль (p90),Максимальное. - Пропускная способность (Throughput): Запросов в секунду (RPS/QPS), транзакций в секунду (TPS).
- Использование ресурсов: Загрузка CPU, потребление RAM, дисковый I/O, сетевой трафик.
- Количество ошибок: Процент неудачных запросов под нагрузкой.
Типичный стек инструментов:
- JMeter (де-факто стандарт, Java, с GUI).
- k6 (современный, на JavaScript/Go, сценарии пишутся в коде).
- Gatling (высокопроизводительный, на Scala, хорошая отчетность).
- Locust (Python-скрипты, распределенная нагрузка).
Почему это важно? Оно предотвращает падение продакшн-систем под реальной нагрузкой, помогает оптимизировать архитектуру и обосновать необходимость в аппаратных ресурсах.