Автоматически сгенерированные тесты для программного кода часто содержат дефекты дизайна, которые затрудняют их анализ и использование, что снижает эффективность процесса разработки. Учёные факультета вычислительной математики и кибернетики МГУ предложили подход к улучшению структуры юнит-тестов, создаваемых большими языковыми моделями, с использованием обучения с подкреплением. Первые эксперименты подтвердили работоспособность метода и возможность его применения в системах генерации тестов. «Мы использовали обучение с подкреплением, чтобы научить модель избегать типичных дефектов дизайна тестов и тем самым улучшить качество автоматически создаваемых решений», — отметил доцент кафедры алгоритмических языков факультета ВМК МГУ Игорь Головин.
Как сообщается в материалах научной конференции «Ломоносовские чтения», подход позволяет сделать качество создаваемого ИИ-кода более управляемым: модель получает не общую оценку результата, а конкретный сигнал о том, какие элементы структуры теста следует улучшить. Если статический анализатор обнаруживает дефект дизайна, модель получает штраф, а за чистый тест — вознаграждение. Благодаря этому в процессе обучения она учится избегать типичных проблем.
Почему юнит-тесты, сгенерированные ИИ, требуют доработки?
При разработке программного обеспечения важную роль играют небольшие проверки (юнит-тесты), позволяющие убедиться в корректности работы отдельных частей кода. Однако автоматически сгенерированные тесты нередко содержат дефекты дизайна: избыточные проверки, дублирование, запутанную логику и другие проблемы. Это делает их сложными для анализа и поддержки. Как пояснили учёные, ключевая проблема в том, что модели обычно обучаются на общем результате, а не на качестве структуры тестов.
Как работает новый подход, предложенный учёными МГУ?
Исследователи применили обучение с подкреплением, чтобы научить модель избегать типичных дефектов. Для обучения был собран датасет на основе реальных проектов на языке Python, включающий методы программ и соответствующие им юнит-тесты. Для каждого набора тестов с помощью инструментов статического анализа была получена информация о наличии дефектов дизайна. В процессе обучения модель получает штраф за каждый обнаруженный дефект и вознаграждение за чистый тест. Это позволяет ей последовательно улучшать структуру генерируемых тестов.
Каковы результаты экспериментов и перспективы метода?
Первые эксперименты показали работоспособность предложенного подхода и возможность его применения в системах генерации юнит-тестов для программного кода. В будущем тот же принцип можно применять и к другим критериям качества: обучать ИИ не просто создавать работающий результат, а последовательно делать его более понятным, структурированным и удобным для человека. Результаты работы были представлены на научной конференции «Ломоносовские чтения».
Коротко: главное об исследовании МГУ
-
Какая проблема решается? Автоматически сгенерированные тесты часто имеют дефекты дизайна, что затрудняет их использование.
-
Что предложили учёные МГУ? Использовать обучение с подкреплением, чтобы модель училась избегать типичных ошибок в структуре тестов.
-
Как работает механизм? Модель получает штраф за дефект и вознаграждение за чистый тест, что помогает улучшать качество.
-
На каком языке программирования проводились эксперименты? На языке Python с использованием реальных проектов.
-
Каковы перспективы метода? Его можно адаптировать для улучшения других критериев качества ИИ-кода.
Резюме
-
Учёные МГУ предложили подход к улучшению качества юнит-тестов, создаваемых большими языковыми моделями, с помощью обучения с подкреплением.
-
Модель учится избегать дефектов дизайна, получая штраф за ошибки и вознаграждение за чистый код.
-
Эксперименты на реальных проектах Python подтвердили работоспособность метода.
-
В будущем подход можно применять для улучшения других критериев качества автоматически генерируемого кода.
-
Результаты представлены на конференции «Ломоносовские чтения».
Материал подготовлен изданием «Техносуверен» (technosuveren.ru).
Дата публикации: 3 сентября 2026 года.





















