Описание
Тестирование пиковой нагрузки (тестирование пиков, spike testing, иногда спайк-тестирование) — один из видов тестирования производительности. Приложение (сайт) получает резкое и очень большое повышение нагрузки (количества запросов к серверу), с последующим столь же резким понижением. Цель такого тестирования — изучить поведение приложения при экстремальных скачках трафика, и предусмотреть действия команды, если и когда такое случится. Предметом изучения также является поведение системы после скачков трафика.
Особенности
Во время спайк-тестирования команда проверяет, что в приложении пострадало (ухудшилось, замедлилось, зависло, или вообще прекратило функционировать).
Понимание, что, где, и когда в приложении «поломалось» при скачке трафика, позволяет разработчикам лучше к этому подготовиться, «подтянуть» программную и аппаратную части системы.
Классический пример тестирования пиковой нагрузки — подготовка приложения магазина к «черной пятнице».
Для такого тестирования, как правило, готовят отдельное тестовое окружение. Максимумы нагрузки должны быть примерно известны до начала; так что команда сосредоточится на анализе производительности и определении проблемных мест, не тратя время на детали.
Классический инструмент нагрузочного тестирования, бесплатный Apache JMeter, в умелых руках позволяет качественно симулировать скачки трафика. Существует много других инструментов по ссылке.
Отличия от других распространенных типов тестирования производительности
Нагрузочное тестирование оценивает поведение системы в «нормальных рабочих» условиях, при разных уровнях нагрузки, которая не достигает уровня «пиковой», или по крайней мере не достигает так быстро.
Стресс-тестирование похоже на спайк-тестирование уровнем нагрузки, однако стрессовое тестирование это анализ происходящего в системе перед тем как она «поломается». При стресс-тестировании приложение получает постоянно растущую нагрузку, а не пиковую/скачкообразную.
Преимущества и недостатки
Преимущества:
- Определение последствий резких скачков нагрузки в программной и аппаратной части
- Будет известно, как приложение поведет себя во время скачка, и как будет восстанавливаться
- Руководители проекта будут примерно знать пределы выносливости системы в дни распродаж, активной регистрации новых клиентов и т.п.
- И команда подготовит предложения
Недостатки:
- Необходимость создать отдельное тестовое окружение, из-за специфичности такого тестирования
- Требуется довольно много ресурсов и времени
Этапы
- Создание и настройка тестового окружения
Окружение зависит от проекта, но основное условие то, чтобы тестовое окружение было изолировано.
- Определить максимальную нагрузку
Которая и будет считаться пиковой.
- Подать на систему пиковую нагрузку
Стандартная рабочая нагрузка резко повышается до уровня пиковой, и система фиксируется в этом состоянии.
- Анализ производительности
Собираются нужные данные по производительности (метрики). Когда, и если система откажет при ожидаемой пиковой нагрузке, изучается состояние программной и аппаратной части.
- Снижение нагрузки до обычной
Обычной, или минимальной. Как и повышение нагрузки, понижение тоже производится быстро.
- Оценка производительности после пика
После того как система претерпела резкий скачок нагрузки, она должна восстановиться без проблем (без потери данных).
Цикл повторяется несколько раз.
- Анализ, репорты, графики
На последнем этапе тестировщики анализируют метрики, рисуют графики и составляют репорты, и готовят выводы, на основе которых руководство принимает решения по архитектуре, и разработчики совершенствуют приложение.