Все записи

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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


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

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

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

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

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

Ошибки при работе с ИИ. Часть 1

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

Пообщались с Константином, экспертом по ИИ в Naumen, и собрали несколько частых ошибок, которые встречаются в работе с нейросетями. 

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

Как сохранять устойчивость, когда мир вокруг меняется

Привет! Меня зовут Анна, я руководитель практики в Naumen. Знакомые часто говорят, что я позитивный человек и у меня всегда «все хорошо». И это отчасти правда. Но дело не только в характере или генетике. Мое состояние — результат наработанных практик, которыми я хочу поделиться с вами.

Умение управлять своим эмоциональным состоянием влияет на продуктивность, качество решений и отношения с коллегами. Если мы не умеем себя регулировать, находимся в крайних состояниях, мы теряем эффективность и начинаем чаще ошибаться. А еще становимся опасными для самих себя.

В статье расскажу про практические методы самопомощи и принципы устойчивости, которые мне помогают.

Как давать и принимать обратную связь


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

Задача обратной связи — не определить, кто прав. Она помогает понять, что уже работает, что стоит изменить и как двигаться дальше.

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

Все новости