Тестирование нагрузки - это тип нефункционального тестирования, которое оценивает:
- Поведение системы под ожидаемой нагрузкой
- Максимальную пропускную способность
- Точки деградации производительности
- Стабильность при длительной нагрузке
- Перед запуском высоконагруженных сервисов (маркетплейсы, соцсети)
- При изменении архитектуры (миграция на микросервисы)
- Перед маркетинговыми акциями (Черная пятница)
- Для API, которые будут использоваться внешними клиентами
- При изменении аппаратных характеристик серверов
| Этап | Цель тестирования |
|-------------------------|---------------------------------------|
| После MVP | Проверка базовой масштабируемости |
| Перед релизом | Подтверждение SLO/SLA |
| Регулярно в продакшене | Мониторинг деградации производительности |
- **Smoke Load Test**: минимальная нагрузка для проверки готовности
- **Average Load Test**: тестирование под средней расчетной нагрузкой
- **Stress Test**: поиск предела производительности
- **Soak Test**: длительная нагрузка для выявления утечек
- **Spike Test**: резкие скачки нагрузки
- **Throughput**: запросов/сек
- **Response Time**: 90-й и 95-й перцентили
- **Error Rate**: процент ошибок
- **Resource Usage**: CPU, RAM, I/O
- **Scalability**: как растет производительность с ресурсами
- JMeter (универсальный)
- Gatling (для разработчиков)
- k6 (современный, с хорошей документацией)
- Locust (Python-based)
- Yandex.Tank (для высоких нагрузок)
1. Определение целей и метрик успеха
2. Создание тестовых сценариев (реалистичные пользовательские потоки)
3. Подготовка тестового окружения (изолированного от prod)
4. Запуск тестов с постепенным увеличением нагрузки
5. Анализ результатов и поиск узких мест
6. Регрессионное тестирование после оптимизаций
нагрузочное тестирование следует проводить на всех критических этапах жизненного цикла продукта, особенно перед событиями с прогнозируемым ростом нагрузки. Оно позволяет предотвратить дорогостоящие простои и сохранить репутацию компании.