Программирование и разработка программного обеспечения

Microsoft запускает открытого агента для генерации и проверки модульных тестов

Microsoft объявила об открытом агенте code-testing-generator, способном понимать репозиторий проекта, определять тестовый фреймворк, писать модульные тесты, проверять их сборку и запуск. Агент показал показатель выполнения 92,1% во внутреннем тесте из 152 задач против 78,9% у стандартного Copilot при использовании той же модели.

2026-07-31
5 мин. чтения
10 просмотров
فريق تحرير certi.news
Microsoft запускает открытого агента для генерации и проверки модульных тестов

Microsoft объявила о выпуске code-testing-generator — открытого многоязычного агента для генерации модульных тестов. Агент не ограничивается созданием тестов, которые выглядят корректными: сначала он изучает репозиторий проекта, затем определяет код, нуждающийся в тестировании, используемый тестовый фреймворк, место размещения файлов, команды сборки и запуска, после чего проверяет, что тесты обнаруживаются в обычном тестовом процессе репозитория.

Агент доступен в составе расширения dotnet-test в репозитории dotnet/skills. Он изолирует тестируемый код, создавая имитации внешних сервисов и других зависимостей. В его текущую область применения не входят интеграционные тесты, сквозные тесты, браузерные тесты и тесты производительности.

Сначала изучает репозиторий, а затем пишет тесты

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

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

Агент выбирает уровень работы в зависимости от масштаба запроса:

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

Проверяет полезность тестов, а не только их успешное выполнение

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

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

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

Результаты внутреннего тестирования

В последнем внутреннем эталонном тесте агент выполнил 140 из 152 задач, достигнув показателя 92,1%, против 120 задач и показателя 78,9% у стандартного Copilot при использовании той же модели. Microsoft сообщила, что число сбоев снизилось на 63%.

Наибольшие различия проявились в неоднозначных запросах, оставляющих большую часть решений агенту: специализированный агент успешно выполнил 79 из 89 задач против 59 задач у стандартного Copilot, а число сбоев снизилось с 30 до 10. Для подробных запросов результаты были близкими: агент успешно выполнил 61 из 63 задач.

В 15 задачах, требовавших написать тесты для конкретного изменения в коде, агент успешно выполнил все задачи, тогда как стандартный Copilot не выполнил ни одной. В общей совокупности результатов обе системы успешно выполнили 119 задач, специализированный агент один выполнил 21 задачу, стандартный Copilot один выполнил одну задачу, а обе системы не выполнили 11 задач.

Агент сгенерировал 6 963 теста против 7 129 тестов у стандартного Copilot; среднее итоговое покрытие строк составило 72,4% против 72,2%, а среднее покрытие ветвей — 49,8% против 49,1%. Среднее время выполнения задачи также составило 359 секунд для специализированного агента и 380 секунд для стандартного Copilot. Microsoft утверждает, что преимущество связано с надёжностью, а не с генерацией большего числа тестов.

Поддержка нескольких языков и доступность расширения

Прилагаемые инструкции поддерживают .NET, Python, TypeScript, JavaScript, Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell и C++. Тесты показали, что агент изучает правила каждого репозитория, а не применяет шаблоны C# ко всем проектам.

В другом тесте на 44 задачах из набора SWE Atlas агент выполнил 16 задач, достигнув показателя 36,4%, против 12 задач и показателя 27,3% у стандартного Copilot. Сгенерированные тесты также прошли 550 случаев и обнаружили 360 внедрённых ошибок против 493 и 316 соответственно у стандартной системы. Microsoft признаёт, что этот эталонный тест сложнее, а показатели выполнения в нём значительно ниже.

Расширение можно использовать в GitHub Copilot CLI; оно также доступно в Visual Studio Code и VS Code Insiders через поддержку расширений, которая пока находится на стадии предварительного просмотра. Microsoft также работает над поддержкой Visual Studio. Чтобы установить расширение в GitHub Copilot CLI, пользователь добавляет рынок расширений командой /plugin marketplace add dotnet/skills, затем устанавливает его с помощью /plugin install dotnet-test@dotnet-agent-skills, перезапускает CLI и выбирает агента code-testing-generator.

Источник новости
ف
Автор

فريق تحرير certi.news

В той же категории

Вам также может понравиться

Все новости