[Из песочницы] Как (авто)тестировать Монстра

Здравствуй, уважаемый читатель.

Сфера IT в банках весьма обширна. И, думаю, сообщество банковских IT-шников представлено на Хабре достаточно широко. В этой статье затронем тему тестирования специфического банковского ПО. Из-за некоторой закрытости такого рода организаций информации о происходящем внутри просачивается довольно мало. Давайте приоткроем завесу тайны.

Итак, позвольте представиться. Меня зовут Алексей, и я алк… тестирую АБС ЦФТ-Банк.

e9j2lhfciepfr77pc-4jfzz2ypi.png


Что за Монстр

ЦФТ-Банк — автоматизированная банковская система (АБС) разработки ООО «Центр
финансовых технологий»
. Это ядро IT-экосистемы Банка. И, де-факто, ЦФТ-Банк — стандарт АБС среди российских банков.

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

Наша АБС сейчас — это:


  • 20.000 таблиц с прикладными данными в СУБД Oracle.
  • 30.000 различных пользовательских операций. (Здесь же нужно учитывать всевозможные вариативные цепочки операций, зависящие от конкретного кейса).
  • 19.000 активных зарегистрированных пользователей.
  • 35 TB данных в СУБД. (Подготовка копий БД для тестовых стендов — тема для отдельного разговора).


Тестируй меня полностью

Монстр — живой. Круглосуточно. Круглогодично. Все возможные праздничные дни и новогодние каникулы — на вес золота. Это время, когда можно вкатывать большие изменения, импортировать новые филиалы, проводить регламентные работы.

Кроме таких больших обновлений есть и еженедельные релизы, ведь Банк должен постоянно улучшать свои продукты. А сколько «веселья» добавила работа во время активности всем известного вируса… эти срочные «ковидные» поставки будут долго сниться нашим разработчикам и тестировщикам.

Важно понимать, что у системы достаточно высокая связанность — по данным, управлению, содержимому. Зачастую очень сложно или даже невозможно предугадать степень влияния, казалось бы, минорного изменения на различные процессы в АБС.

В связи с этим все изменения проходят многоступенчатое тестирование — модульное, функциональное, интеграционное. И его финальная часть — регрессионное. О нем и поговорим.


А можно всех посмотреть?

Ввиду ограниченности ресурсов, как серверных, так и человеческих, на еженедельных релизах приходится проводить строгий «кастинг» тест-кейсов. Тест-менеджеры отобрали и согласовали список из 1.500 тест-кейсов. Один кейс занимает от 5 минут у опытного тестировщика. А иногда требуется и повторный прогон.

И тут, определенно, нужна автоматизация.

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


У вас роботы не той системы

Различных подходов к автоматизации тестирования ЦФТ-Банк достаточное количество.
Но, все «не без греха».


  • В некоторых банках пытаются реализовать UI-тестирование. Проблема в том, что тут нативный desktop-клиент, совершенно не дружественный к автоматизаторам.

msp-xw7zyluwyodq4f5pkmkdx0k.png

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


  • Отдельные компании-интеграторы предлагают свои варианты. Здесь разброс от применения HP UFT до полностью самостоятельных разработок. Некоторые динамичные компании даже научились неплохо тестировать UI. Но тут свои сложности с пересаживанием на иглу другого поставщика (если понимаете, о чем я).
  • Есть даже решение от самого вендора системы. Но Монстр породил Монстра — этот инструмент весьма ресурсоемкий и чрезмерно требовательный к ресурсам для обработки результатов тестирования.


Мы пойдем своим путем

После проведения исследований и пользуясь преимуществом знания внутреннего устройства системы, решили есть Монстра по частям и использовать при этом подходящие инструменты:


  • Есть в системе функционал, вся реализация которого зашита в отдельных процедурах Oracle. Никакой логики на клиенте, только кнопка «Запуск». Будем вызывать процедуры напрямую!
  • Есть проверка продуктовых настроек — не изменило ли очередное обновление данные в таблицах, которые не должны меняться. Выполняем select и сверяем с эталонным результатом!
  • Есть use case с запуском нескольких операций подряд. Будем эмулировать запросы клиента! Тут нам помогает трехуровневая архитектура — между нативным десктопом и СУБД есть http сервер приложений. Немного наблюдательности и становится возможным отправлять запросы по http, идентичные клиентскому приложению.

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

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


Монстр любит разнообразие

Применение такого диверсифицированного подхода к автоматизации тест-кейсов существенно упрощает автоматизацию и позволяет увеличивать долю автоматизированных тестов в регрессе.
На данный момент мы достигли показателя в 30% автоматизации критичных кейсов. И теперь наращиваем темп.

Заметным плюсом отказа от автоматизации через GUI стала скорость работы автотестов. Имеющийся набор из 491 теста проходит в среднем за 32 минуты. Для сравнения, ручной проход этих тест-кейсов занимал суммарно 34 часа.

5m0cj8aafq8diyc0hgb_iw_olgi.png

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

pgihi4nliry_r884z33ktl-xgei.png

Впереди еще много вызовов от Монстра, главное — найти подходящий инструмент для каждой задачи.

Будет интересно, если вы поделитесь своим опытом тестирования ЦФТ-Банк.
Твой ход, @другойбанк

© Habrahabr.ru