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.

Ссылки и действия