Александр Головко, руководитель группы технических решений разработки банкоматов в Т-Банке, делится опытом использования роботов для тестирования устройств банковского самообслуживания.
Когда мы разрабатываем код для улучшения функционала банкоматов, у нас есть этап тестирования нового ПО в связке с железом. Это происходит вручную, и сам процесс крайне трудоемкий: нужно проверить работу ПО на всех возможных сценариях: карта вставляется и извлекается без ошибок, купюры банкомат не зажевывает, экран реагирует на касания правильно. И так снова и снова, чтобы быть уверенным, что система не подведет наших клиентов.
Со временем мы поняли, что такая рутина занимает много времени и сил у QA-команды, и решили это изменить. Наша цель была проста, но амбициозна: высвободить ресурсы QA и избавить их от рутинного ручного тестирования, дав возможность сосредоточиться на более важных и интересных задачах.
Поиск решения
Промышленный робот: мощно, но не гибко
Когда мы только задумались об автоматизации ручного тестирования АТМ, казалось, что решение почти очевидно — взять промышленного робота. Но нам очень быстро стало ясно, что на практике этот вариант не сработает.
Такие роботы стоят дорого, требуют сложной настройки, участия узкоспециализированных инженеров и программистов, а также соблюдения норм безопасности, так как работать рядом с такими манипуляторами можно только с ограждениями и датчиками. Еще один серьезный недостаток — отсутствие гибкости. Большинство промышленных роботов рассчитаны на выполнение одной конкретной задачи, например, на сборочную операцию или упаковку деталей. При малейшем изменении сценария всю систему приходится перенастраивать заново. И, наконец, такие решения практически не масштабируются. Из-за своих габаритов робота нельзя просто взять и перенести к другому банкомату.
Устройства-накладки: не дают готового решения
Вторым вариантом стали отдельные устройства-накладки: «тыкалка» для экрана, «вставлятель» карт, «прикладыватель» карт, устройство внесения и изъятия купюр. Штука вроде бы компактная, но универсального решения она не имеет. Из-за того что каждый банкомат имеет свою компоновку — разные экраны, шаттеры, ПИН-пады, — каждую накладку приходилось бы дорабатывать под конкретную модель. Настройка и синхронизация такого «оркестра» отнимали бы больше времени, чем само тестирование, а инженеры потратили бы часы на то, чтобы заставить механизмы работать в унисон. Автоматизация, задуманная как облегчение, оборачивалась новой формой ручного труда.
Аренда робота: дорого и непрактично
Мы также рассматривали вариант аренды робота у сторонней компании. Однако стоимость аренды за несколько месяцев почти равнялась покупке собственного устройства. К тому же готовых сценариев под банковскую специфику не существовало — большинство арендных решений были рассчитаны на сферу обслуживания и развлечений (рисование портретов, подача кофе, игра на музыкальном инструменте). К тому же, чтобы робот мог работать с банкоматом, пришлось бы полностью перестраивать его логику и адаптировать периферию: лотки, захваты, стилусы.
Коллаборативный робот: наш выбор
После долгих раздумий мы нашли оптимальный вариант — коллаборативный робот. Он компактный, безопасный и может работать в паре с человеком. Да, он медленнее промышленных моделей, но скорость для нас не была главным критерием — мы делали ставку на качество и масштабируемость.
Коллаборативными роботами занимаются многие, но почти все компании ориентированы либо на промышленность, либо на рынок развлечений. Нам же нужно было решение для тестирования. Мы нашли поставщика, готового привезти робота, подготовить необходимые элементы (захваты, лотки, тумбу) и помочь с интеграцией, чтобы мы могли взаимодействовать с API робота через C#. На старте этого было достаточно, поэтому мы внесли предоплату и начали ждать доставку оборудования.
Первые шаги и неожиданные сложности
Когда к нам наконец приехали несколько аккуратных коробок от Jaka, мы были очень воодушевлены: вот он, инструмент, который избавит QA-команду от бесконечных ручных проверок. Однако реальность быстро остудила энтузиазм.

