Описание обновления программы помогло тесту найти ошибки в правках ИИ
Препринт, ещё не рецензирован · ранние данные
Кратко
Авторы изучили 73 задачи, связанные с 60 изменениями в программных системах. Обычные тесты пропустили 41% ошибочных исправлений, а дополнительная проверка изменения из описания обновления — 6,5%. Генератор тестов на основе мощной модели ИИ пропустил 7% ошибочных исправлений, а два других генератора не прошли заданные проверки.
Зачем это знать?
Проверка правок кода после обновления программ может стать надёжнее, если учитывать, что именно изменилось. Даже усиленные тесты пропускали часть ошибок в особенно трудных случаях.
Разбор
Авторы проверили варианты правок в настоящих программных средах. Они сравнили обычные входные данные с данными, выбранными по описанию обновления, а также с данными, которые предложил ИИ, не видевший проверяемую программу.
Особенно трудные ошибочные варианты всё же проходили проверку. Авторы добавили 233 таких варианта: на обычных входных данных они давали тот же результат, что и старая программа. Проверка по описанию обновления пропустила 0.168 из 1 таких ошибочных вариантов, а проверка с данными от мощной модели ИИ — 0.153 из 1.
Проверка помогала и при сравнении попыток исправить программу. В одном примере число выпущенных ошибочных правок на попытку снизилось с 0.233 до 0.057; при этом число успешно выполненных исправлений не уменьшилось.
Ключевые цифры
Можно ли доверять
Авторы проверили варианты правок на 73 задачах, связанных с 60 изменениями в программах; результаты относятся к этим проверкам, а не ко всем возможным обновлениям. Отдельная проверка с помощью ИИ сочла 34 условия строже самих требований. Исключение спорных проверок не изменило ни одного решения, но разногласия о классификации остались открыты.
- Это препринт, а не прошедшая рецензирование статья.
- Даже усиленные тесты пропускали часть заведомо ошибочных программ: 0,168 и 0,153 на специально созданном наборе трудных случаев.
- Данные охватывают 73 задачи и 60 изменений в CPython, Node.js и SQLite; результаты двух локальных генераторов оказались отрицательными.
Пересказано ИИ по научной статье. Это научпоп, а не совет врача. Как это устроено