«Новый метод позволяет ускорить тестирование программ в шесть раз»

Станислав Моисеев, директор R&D-центра «Т-технологий», о том, как «мешок слов» помогает ИТ-бизнесу экономить

Директор R&D-центра «Т-технологий» Станислав Моисеев

Директор R&D-центра «Т-технологий» Станислав Моисеев

Фото: Предоставлено PR-отделом Т-Банка

Директор R&D-центра «Т-технологий» Станислав Моисеев

Фото: Предоставлено PR-отделом Т-Банка

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

В «Т-технологиях» придумали, как разорвать этот круг. Исследователи нашего R&D-центра во Владивостоке разработали новый метод для автоматизации тестирования и контроля качества программных продуктов — Targeted Test Selection (T-TS). Он позволяет ускорить почти в шесть раз тестирование программ. Причем сделать это без сложных вычислений.

Обычное автоматическое тестирование напоминает работу станции техобслуживания, когда проверяется одна деталь автомобиля за другой. Такой подход гарантирует безопасность, но крайне неэффективен: долго и дорого. Существующие способы ускорить этот процесс чаще всего завязаны на специальных картах покрытия кода. Автомеханики тоже заранее знают, какие детали может затронуть ремонт, и начинают проверку с них. Но чтобы такие карты оставались актуальными, нужны отдельные ресурсы и время на их «перерисовку» при малейших изменениях.

Исследователи R&D-центра «Т-технологий» нашли способ кардинально сократить время проверки без существенного снижения качества. Разработанный подход T-TS уже прошел апробацию на инфраструктуре Т-Банка, где используются тысячи тестов и десятки тысяч изменений в коде ежедневно. Новый метод позволяет запускать в среднем всего 15% от полного набора тестов и при этом находит более 95% багов.

Новое исследование позволяет отказаться от карт покрытия кода и использует статистику прошлых изменений. T-TS анализирует, какие именно файлы в коде менялись, кем, сколько раз это происходило и как часто эти изменения приводили к ошибкам. Для оценки изменений используется принцип «мешка слов» (bag-of-words), широко применяемый в поисковых системах: здесь каждой «единицей» в мешке становится статистика конкретного файла. На практике это напоминает сортировку почты: если письмо приходит от адреса, с которого уже много спама, его стоит проверить особенно тщательно, но нет смысла перечитывать все письма подряд. Так же и с тестами: система предсказывает, какие из них с наибольшей вероятностью обнаружат ошибки при новых изменениях, опираясь на опыт прошлых сбоев.

Фото: Getty Images

Фото: Getty Images

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

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

Ключевой критерий эффективности для компании — практический эффект внедрения новой технологии. Среднее сокращение времени исполнения тестового конвейера — в 5,6 раза по итогам реального внедрения. Разработчики быстрее получают обратную связь об ошибках, значит, их проще и дешевле исправить. Метод работает даже при крайне больших и «разветвленных» кодовых базах, то есть масштабируем на компании уровня Т-Банка. Программное обеспечение доступно в виде открытого исходного кода, что позволяет легко интегрировать решение.

Применимость T-TS не ограничивается конкретным стеком технологий или структурой репозитория, благодаря чему любая крупная организация может внедрить эту систему. Мы уверены, что у этой технологии большое будущее. Метод принят к докладу на одной из ключевых мировых конференций по вопросам развития и поддержки программных систем — ICSME 2025, которая пройдет 7–12 сентября в Окленде (Новая Зеландия).