Представьте ситуацию: через банк ежесекундно проходит более 150 транзакций. Как можно быть уверенными, что такая система будет достаточно надежна и не откажет в 11 вечера в субботу, разочаровав клиентов?
Определить это можно с помощью нагрузочного тестирования. В этой статье я расскажу вам о том, какие есть особенности в нагрузочном тестировании банковских систем, на какие метрики следует обратить внимание и как его проводят в нашей компании.
Что такое нагрузочное тестирование
Нагрузочное тестирование (performance testing) — это тип тестирования ПО, цель которого определить, как система ведет себя под ожидаемой рабочей нагрузкой, и выявить возможные узкие места, которые могут привести к сбоям или снижению производительности.
Этот тип тестирования особенно необходим после внесения существенных изменений в высоконагруженную систему, так как введение новых компонент или функций может непредсказуемо повлиять на архитектуру, вызывая неполадки и ухудшение производительности.
Особенности нагрузочного тестирования банковского ПО
Кроме стандартных случаев, нагрузочное тестирование приобретает особую значимость для банковского сектора, так как здесь особенно распространены системы с высокой нагрузкой, и каждая операция связана с деньгами банка или его клиентов.
-
Когда система обрабатывает высокие объемы транзакций длительное время (например, при TPS 650 на протяжении 4 часов), критически важно выявить и предотвратить утечки памяти и чрезмерное потребление ЦПУ.
-
Проведение тестов позволяет спрогнозировать поведение системы в условиях увеличенной нагрузки, чтобы обеспечить стабильную работу в будущем и оптимально распределить бюджет на модернизацию инфраструктуры. Например, банк ожидает увеличения объема транзакций на 25% в следующем году, нагрузочное тестирование помогает оценить, потребуется ли обновление оборудования в этом случае.
-
Нагрузочное тестирование особенно важно после обновлений от вендора — тестирование кастомного релиза помогает исключить несовместимость и минимизировать риски, которые могут повлиять на стабильность работы. Часто бывает, что один вендор распространяет сразу много кастомных версии и не всегда тестирует все версии самостоятельно.
-
Высокая нагрузка на систему при формировании квартальных отчетов и увеличенное количество запущенных сервисов могут привести к утечке памяти, что, в свою очередь, способно вызвать зависание системы. Нагрузочное тестирование помогает выявить такие проблемы, позволяя вовремя внедрить корректировки, необходимые для стабильной работы в отчетные периоды.
Основные метрики
Результат работы performance тестировщика — это не просто список ошибок, а анализ метрик, характеризующих работу системы при больших нагрузках. Клиентам они предоставляются в виде отчетов с графиками. Например:
-
Утилизация ЦПУ (CPU Load) измеряет уровень загрузки процессора при выполнении различных операций банковским ПО. Она позволяет понять, насколько эффективно обрабатываются запросы и как распределяются вычислительные мощности.
-
Количество входящих и исходящих операций вход-выход операции (I/O Operations) отражает количество операций ввода-вывода, которые обрабатываются в процессе выполнения транзакций. В банковских системах важно следить за частотой и временем отклика операций I/O, чтобы убедиться, что система может справляться с большим количеством запросов.
-
Метрика запись и чтение диска (Disk Read/Write) измеряет скорость и объем операций записи и чтения на диск.
-
Также изменяется время загрузки дисков, например при работе системы с базой данных Oracle, кроме проверки загрузки дисков приложения банковского ПО, будет также осуществляться мониторинг загрузки дисков с redo log и datafile.
Этапы нагрузочного тестирования
Перед началом нагрузочного тестирования необходимо провести функциональные тесты и убедиться, что система полностью готова. Часто чтобы не создавать
-
На первом этапе проводится анализ существующей и разрабатываемой системы. Необходимо выяснить основные сценарии использования, бизнес-требования и технические спецификации.
-
Далее создаётся план нагрузочного тестирования, в котором определяются сценарии тестирования, метрики, методы измерения, механизмы эмуляции большого трафика в тестовом режиме, а также ресурсы, необходимые для тестирования. Для нагрузочного тестирования банковского ПО у нас есть специально разработанная утилита. Мы кастомизируем ее под нужны и требования каждого клиента с учетом его метрик.
-
Затем осуществляется настройка тестовой среды, которая должна максимально точно отражать реальную эксплуатационную среду. На этом этапе настраиваются инструменты для проведения нагрузочных тестов и загружаются тестовые данные. Также нужно определить и разработать «заглушки» (Mock-up) для внешних запросов от банка к сторонним сервисам, чтобы тестовая среда не отправляла реальные запросы банковским контрагентам и не ждала от них реального ответа. В случае с банками заглушка принимает запрос от банка положительно отвечает одним из типовых ответов (если тесты не включают в себя негативные проверки).
-
Запускаются нагрузочные тесты с учётом различных сценариев, которые были определены на этапе планирования. Происходит сбор данных о производительности, стабильности и других важных метрик системы под нагрузкой.
-
Анализируются результаты тестов, выявляются узкие места и проблемные участки системы, которые не выдерживают заявленной нагрузки. На этом этапе важно понять, какие компоненты системы нуждаются в доработке, оптимизации или конфигурации.
-
Далее подготавливаются отчёты по итогам нагрузочного тестирования. В отчёте описываются полученные результаты, выявленные проблемы и предлагаются рекомендации по их устранению. Отчёт состоит из графиков, показывающих различные показатели системы.
-
На основе анализа результатов и рекомендаций проводится оптимизация системы.
На практике я заметила, что заказчики очень ценят, когда команда не только в состоянии выявить утечки памяти, низкую производительность и ошибки в базе данных, но и предложить решения для устранения этих проблем.
Так, например, когда мы обнаружили у заказчика задержку в обработке онлайн-транзакции, мы начали искать причину такого поведения системы. Оказалось, что дело в неоптимальных запросах к базе данных. Оптимизировав эти запросы, мы сократили время отклика на 60%.
Заключение
Нагрузочное тестирование для банков и процессинговых центров — это не просто запуск нескольких запросов в JMeter. Это многоуровневый процесс, представляющий собой всесторонний анализ системы с использованием различных дополнительных инструментов и методов.
Автор: ElenaMuhitova