Робот оказался капризным: каждое движение нужно было прописывать вручную, иначе он либо натыкался на корпус банкомата, либо двигался слишком медленно. К тому же стилусы для нажатия на ПИН-пад и экран в отдельных стаканах замедляли работу, лотки для купюр были слишком узкими, а сам металлический захват не помещался в шаттер некоторых моделей банкоматов, из-за чего не получалось корректно положить или забрать купюры. Мы часто «ловили блокировку» из-за превышения ускорения сервоприводов, у вендора роботов не было защиты от таких ситуаций. Особенно много трудностей вызвала калибровка — малейшее смещение стенда или банкомата сбивало всю систему координат, и робот начинал промахиваться мимо кнопки ПИН-пада или не доставал до экрана.
Взяли управление в свои руки
Стало очевидно, что возможностей готового робота для нас недостаточно, поэтому мы решили пойти своим путем. Начали с механики: переработали конструкцию стенда, напечатали новые захваты, встроили стилус прямо в крепление, чтобы сократить движения, и изменили компоновку стенда, оптимизировав работу.
Параллельно начали искать решение для разработки нужных нам интерфейсов для управления роботом. Таким инструментом стал ROS2 — фреймворк с открытым исходным кодом для разработки робототехнических систем.
Главной целью перехода было внедрение MoveIt2 — открытой платформы для планирования движений в робототехнике, которая позволила учитывать окружение манипулятора, анализировать коллизии и подбирать оптимальные траектории. MoveIt2 не просто выполняет команды, а просчитывает десятки вариантов траекторий, выбирая самый безопасный и короткий путь, — буквально строит «дерево маршрутов», где каждая ветвь ведет к цели.
Мы использовали MoveIt Task Constructor, чтобы разбивать сложные сценарии на мелкие шаги — подъехать, захватить, переместить, отпустить, — и перепланировать движения на каждом этапе. Это позволило валидировать весь сценарий до его запуска: если робот физически не сможет выполнить движение или на пути окажется препятствие, сценарий просто не запустится.
Как мы автоматизировали калибровку робота
Раньше калибровка была самым болезненным этапом тестирования. Манипулятор приходилось вручную подводить к точкам на банкомате, проверять, не промахивается ли он при вставке карты или нажатии кнопок. Любая неточность — и все приходилось начинать заново.
Теперь процесс стал почти полностью автоматическим. Робот использует 3D-камеру, ориентируется с помощью специальных меток и реагирует на прикосновения к экрану банкомата. После установки стенда система находит 2D-метку, выравнивает камеру под прямым углом, строит плоскость и вычисляет положение тестируемого банкомата в пространстве.
Из-за небольшой погрешности камеры (до 4 мм) мы добавили второй этап калибровки — через тачскрин. Робот касается экрана в трех точках и уточняет координаты с шагом 0,5 мм, достигая почти идеального выравнивания.
В результате калибровка, которая раньше занимала часы, теперь выполняется автоматически за несколько минут. Робот действительно «видит» банкомат и способен сам определить свое положение без участия человека.
Как мы интегрировали роборуку в процессы тестирования
Теперь наш робот выполняет все, что делает человек при тестировании банкомата: вставляет и извлекает карту, снимает и пополняет счет, нажимает на экран и ПИН-пад, вводит суммы и ПИН, кладет и забирает купюры из шаттера. Этих действий оказалось достаточно, чтобы составить все необходимые тест-кейсы для тестовых сценариев разного рода.
Чтобы избежать дублирования кода для разных версий UI и ОС банкомата, мы разработали тест-раннер на JavaScript. Он работает как слой адаптации, «переводя» высокоуровневые команды тест-кейсов в вызовы API робота. Тесты запускаются в трех режимах: моки, эмулятор и реальный банкомат с роботом. Это позволило интегрировать роборуку как еще одно окружение без переписывания тестов.
Мы описываем тесты в виде сценариев, включающих и шаги, и возникающие побочные эффекты. Благодаря этому тесты стали гибкими и переиспользуемыми. Дополнительно мы внедрили конструктор тестов, позволяющий создавать и читать тесты даже тем, кто незнаком с технологическим стеком.
Благодаря роборуке мы смогли полностью автоматизировать и повысить качество рутинного тестирования, сократить риск человеческой ошибки и перераспределить QA-ресурсы на более сложные и креативные задачи.
Результаты роботизации тестирования ATM
Сегодня система может выполнять 203 тест-кейса, охватывает пять моделей банкоматов, а переход на новую модель и калибровка занимают менее пяти минут. Это позволило сократить время на проведение тестов на 110 часов в месяц, а самое главное – высвободить ресурсы команды для разработки лучших решений.
Вот какие эффекты мы получили:
● Экономия времени QA: до 15 часов в день на команду управляющего ПО и до 18 часов — на команду UI.
● Общая экономия: 110 человеко-часов в месяц при трех регрессах и пяти моделях АТМ.
● Снижение нагрузки на QA: более чем на 100 часов в месяц.
● Повышение регулярности и качества тестирования: робот не устает, не отвлекается и не пропускает шаги.
● Снижение риска человеческой ошибки.
● Возможность перераспределения ресурсов: QA теперь занимаются анализом, проектированием сложных сценариев и участвуют в разработке новых функций.
Данный проект показывает, что роботизация тестирования — это не фантастика, а реальный инструмент повышения эффективности, и особенно актуальна, если у банка:
● большой парк банкоматов разных моделей,
● частые обновления ПО,
● высокие требования к надежности и безопасности.
Ключевые выгоды:
● Стабильность тестов: робот выполняет действия каждый раз с одинаковой точностью.
● Масштабируемость: один робот может тестировать несколько моделей АТМ.
● Быстрая настройка: переход на новую модель — менее чем за 5 минут.
● Снижение операционных издержек: меньше ручного труда, меньше ошибок, быстрее выход обновлений на прод.
● Поддержка цифровой трансформации: автоматизация рутинных процессов — важный шаг на пути к «умному банку», где технологии работают на качество и скорость обслуживания.

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











