Ответ
Нагрузочное тестирование — это тип нефункционального тестирования, целью которого является оценка поведения системы под ожидаемой или пиковой нагрузкой. Оно определяет, как приложение работает с точки зрения производительности, стабильности и масштабируемости при определенном количестве одновременных пользователей или запросов.
Основные цели:
- Определение пропускной способности: Максимальное количество операций в секунду, которое может обработать система.
- Измерение времени отклика: Как быстро система отвечает при разной нагрузке.
- Поиск узких мест (bottlenecks): Выявление компонентов, ограничивающих производительность (CPU, память, диск, сеть, СУБД).
- Проверка стабильности: Остается ли система работоспособной под длительной нагрузкой.
Типичный процесс:
- Планирование: Определение целей, сценариев (например, "логин пользователя"), метрик и целевой нагрузки (например, 1000 пользователей за 5 минут).
- Создание скриптов: Написание сценариев тестирования с помощью инструментов (JMeter, k6, Gatling).
- Запуск теста: Эмуляция нагрузки.
- Мониторинг: Сбор метрик с системы (серверов, БД, сети).
- Анализ результатов: Интерпретация данных и составление отчета.
Ключевые метрики:
- Throughput (Пропускная способность): Количество успешных запросов в секунду (RPS).
- Response Time (Время отклика): Среднее, 90-й/95-й процентили.
- Error Rate (% ошибок): Процент неудачных запросов.
- Utilization (Использование ресурсов): Загрузка CPU, потребление памяти, IO.
Пример конфигурации сценария в JMeter:
Thread Group
├─ Number of Threads (users): 200
├─ Ramp-up period (seconds): 60 // Наращиваем до 200 пользователей за 1 минуту
└─ Loop Count: Forever / 100
HTTP Request
├─ Server Name: api.myapp.com
├─ HTTP Request: GET
└─ Path: /api/v1/products
Нагрузочное тестирование — критический этап для обеспечения качества работы приложения в реальных условиях.