Особенности нагрузочного тестирования банковского ПО: что важно учитывать

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

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

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

Нагрузочное тестирование (performance testing) — это тип тестирования ПО, цель которого определить, как система ведет себя под ожидаемой рабочей нагрузкой, и выявить возможные узкие места, которые могут привести к сбоям или снижению производительности.

Designed by Freepik

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

Особенности нагрузочного тестирования банковского ПО

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

  1. Когда система обрабатывает высокие объемы транзакций длительное время (например, при TPS 650 на протяжении 4 часов), критически важно выявить и предотвратить утечки памяти и чрезмерное потребление ЦПУ.

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

  3. Нагрузочное тестирование особенно важно после обновлений от вендора — тестирование кастомного релиза помогает исключить несовместимость и минимизировать риски, которые могут повлиять на стабильность работы. Часто бывает, что один вендор распространяет сразу много кастомных версии и не всегда тестирует все версии самостоятельно.

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

Основные метрики

Результат работы  performance тестировщика — это не просто список ошибок, а анализ метрик, характеризующих работу системы при больших нагрузках. Клиентам они предоставляются в виде отчетов с графиками. Например:

  1. Утилизация ЦПУ (CPU Load) измеряет уровень загрузки процессора при выполнении различных операций банковским ПО. Она позволяет понять, насколько эффективно обрабатываются запросы и как распределяются вычислительные мощности.

  1. Количество входящих и исходящих операций вход-выход операции (I/O Operations) отражает количество операций ввода-вывода, которые обрабатываются в процессе выполнения транзакций. В банковских системах важно следить за частотой и временем отклика операций I/O, чтобы убедиться, что система может справляться с большим количеством запросов.

  2. Метрика запись и чтение диска (Disk Read/Write) измеряет скорость и объем операций записи и чтения на диск.

5ea34360a5f01dd60634ca837ef70088.png

  1. Также изменяется время загрузки дисков, например при работе системы с базой данных Oracle, кроме проверки загрузки дисков приложения банковского ПО, будет также осуществляться мониторинг загрузки дисков с redo log и datafile.

54eb31324cd9e25f48698eaf1a9ec37d.png

Этапы нагрузочного тестирования

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

1fcd73e7246d193e4dc113c15f60ace4.png

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

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

  3. Затем осуществляется настройка тестовой среды, которая должна максимально точно отражать реальную эксплуатационную среду. На этом этапе настраиваются инструменты для проведения нагрузочных тестов и загружаются тестовые данные. Также нужно определить и разработать «заглушки» (Mock-up) для внешних запросов от банка к сторонним сервисам, чтобы тестовая среда не отправляла реальные запросы банковским контрагентам и не ждала от них реального ответа. В случае с банками заглушка принимает запрос от банка положительно отвечает одним из типовых ответов (если тесты не включают в себя негативные проверки).

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

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

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

  4. На основе анализа результатов и рекомендаций проводится оптимизация системы.

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

Так, например, когда мы обнаружили у заказчика задержку в обработке онлайн-транзакции, мы начали искать причину такого поведения системы. Оказалось, что дело в неоптимальных запросах к базе данных. Оптимизировав эти запросы, мы сократили время отклика на 60%.

Заключение

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

В своем блоге на vc.ru я рассказываю о проектах нашей команды, делюсь своими размышлениями о рынке IT-аутсорсинга и ФинТеха. Подписывайтесь, будет интресно)

881fde5404f0d49a688a8b74495f8ad1.jpgЕлена Мухитова

CEO SmartexSoft

© Habrahabr.ru