Разработка технологии автоматизированного нагрузочного тестирования банковской платежной системы Алимов Александр Вадимович1, Позин Борис Аронович2, Новиков Роман Сергеевич3, Галахов Илья Владимирович4, Гиниятуллин Ренат Гаптенурович5 1 инженер по качеству ЗАО «ЕС-лизинг», магистр, alimov@ec-leasing 2 инженер ЗАО «ЕС-лизинг», бакалавр, rnovikov@ec-leasing.ru 3 технический директор ЗАО «ЕС-лизинг», д.т.н., профессор, bpozin@ec-leasing.ru 4 главный технолог ЗАО «ЕС-лизинг», к.т.н., igalakhov@ec-leasing.ru 5 ведущий специалист ЗАО «ЕС-лизинг», специалист, rginiatullin@ec-leasing.ru Abstract. The article is devoted to the development of technology for automat- ed load testing of the bank payment system based on load testing models. The object of the study is creation of automated test performance of bank payment systems. The subject of the study is the technology of automated performance testing. The aim of the study is to develop automated technology of perfor- mance testing systems and managed messages, for automatic preparation pro- cess and launching of performance tests, analysis of results with further compi- lation of reports. The article considers the main aspects of the developed tech- nology. Аннотация. Данная статья посвящена разработке технологии автоматизи- рованного нагрузочного тестирования банковской платежной системы, основанной на моделях нагрузочного тестирования. Объектом исследова- ния является процесс проведения нагрузочных испытаний банковских платежных систем. Предметом исследования является технология автома- тизированного нагрузочного тестирования. Целью исследования является разработка технологии автоматизированного нагрузочного тестирования банковских платежных систем. Статья содержит главные аспекты разра- батываемой технологии. 1 Введение Любые крупномасштабные системы, включая банковские платежные системы, должны поддерживать одновременный доступ из тысяч или миллионов пользо- вателей и обработку миллионов сообщений. Как правило неудачи в системах 257 такого масштаба приводят к катастрофическим отказам и последствиям. От качества функционирования систем такого вида зависит непрерывность бизне- са. Для обеспечения качества таких систем, нагрузочное тестирование является обязательным в дополнение к обычному функциональному тестированию и проводится на регулярной основе, чтобы гарантировать, что они могут пра- вильно функционировать под нагрузкой. Актуальность статьи обусловлена необходимостью регулярного тестирова- ния банковских платежных систем, отсутствием готовых решений и технологий для этих целей. На текущий момент подавляющее большинство инструментов тестирования направлены на работу с графическим интерфейсом пользователя. Однако такими средствами невозможно протестировать систему, которая обра- батывает электронные сообщения и не имеет непосредственного взаимодей- ствия с пользователем. В связи с этим и возникла потребность разработать тех- нологию, направленную на нагрузочное тестирование банковских платежных систем. Анализ научно-технической литературы показал, что готовых решений для систем такого класса, то есть для систем, управляемых преимущественно сообщениями, а не рабочих мест конкретных операторов – нет. Необходимость затрат на тестирование определяется тем, что ошибка, проявившаяся в такой системе, может приносить конкретные, зачастую измеримые потери: невыпол- нение обязательств (как следствие – штрафы или другие виды претензий), поте- рю клиентов, ошибки в расчетах, приводящие к дополнительным затратам или невыполнению заказов, задержке, некорректным расчетам или даже к срыву автоматизированных банковских операций, то есть к прямым потерям. Научная новизна статьи заключается в том, что для банковских платежных систем была предложена новая технология автоматизированного комплексного нагрузочного тестирования, обеспечивающая адекватность нагрузочного экспе- римента. Также технология использует методы «неразрушающего контроля»1, что позволяет оценить результаты нагрузочного тестирования без искажения сторонней нагрузкой. А тестирование проводится методом «черного ящика» на этапах жизненного цикла (ЖЦ) – эксплуатация, сопровождение и развитие. Объектом исследования является процесс проведения нагрузочных испыта- ний банковских платежных систем. Предметом исследования является технология автоматизированного нагру- зочного тестирования. Целью в данной статье поставлена разработка технологии автоматизирован- ного нагрузочного тестирования банковской платежной системы, для автомати- зации процесса подготовки к нагрузочным испытаниям, их проведению и ана- лизу результатов с дальнейшим составлением отчетов. Задачи, необходимые для достижения цели: 1. Анализ предметной области; 1 Под «неразрушающим контролем» понимается наблюдение за объектом тестирования без вме- шательства в вычислительные процессы тестируемой системы. 258 2. Разработка технологического процесса нагрузочного тестирования банков- ской платежной системы; 3. Разработка проекта автоматизации решения задач для проведения нагрузоч- ных испытаний банковской платежной системы; Каждый раздел статьи будет посвящен решению поставленной задачи под соот- ветствующим номером. 2 Анализ предметной области Тестирование программного обеспечения (далее – ПО) — вид деятельности в процессе разработки, который связан с выполнением процедур, направленных на обнаружение (доказательство наличия) ошибок в разрабатываемой системе. Нагрузочное тестирование (далее – НТ) — это вид тестирования, при кото- ром имитируется работа определенного числа пользователей на каком-либо общем ресурсе (одновременная работа пользователей с ПО), либо подается определенное количество тестовых данных на какую-либо систему. Данный вид тестирования позволяет выявить максимально возможное число одновременно работающих пользователей, определить время выполнения выбранных опера- ций, определить границы приемлемой производительности, выявить узкие ме- ста как в аппаратной части (CPU, ОЗУ и пр.), так и в программной. При автоматизированном тестировании для выполнения тестов и дальнейшей проверки результатов их выполнения используются программные средства. Чтобы обеспечить адекватность поставленной задачи проведения автомати- зированного нагрузочного тестирования, исходных данных и результатов экс- перимента, необходимо достичь между заказчиком и подрядчиком обоюдного понимания ключевых аспектов планируемого эксперимента. На текущий момент на рынке для обеспечения адекватности нагрузочного тестирования банковских платежных систем нет решений, за исключением од- ного. Существует публикация по моделям в нагрузочном тестировании. [1] В ней говорится о том, что существуют метамодели для обеспечения адек- ватности результатов нагрузочного тестирования и его частей: постановки зада- чи, исходных данных и анализа результатов нагрузочного теста. Эти модели применимы к нагрузочному тестированию информационных систем (в том чис- ле банковских платежных систем), включающих прикладное и системное ПО в IT – среде функционирования, развернутые на оборудовании комплекса техни- ческих средств информационной системы (далее – ИС). Модели были разработаны авторами публикации «Модели в нагрузочном те- стировании» Б.А. Позиным и И.В. Галаховым. [1]. В данной публикации присутствует понятие «метамодель». Метамодель нужна для описания возможных понятий, которые могут быть существенными при последующем нагрузочном тестировании и оценке адекватности его ре- зультатов. Метамодели нужны для обеспечения общего подхода к постановке задачи как Заказчиком, так и Исполнителем. Они являются промежуточным элемен- 259 том, соединяющим неформализованные требования Заказчика с формализован- ным описанием нагрузочного эксперимента в виде моделей. Представлены следующие метамодели: 1. Метамодель требований – содержит правила формализации требований к эксплуатационным характеристикам системы. 2. Метамодель системы – позволяет описать структуру системы как сеть систем массового обслуживания, состоящих из элементов типа «ресурс» и связей между ними. 3. Метамодель нагрузки – определяет структуру входного потока нагрузки. 4. Метамодель измерений – предназначена для унификации описания способов получения измеряемых величин при нагрузочном тестировании ИС, принци- пиальных возможностей постановки процесса измерений, типовых способов оценки показателей и характеристик, общих свойств инструментальных средств для анализа возможностей их использования для автоматизации из- мерений. Рис. 1. Модели в нагрузочном тестировании. На основе метамоделей формируются соответственно модели требований, си- стемы, нагрузки и измерении (рисунок 1). В модели требований представлены требования к системе, состоящие из бизнес-правил и технических требований. В модели системы указаны устройства объекта тестирования, программные ком- плексы, связи между комплексами, связи комплексов с устройствами объекта тестирования. В модели нагрузки представлены функции для распределения нагрузки, матрица потоков нагрузки и интерфейсы для ввода нагрузки (в виде ссылки на модель системы). В модели измерений указаны измеряемые величи- ны для каждого типа устройств системы, периодичность и скважность измере- ний, расчетные показатели и взаимосвязь с измеряемыми величинами, правила и алгоритмы получения расчетных показателей, типовые критерии оценки по- лученных результатов. 260 3 Разработка технологического процесса нагрузочного тестирования банковской платежной системы Сама технология нагрузочного тестирования делится на три фазы: 1. Планирование НТ банковской платежной системы; 2. Проведение НТ банковской платежной системы; 3. Анализ и формирование отчета Каждая фаза включает в себя несколько этапов. Характерными этапами для фазы «планирование НТ банковской платежной системы» являются: • разработка плана нагрузочного тестирования системы; • разработка программы и методики испытаний (ПМИ); • разработка диаграммы нагрузки. • генерация надлежащей нагрузки (тестовых данных) в соответствии с планом нагрузочного тестирования и диаграммой нагрузки. Характерными этапами для фазы «проведение НТ банковской платежной си- стемы» являются: • подача нагрузки; • сбор данных для дальнейшего анализа; Характерными этапами для фазы «анализ и формирование отчета» являются: • анализ и агрегация всех данных, полученных в результате тестирования; • составление итогового отчета. На рисунке 2 представлено описание автоматизированных бизнес-процессов проведения комплексного НТ на всех фазах, описанных в технологии автомати- зированного НТ. На схеме показано, на каких фазах используются модели НТ и система автоматизированного нагрузочного тестирования (далее – САНТ), ав- томатизирующая данные фазы. 261 Рис. 2. Описание организации автоматизированного бизнес-процесса проведения НТ. 4 Разработка проекта автоматизации решения задач для проведения нагрузочных испытаний банковской платежной системы Для автоматизации технологии и процесса проведения НТ банковской платеж- ной системы была разработана САНТ. САНТ автоматизирует процесс НТ на всех фазах и состоит из подсистем ге- нерации нагрузки, подачи нагрузки, анализа данных и формирования отчета (рисунок 3). 262 Рис. 3. Проект автоматизации технологии НТ банковской платежной системы. Тестирование происходит следующим образом: на фазе планирования в соот- ветствии моделью нагрузки, согласованной у заказчика, с помощью подсистемы генерации нагрузки генерируются тестовые платежные сообщения и помеща- ются в базу данных (далее – БД) САНТ. Затем подсистема подачи нагрузки бе- рет тестовые платежные сообщения из БД САНТ и подает их с привязкой ко времени на вход тестируемой системы, а именно в средства гарантированной доставки сообщений. После чего подсистема анализа данных и формирования отчета собирает с тестируемой системы данные для анализа и составления сводного отчета по результатам НТ. 5 Заключение В результате анализа предметной области сформулированы требования к техно- логии нагрузочного тестирования и средствам ее автоматизации. Также было установлено, что на рынке нет готовых решений для комплексного нагрузочно- го тестирования, с использованием концепции «неразрушающего контроля», методом «черного ящика» систем, управляемых в основном сообщениями, на этапах жизненного цикла – эксплуатация, сопровождение и развитие. Разработана технология нагрузочного тестирования банковской платежной системы, основанная на совместном использовании моделей, которые позволя- ют адекватно построить нагрузку на тестируемую систему в ходе эксперимента и адекватно оценить результаты нагрузочного тестирования. Технология осно- вана на моделях нагрузочного тестирования, чтобы обеспечить адекватность поставленной задачи, исходных данных и результатов нагрузочного экспери- мента, а также обоюдного понимания ключевых аспектов планируемого экспе- римента между заказчиком и подрядчиком. 263 Автоматизированы фазы технологии нагрузочного тестирования. Разрабо- танная технология была автоматизирована с помощью разработки системы ав- томатизированного нагрузочного тестирования (САНТ), таким образом удалось: 1. Сократить затраты на ресурсы и время для подготовки тестовых данных. За счет автоматизации генерации тестовых данных было сокращено количество сотрудников, задействованных в подготовке тестовых данных до 1 человека, а также достигнуто сокращение времени подготовки тестовых данных с трех недель до 1 рабочего дня при генерации 10 миллионов платежных сообщений всех типов, что позволяет повысить качество эксперимента. 2. Сократить время на анализ и формирование отчетов. Так как анализ с после- дующей фильтрацией полученной информации, обработка измеряемых ха- рактеристик (их интерпретация, агрегация) и формирование отчета проходят в автоматизированном режиме, удалось сократить время проведения фазы анализа и формирования отчетов с 5-7 дней до получаса. Литература 1. Models in performance testing, Pozin B.A., Galakhov I.V., Programming and Computer Software. 2011. Т. 37. № 1. pp. 15-25. 2. Zhen Ming Jiang; Ahmed E. Hassan, A Survey on Load Testing of Large-Scale Software Systems // IEEE Transactions on Software Engineering (Volume: 41, Issue: 11, Nov.1 2015), pp. 1091 – 1118. 3. Алимов А.В. Нагрузочное тестирование платежной системы // Межвузовская науч- но-техническая конференция студентов, аспирантов и молодых специалистов им. Е.В. Арменского. Материалы конференции. – М.: МИЭМ НИУ ВШЭ, 2016. С.83-84. 4. Алимов А.В. Технология автоматизированного нагрузочного тестирования крупно- масштабных систем // Межвузовская научно-техническая конференция студентов, аспирантов и молодых специалистов им. Е.В. Арменского. Материалы конференции. – М.: МИЭМ НИУ ВШЭ, 2017. С.448-449. 5. Бейзер Б., Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем. – СПб.; Питер, 2004. – 318 с.