The Prompt Alchemist: Automated LLM-Tailored Prompt Optimization for Test Case Generation
Gao, Wang, Gao et al.
Test cases are essential for validating the reliability and quality of software applications. Recent studies have demonstrated the capability of Large Language Models (LLMs) to generate useful test cases for given source code. However, the existing work primarily relies on human-written plain prompts, which often leads to suboptimal results since the performance of LLMs can be highly influenced by the prompts. Moreover, these approaches use the same prompt for all LLMs, overlooking the fact that different LLMs might be best suited to different prompts. Given the wide variety of possible prompt formulations, automatically discovering the optimal prompt for each LLM presents a significant challenge. Although there are methods on automated prompt optimization in the natural language processing field, they are hard to produce effective prompts for the test case generation task. First, the methods iteratively optimize prompts by simply combining and mutating existing ones without proper guidance, resulting in prompts that lack diversity and tend to repeat the same errors in the generated test cases. Second, the prompts are generally lack of domain contextual knowledge, limiting LLMs' performance in the task.
academic
Алхимик подсказок: Автоматизированная оптимизация подсказок, адаптированных к LLM, для генерации тестовых случаев
Тестовые случаи имеют решающее значение для проверки надежности и качества программных приложений. Недавние исследования показали, что большие языковые модели (LLM) обладают способностью генерировать полезные тестовые случаи для заданного исходного кода. Однако существующие работы в основном полагаются на простые подсказки, написанные вручную, что часто приводит к неоптимальным результатам, поскольку производительность LLM в высокой степени зависит от качества подсказки. Кроме того, эти методы используют одинаковые подсказки для всех LLM, игнорируя тот факт, что разные LLM могут лучше всего работать с разными подсказками. В данной статье предлагается метод MAPS, который реализует автоматизированную оптимизацию подсказок для различных LLM посредством трех основных модулей: генерация подсказок, ориентированная на разнообразие, индукция правил, управляемая ошибками, и извлечение знаний контекста предметной области.
Генерация тестовых случаев является ключевой задачей в инженерии программного обеспечения. Традиционные методы, такие как Evosuite и Randoop, полагаются на поисковые и ограничивающие технологии, тогда как методы на основе LLM, хотя и показывают потенциал, имеют следующие проблемы:
Зависимость от простых подсказок, написанных вручную, приводит к неоптимальной производительности
Использование одинаковых подсказок для всех LLM игнорирует различия между ними
Отсутствие специализированной оптимизации для задачи генерации тестовых случаев
Авторы выявили три основные проблемы существующих методов автоматической оптимизации подсказок (APO) при применении к задаче генерации тестовых случаев:
Низкое разнообразие: Генерируемые подсказки характеризуются низким разнообразием и легко попадают в локальный оптимум
Повторяющиеся ошибки: Оптимизированные подсказки по-прежнему производят те же ошибки, что и исходные подсказки
Отсутствие знаний предметной области: Недостаток необходимой информации контекста уровня проекта, такой как отношения наследования и информация о вызовах классов
Первое исследование: По утверждению авторов, это первое исследование, специально посвященное оптимизации подсказок, адаптированных к LLM, для задачи генерации тестовых случаев
Инновационный метод: Предложен метод MAPS, интегрирующий генерацию подсказок, ориентированную на разнообразие, индукцию правил, управляемую ошибками, и извлечение знаний контекста предметной области
Значительное улучшение: Эксперименты на трех популярных LLM показывают, что MAPS улучшает покрытие строк на 6,19% и покрытие ветвей на 5,03% в среднем по сравнению с самым сильным методом-базовым
Адаптация к LLM: Доказана эффективность генерации адаптированных подсказок для различных LLM
Учитывая черный ящик модели M, небольшой набор разработки Ddev, набор тестов Dtest и функцию оценки s(·), APO направлена на обнаружение оптимизированной подсказки p из пространства естественного языка на основе Ddev, которая максимизирует производительность M на наборе тестов Dtest.
Этот модуль создает разнообразные подсказки путем изучения различных путей модификации:
Алгоритм 2: УЛУЧШЕНИЕ_ПОДСКАЗКИ
1. Выбрать K подсказок с лучшей производительностью
2. Сгенерировать N различных методов модификации
3. Сгенерировать новые подсказки на основе каждого метода модификации
4. Объединить выбранные подсказки и вновь сгенерированные подсказки
Случай 1 - Llama-3.1: Благодаря второму выведенному правилу модель правильно генерирует тестовые случаи с обработкой исключений
Случай 2 - ChatGPT: Благодаря знаниям контекста между файлами модель может правильно инициализировать абстрактные классы
MAPS значительно превосходит существующие методы оптимизации подсказок на всех LLM
Различные LLM действительно требуют адаптированных подсказок
Все три основных модуля вносят важный вклад в улучшение производительности, при этом извлечение знаний контекста предметной области вносит наибольший вклад
Статья цитирует 48 связанных работ, охватывающих важные работы в нескольких областях, включая тестирование программного обеспечения, инженерию подсказок и большие языковые модели, обеспечивая прочную теоретическую основу для исследования.
Общая оценка: Это высококачественная исследовательская работа в области инженерии программного обеспечения, имеющая важное теоретическое и практическое значение в области генерации тестовых случаев LLM. Метод хорошо спроектирован, экспериментальная оценка полна, результаты убедительны. Хотя существуют некоторые ограничения, общий вклад значителен и обеспечивает важный импульс для развития этой области.