Ученые факультета вычислительной математики и кибернетики МГУ имени М.В. Ломоносова предложили подход к улучшению структуры юнит-тестов, автоматически создаваемых большими языковыми моделями. Первые эксперименты показали работоспособность предложенного подхода и возможность его применения в системах генерации юнит-тестов для программного кода.
При разработке программного обеспечения важную роль играют небольшие проверки, позволяющие убедиться в корректности работы отдельных частей кода. Однако автоматически сгенерированные тесты нередко содержат дефекты дизайна, из-за которых их сложнее использовать и анализировать.
Новый подход позволяет сделать качество создаваемого ИИ-кода более управляемым: модель получает не общую оценку результата, а конкретный сигнал о том, какие элементы его структуры следует улучшить. Если статический анализатор обнаруживает дефект дизайна, то модель получает штраф, а за чистый тест — вознаграждение, благодаря чему в процессе обучения она учится избегать типичных проблем. В будущем тот же принцип можно применять и к другим критериям качества: обучать ИИ не просто создавать работающий результат, а последовательно делать его более понятным, структурированным и удобным для человека.
«Мы использовали обучение с подкреплением, чтобы научить модель избегать типичных дефектов дизайна тестов и тем самым улучшить качество автоматически создаваемых решений», — отметил доцент кафедры алгоритмических языков факультета ВМК МГУ Игорь Головин.
Для обучения был собран датасет на основе реальных проектов на языке Python, включающий методы программ и соответствующие им юнит-тесты. Дополнительно для каждого набора тестов была получена информация о наличии дефектов дизайна с помощью инструментов статического анализа.
Результаты работы были представлены на научной конференции «Ломоносовские чтения».
Информация предоставлена пресс-службой МГУ
Источник фото: rawpixel - ru.123rf.com



















