Neural network based solution for regression testing optimization
Authors: Данилов А.Д. , Мугатина В.М. 
Published: July 2024

Жизненный цикл разработки любого программного обеспечения в обязательном порядке сопровождается активностями по верификации и тестированию продукта. Среди всех процессов, лежащих в основе тестирования ПО, наиболее ресурсозатратным, но вместе с тем обязательным для исполнения, является регрессионное тестирование. Главная задача регрессионного тестирования заключается в проверке, что внесенные в код продукта изменения не повлияют на уже реализованную и протестированную функциональность разрабатываемой системы. Указанная задача определяет необходимость в запуске регрессионных проверок после выпуска каждой новой версии программного обеспечения. Однако в условиях ограниченности ресурсов при регрессионном тестировании из полного набора проверок, как правило, запускаются лишь выборочные тестовые кейсы. Этот факт обуславливает задачу оптимального выбора максимально приоритетных для запуска регрессионных проверок. Решением поставленной задачи может выступать использование системы управления тестированиям, позволяющей определять приоритеты тест-кейсов в зависимости от внесенных в код продукта правок, основанной на нейросетевой модели. Функционирование такой системы возможно благодаря сбору и анализу данных об изменениях в коде из системы контроля версий и дальнейшему использованию этой информации в качестве входных данных для искусственной нейронной сети. Выходными данными в такой модели являются результаты выполнения регрессионных проверок, то есть факт обнаружения ошибки или удостоверения, что продукт работает ожидаемым образом. Таким образом, обучение нейронной сети проходит на основе реальных данных, полученных на основании результатов запуска тестов на этапе разработки программного обеспечения. Обученная нейронная сеть способна приоритизировать тестовые случаи и оптимизировать ресурсы на проведение регрессионного тестирования.

Regression testing is important task of retesting software systems after changes in the code of product to ensure that changes do not influence previously implemented functionality. Regression testing is run after a new version of software has been developed. Usually only limited subset of test cases is executed for a new version of software through restricted resources. This shows the problem of selection the most important regression test cases. To cope with limited resources, different regression testing techniques was developed to reduce the number of test cases to be executed. One of these techniques is test case prioritization based on neural network model. Such mechanism can collect data about code changes from Version Control System and use it as inputs for neural network. The outputs for such neural network model are regression tests execution results. Groups of regression tests can be united by functionality under the test. Neural network model can be trained on real results during the phase of software developing. Trained neural network can detect the most important test cases for execution after each change in product code. Such technique can be used to guide the focus of the testing efforts.