Российские исследователи научились ускорять тестирование программ почти в шесть раз
На международной конференции ICSME 2025 по вопросам развития и поддержки программных систем, которая проходит с 7 по 12 сентября в Окленде в Новой Зеландии, представлена новая разработка российских IT-специалистов, которая позволяет сократить время тестирования новых программ в 5,6 раза без потери качества и не требует сложных вычислений.
Метод для автоматизации тестирования и контроля качества программных продуктов Targeted Test Selection (T-TS) был разработан исследователями R&D-центра Т-Технологий во Владивостоке. Он позволяет запускать лишь часть тестов, но при этом находить почти все потенциальные ошибки в коде.
Как объяснили разработчики, в крупных компаниях, постоянно выпускающих обновления для программного обеспечения, тестирование каждой новой версии становится все более длительным и требует большого объема ресурсов. На проверку уходят десятки часов, тратится мощность сотен серверов.
Новый метод позволяет запускать лишь около 15 процентов от полного набора тестов, но при этом он находит более 95 процентов возможных ошибок, вызванных изменениями, которые вносятся в программу. Это значит, что разработчики получают обратную связь о проблемах гораздо быстрее, а исправление "багов", или ошибок, обходится значительно дешевле.
Разработка, в частности, уже была протестирована на программной инфраструктуре Т-Банка, где ежедневно вносятся десятки тысяч изменений в коде и проводятся тысячи тестов.
Авторы исследования сравнивают обычное автоматическое тестирование с работой станции техобслуживания, где проверяется одна деталь автомобиля за другой. Такой подход гарантирует безопасность, но его эффективность значительно снижается из-за больших затрат времени и денег. В случае с использованием метода автомеханики будут заранее знать, какие детали может затронуть ремонт, и начнут проверку именно с них.
В мире уже предложены способы ускорить процесс проведения тестов, но чаще всего они завязаны на так называемых "картах покрытия кода". Они показывают, какой процент исходного кода выполняется во время запуска тестирования, и помогают понять, насколько хорошо проверяются различные части кода. Чтобы такие карты покрытия оставались актуальными, нужны отдельные ресурсы и время на их обновление при поступлении малейших изменений.
Также мировые разработчики пытаются ускорить процесс проведения тестов с помощью машинного обучения, но все же большинство решений опирается на традиционные методы, такие как карты покрытия. Новый метод, напротив, позволяет отказаться от дорогостоящих сопоставлений кода, а всю необходимую информацию взять из истории самого хранилища данных, или репозитория.
Система T-TS не нуждается в картах покрытия кода и использует статистику прошлых изменений. Она самостоятельно анализирует, кто и какие именно файлы изменил в коде, сколько раз это происходило и как часто эти изменения приводили к ошибкам. Для оценки изменений используется принцип "мешка слов" (bag-of-words), широко применяемый в поисковых системах. Он представляет собой текст в виде набора ("мешка") отдельных слов и не учитывает порядок их следования. Важно только, какие это слова и сколько раз они встречаются. В методе T-TS каждой единицей в "мешке" становится конкретный файл или модуль программы. Кроме этого, система отдельно учитывает ближайшие к тестам файлы, еще больше адаптируясь к вносимым изменениям.
По подобному принципу работает фильтрация электронной почты. Если письма с определенного адреса часто оказывались спамом, то почтовая система проверит их в первую очередь, не тратя время на просмотр всей переписки. То же происходит и с тестами: система сама прогнозирует, какие из них с наибольшей вероятностью обнаружат ошибки при новых изменениях, опираясь на опыт прошлых сбоев.
Результаты своей работы авторы исследования опубликовали в открытом доступе. Они отмечают, что метод совместим с любым языком программирования и не требует уникальной настройки под каждый проект. Его можно интегрировать в инфраструктуру любой компании, работающей по принципу CI/CD - непрерывной автоматизированной разработки и обновления программного обеспечения, где критично важна скорость выпуска новых релизов.
На практике внедрение нового метода позволяет компаниям значительно сократить время, которое требуется на исполнение тестового конвейера. Разработчики быстрее получают сведения об ошибках, а значит, их проще и дешевле исправить. Метод работает даже при очень больших и разветвленных кодовых базах данных. К примеру, его могут масштабировать и внедрять крупные финтех-компании. Поскольку он доступен в виде открытого исходного кода, его можно легко интегрировать в бизнес и создавать свои ИИ-продукты. Разработчикам предоставлена возможность настройки баланса между скоростью и полнотой контроля качества. Это особенно актуально при необходимости быстрого выпуска обновлений программного обеспечения.