Все записи

Аналитика нагрузочного тестирования

Проблемы с производительностью обычно проявляются в самый неподходящий момент: когда резко растет нагрузка или система обрабатывает сложные сценарии.

Именно для таких ситуаций существует нагрузочное тестирование. Но сам процесс — это не только запуск тестов. Нужно собрать требования, подготовить инфраструктуру, настроить инструменты и синхронизировать работу команд.

Егор аналитик.jpg

Егор, аналитик в Naumen Contact Center, рассказал, как внутри продукта устроено нагрузочное тестирование и почему «запустить тест» — самая простая часть.


Что такое нагрузочное тестирование? 

Нагрузочное тестирование показывает, насколько хорошо система справляется с большим количеством пользователей или объемом данных. В случае контакт‑центра это, например:

  • количество одновременно работающих операторов
  • нагрузка на входящие и исходящие вызовы
Нагрузочное тестирование нельзя рассматривать отдельно от остального тестирования. Оно связано и с разработкой фич, и с архитектурой, и с нефункциональными требованиями.

Почему аналитик вообще занимается нагрузочным тестированием?

У каждого аналитика в нашей команде есть свои зоны экспертизы. Я, например, начал погружаться в тему производительности, поэтому нагрузочное тестирование со временем стало частью моей работы.

Моя задача — анализировать требования и описывать, как именно должно проходить нагрузочное тестирование: что проверяем, какие сценарии запускаем и какие параметры считаем важными.

Когда нужно проводить нагрузочное тестирование?

Есть несколько типичных ситуаций, когда без него не обойтись:
  • Регулярные проверки перед релизом или после обновления серверов. 
  • Тестирование новых фич — если изменения потенциально могут повлиять на производительность. 
  • Запросы от клиентов или команды внедрения — когда нужно проверить нагрузку или конфигурацию. 
  • Внутренние задачи разработки — когда команде нужно проверить свои решения под нагрузкой. 
Однако протестировать все невозможно — это требует слишком больших ресурсов. Поэтому мы используем карту нефункциональных требований: проходим по чек-листу и смотрим, могут ли изменения повлиять на производительность системы.

Как принимается решение о проведении тестирования?

Обычно это происходит на встрече по оценке фичи. В обсуждении участвуют тимлиды разработки, архитекторы, тестировщики и другие cпециалисты. Аналитик приносит информацию по изменениям, а дальше команда совместно решает, нужен ли нагрузочный тест.


Как устроен процесс нагрузочного тестирования?

Процесс можно разделить на три этапа:

  1. Первичная аналитика — собираем требования и определяем цель. 
  2. Детальная аналитика — описываем сценарии, метрики, инфраструктуру.
  3. Проведение тестов — запускаем тестирование и анализируем результаты.

Почему нагрузочное тестирование требует отдельной инфраструктуры?

Для более-менее реалистичного тестирования недостаточно одного сервера. В нашем случае используются несколько гипервизоров, десятки виртуальных машин, серверы генерации и приема нагрузки, а также инструменты вроде Gatling, JMeter, Grafana и Ansible.

Отдельные компоненты эмулируют работу операторов и клиентов. Например, для проверки нескольких тысяч операторов фактически собирается отдельный контур.


Почему даже короткий тест может занимать полтора часа?

Потому что сам прогон — только часть процесса. До запуска нужно подготовить окружение, очистить старые данные, проверить сервисы, настроить мониторинг и применить параметры. После — собрать артефакты, метрики и результаты. Поэтому тест на 20 минут превращается в полтора часа работы.


Что происходит после тестирования?

После прогона команда анализирует логи, метрики, бизнес-отчеты и дашборды в Grafana. Есть основные метрики, которые проверяются постоянно. Для контакт-центра это, например, скорость установления соединения, скорость открытия экранных форм, переходов между ними и закрытия экранных форм.

Если эти показатели проседают, тест нельзя считать успешно пройденным, даже если сама фича формально работает.

После анализа команда либо фиксирует результаты, либо заводит задачи на доработку сервисов, окружения или инструментов.

Похожие новости

Инструменты, которые упрощают iOS-разработку

Старый код усложняет рефакторинг, тесты в команде запускаются по-разному, баги не воспроизводятся на хорошем Wi-Fi, а после обновления инструментов локальная сборка начинает расходиться с CI — по отдельности все это мелочи, но именно они постепенно начинают тормозить разработку.

В статье Ринат, iOS-разработчик Naumen, рассказывает об инструментах, которые помогают ему решать такие задачи и упрощать повседневную работу.

ИИ против ИИ: кто победит в кибербезопасности

С каждым днем кибератаки становятся дешевле, быстрее и убедительнее — во многом за счет ИИ. То, что еще недавно казалось фантастикой, сегодня стало вполне рабочим инструментом: от персонализированного фишинга до реалистичных дипфейков.

Денис — руководитель группы мониторинга и анализа инцидентов информационной безопасности в Naumen. Его команда отслеживает события в инфраструктуре, расследует инциденты и помогает коллегам разбираться с вопросами киберграмотности.

В статье на Хабре Денис рассказывает, какие именно изменения привнес ИИ в атаки, почему классическая модель защиты начинает давать сбои и где ИИ в защите действительно приносит пользу.

Как отдохнуть на майских и не потерять эффективность

Майские праздники часто становятся испытанием: на выходных не отпускает работа, а в промежутках между ними сложно включиться в рабочие задачи.

Мы обсудили эту проблему с Машей — тренером в группе обучения и развития. Она поделилась советами, которые помогают пройти такие периоды без перегруза: сохранить эффективность и при этом действительно отдохнуть.

Все новости