Navigating the Labyrinth: Path-Sensitive Unit Test Generation with Large Language Models
2509.23812v1
cs.SE, cs.AI
2025-10-01
Авторы:
Dianshu Liao, Xin Yin, Shidong Pan, Chao Ni, Zhenchang Xing, Xiaoyu Sun
Резюме на русском
## Контекст
Unit testing является ключевым элементом гарантии качества программного обеспечения, однако написание и поддержание тестов часто оказывается времязатратным и подверженным ошибкам. Обычные heuristic-based и LLM-based подходы сталкиваются с проблемами недостаточного покрытия, особенно для глубоких или сложных логических путей. Это приводит к ограниченной эффективности в обнаружении багов. В данной работе предлагается новый подход, JUnitGenie, который использует комбинацию знаний о коде и семантических способностей LLMs, чтобы улучшить покрытие с помощью контекстно-акцентрированного тестирования.
## Метод
JunitGenie использует статический анализ для извлечения кода и структуры логики из Java-проектов. Эти данные преобразуются в специальные продвинутые промпты, созданные с помощью LLMs, которые учитывают контекст и глубину логики. Для каждого метода создается индивидуальный тест с помощью LLMs, который акцентируется на покрытии различных путей выполнения. Это позволяет повысить качество теста за счет создания более глубоких и точных тестов, которые могут обнаруживать реальные баги.
## Результаты
В ходе экспериментов на 2,258 тестовых методах из 10 Java-проектов показано, что JUnitGenie достигает значительного повышения покрытия в сравнении с традиционными heuristic-based и LLM-based подходами. Обычно, покрытие было увеличено на 29.60% для линий кода и 31.00% для ветвей выполнения. Эти тесты, созданные контекстно-акцентрированным подходом, также удалось обнаружить реальные баги, которые были позже подтверждены и исправлены разработчиками.
## Значимость
JUnitGenie может быть применен в различных областях, где необходимо повысить качество программного обеспечения, включая модульное тестирование, автоматизацию тестирования и поддержание качества кода. Он предоставляет преимущества в формировании глубоких тестов, которые обнаруживают больше реальных ошибок. Это может дать потенциальное влияние на улучшение качества тестирования в различных проектах, уменьшая время, потраченное на модульное тестирование и увеличивая эффективность разработки.
## Выводы
JUnitGenie позволяет повысить покрытие тестов, особенно для сложных и глубоких логических путей, благодаря интеллектуальному подходу, который использует контекст LLMs. Это улучшает качество программного обеспечения и может использоваться в будущих исследованиях, направленных на улучшение техник модульного тестирования и исправление багов.
Abstract
Unit testing is essential for software quality assurance, yet writing and
maintaining tests remains time-consuming and error-prone. To address this
challenge, researchers have proposed various techniques for automating unit
test generation, including traditional heuristic-based methods and more recent
approaches that leverage large language models (LLMs). However, these existing
approaches are inherently path-insensitive because they rely on fixed
heuristics or limited contextual information and fail to reason about deep
control-flow structures. As a result, they often struggle to achieve adequate
coverage, particularly for deep or complex execution paths. In this work, we
present a path-sensitive framework, JUnitGenie, to fill this gap by combining
code knowledge with the semantic capabilities of LLMs in guiding context-aware
unit test generation. After extracting code knowledge from Java projects,
JUnitGenie distills this knowledge into structured prompts to guide the
generation of high-coverage unit tests. We evaluate JUnitGenie on 2,258 complex
focal methods from ten real-world Java projects. The results show that
JUnitGenie generates valid tests and improves branch and line coverage by
29.60% and 31.00% on average over both heuristic and LLM-based baselines. We
further demonstrate that the generated test cases can uncover real-world bugs,
which were later confirmed and fixed by developers.
Ссылки и действия
Дополнительные ресурсы: