Тестирование на мутации с GPT и Codellama

Тестирование на мутации с GPT и Codellama

4 июня 2025 г.

Авторы:

(1) Бо Ван, Университет Пекин Цзиотонг, Пекин, Китай (wangbo_cs@bjtu.edu.cn);

(2) Mingda Chen, Пекинский университет Цзиотонга, Пекин, Китай (23120337@bjtu.edu.cn);

(3) Youfang Lin, Пекинский университет Цзиотонг, Пекин, Китай (yflin@bjtu.edu.cn);

(4) Майк Пападакис, Университет Люксембурга, Люксембург (michail.papadakis@uni.lu);

(5) Цзе М. Чжан, Королевский колледж Лондон, Лондон, Великобритания (jie.zhang@kcl.ac.uk).

Аннотация и1 Введение

2 предыстория и связанная с ним работа

3 Учебный дизайн

3.1 Обзор и исследования исследований

3.2 Наборы данных

3.3 генерация мутаций через LLMS

3.4 Метрики оценки

3.5 Настройки эксперимента

4 Результаты оценки

4.1 RQ1: производительность по стоимости и юзабилити

4.2 RQ2: сходство поведения

4.3 RQ3: воздействие различных подсказок

4.4 RQ4: воздействие различных LLMS

4.5 RQ5: основные причины и типы ошибок некомпилируемых мутаций

5 Обсуждение

5.1 Чувствительность к выбранным настройкам эксперимента

5.2 Последствия

5.3 Угрозы достоверности

6 Заключение и ссылки

Тестирование на мутации и генерация мутаций.Тестирование на мутации-это систематический подход к тестированию, который направлен на создание тестовых наборов высокопроизводительности. Он работает путем введения синтаксических модификаций (то есть, мутаций) в исходный код тестовых программ. Наблюдая, можно ли обнаружить эти изменения [17, 27], можно определить слабые стороны их тестовых люксов, то есть мутантов, которые не убиты. Помимо тестирования, анализ мутаций - это инструмент, который можно использовать для поддержки нескольких приложений в области разработки программного обеспечения [24, 25, 41, 48, 63, 67, 79, 81]. Чаще всего мутации используются в качестве заменителей для реальных ошибок [6, 13, 38, 52], для руководства локализацией разломов [50, 60], тестирование приоритетов [68] и восстановление программы [84, 85].

Все эти задачи требуют высокопроизводительных мутаций. Это связано с тем, что это необходимо для составления и выполнения каждой мутации с помощью тестов, что является вычислительно дорогим. Следовательно, генерируя избыточные или некомпилируемые мутации, как это делается в большинстве существующих подходов на основе обучения, увеличивает вычислительные затраты [23, 76, 77, 87]. Кроме того, когда мутации используются в качестве заменителей реальных дефектов, мутации должны быть настолько синтаксически близкими к реальным ошибкам, насколько это возможно, делая мутации более естественными [29, 36]. Более того, при выполнении таких задач, как локализация разломов [50, 60] и восстановление программы [34, 44, 91], поведение мутаций должно соединить с реальными разломами/ошибками, чтобы эти методы были эффективными.

Традиционные подходы к тестированию на мутации генерируют мутации по предварительно определенным правилам преобразования программы (то есть операторам мутаций), которые упоминаются на основе правил. Например, одним из популярных операторов мутации является изменение одного арифметического бинарного оператора с другим (например, 𝑎 + 𝑏 → → 𝑎 - 𝑏). Большинство существующих подходов к тестированию на мутации основаны на правилах, такие как Pit [12], Major [39], Javalanch [66], Proteum [16], Milu [32], Accmut [77], Winmut [76] и т. Д. Затем исследователи предложили использовать методы глубокого обучения для создания мутаций. Например, DeepMution [73] использует методы нейронной перевода машин в последовательность в последовательность, в то время как Leam [70] использует расширение на основе правил, основанное на обучении. Тем не менее, эти подходы страдают от проблем в создании синтаксических правильных мутаций и мутаций с различными формами и часто не могут генерировать синтаксически достоверные мутации. Возможно, наиболее близким к нашей работе является работа Degiovanni et al. кто предложил 𝜇bert [15]. 𝜇bert генерирует мутацию, маскируя кодовые элементы, которые должны быть мутированы, а затем прогнозируя мутацию через Bert [20].

В нескольких недавних исследованиях также изучалось использование LLM для генерации мутаций [14, 71]. Тем не менее, они не были тщательно оценены, поскольку они считают только количество мутаций, которые они вводят, и вычисляют оценки мутаций, достигнутые некоторыми тестовыми люксами. Напротив, мы тщательно оцениваем полезность мутаций, которые мы используем (как с помощью количественного, так и качественного подхода), контрастируют с ключевыми предыдущими базовыми методами и рассматриваем все экспериментальные параметры и проблемы, связанные с использованием LLM, то есть утечки данных, стоимость и добавленную стоимость.

LLMS для кода.Недавно крупные языковые модели (LLMS) продемонстрировали замечательный потенциал в широком диапазоне обработки естественного языка (NLP) [8] и кодирующих задач [22, 78]. Существующие LLM в основном основаны на трансформаторах [74] и обучены крупному корпусу данных, включая тексты и исходные коды. LLMs обучаются инструкциями на естественных языках, то есть подсказкам, которые направляют модели для выполнения целевых задач и имеют решающее значение для производительности. Дизайн подсказок играет решающую роль в получении точных и полезных ответов от этих моделей.

LLM с закрытым исходным кодом-это проприетарные модели, разработанные и поддерживаемые компаниями или организациями, часто предлагая расширенные функции и требующие подписки или платеж за доступ, в то время как LLM с открытым исходным кодом являются свободно доступными моделями, которые позволяют пользователям просматривать и изменять их. Для моделей, используемых в нашем исследовании, GPT-3.5-Turbo и GPT-4-Turbo являются LLMS с закрытым исходным кодом, выпущенные OpenAI [4], в то время как Codellama и Starchat являются открытым исходным кодом. OpenSource LLM обычно настраивается против общего LLM для указанных задач. Например, Codellama [64] получен из Llama [72] путем точной настройки с обширными наборами данных кода, в то время как StarChat построен на StarCoder [45] для повышения разговорных способностей.

Эта статья естьДоступно на Arxivв соответствии с CC по 4.0 Deed (Attribution 4.0 International) лицензия.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE