Skip to main content
QUICK REVIEW

[논문 리뷰] Predicting Code Coverage without Execution

Michele Tufano, Shubham Chandel|arXiv (Cornell University)|2023. 07. 25.
Software Engineering Research인용 수 4
한 줄 요약

이 논문은 대규모 언어 모델(Large Language Models, LLMs)의 코드 실행 이해도를 평가하기 위해 코드 커버리지 예측을 새로운 벤치마크 과제로 도입한다. 실제 코드 커버리지 주석을 포함한 CoverageEval 데이터셋을 HumanEval에서 수집하여 최신 LLMs—GPT-4, GPT-3.5, BARD, Claude—를 평가한다. 결과로, 조건부 프롬프팅을 사용할지라도 GPT-4조차도 정확도가 24.48%에 불과하여 LLMs의 코드 실행 동역학 이해도 향상 여지가 크다는 점을 시사한다.

ABSTRACT

Code coverage is a widely used metric for quantifying the extent to which program elements, such as statements or branches, are executed during testing. Calculating code coverage is resource-intensive, requiring code building and execution with additional overhead for the instrumentation. Furthermore, computing coverage of any snippet of code requires the whole program context. Using Machine Learning to amortize this expensive process could lower the cost of code coverage by requiring only the source code context, and the task of code coverage prediction can be a novel benchmark for judging the ability of models to understand code. We propose a novel benchmark task called Code Coverage Prediction for Large Language Models (LLMs). We formalize this task to evaluate the capability of LLMs in understanding code execution by determining which lines of a method are executed by a given test case and inputs. We curate and release a dataset we call COVERAGEEVAL by executing tests and code from the HumanEval dataset and collecting code coverage information. We report the performance of four state-of-the-art LLMs used for code-related tasks, including OpenAI's GPT-4 and GPT-3.5-Turbo, Google's BARD, and Anthropic's Claude, on the Code Coverage Prediction task. Finally, we argue that code coverage as a metric and pre-training data source are valuable for overall LLM performance on software engineering tasks.

연구 동기 및 목표

  • LLMs의 코드 실행 이해도 평가를 위해 코드 커버리지 예측을 새로운 벤치마크 과제로 체계화한다.
  • 기존 코드 커버리지 측정 방식의 높은 계산 비용과 컨텍스트 의존성 문제를 해결하며, 특히 코드 스니펫이나 부분 프로그램에 대해 적용 가능한 방법을 모색한다.
  • 실행 없이도 주어진 테스트 케이스가 어떤 코드 라인을 실행하는지 LLM이 예측할 수 있는지 평가한다.
  • LLMs가 다양한 입력 조건 하에서 코드 동작을 추론하는 능력을 향상시키기 위해 새로운 사전학습 또는 미세조정 목표를 제공한다.
  • 빌드 비용이 높거나 코드 접근성이 제한되며, IDE에서 실시간 피드백이 필요한 상황에서의 실용적 응용 가능성을 제공한다.

제안 방법

  • HumanEval 벤치마크의 테스트 케이스를 실행하고 인스트루멘테이션을 활용해 실제 코드 커버리지 데이터를 수집함으로써 CoverageEval 데이터셋을 구성한다.
  • 각 메서드-테스트 쌍에 대해 커버리지 레이블(실행됨: ‘>’, 미실행됨: ‘!’, 도달 불가: ‘-’)을 주석 처리하여 구조화된 예측 과제를 생성한다.
  • 입력으로 메서드와 테스트 케이스, 출력으로 커버리지 주석이 추가된 메서드를 제공하는 시퀀스-투-시퀀스 예측 문제로 과제를 정의한다.
  • Zero-shot 및 few-shot 프롬프팅을 사용해 GPT-4, GPT-3.5-Turbo, BARD, Claude 등 4종의 최신 SOTA LLMs를 코드 커버리지 예측 과제에서 평가한다.
  • 정확한 일치 정확도를 주요 평가 지표로 사용하여, 모델이 전체 커버리지 주석을 올바르게 예측한 빈도를 측정한다.
  • 비용이 많이 들거나 코드 접근성이 제한되며, 실시간 단위 테스트가 필요한 등 다양한 응용 사례를 탐색하여 예측 기반 커버리지의 실용적 유용성을 입증한다.

실험 결과

연구 질문

  • RQ1LLMs는 코드를 실행하지 않고도 주어진 테스트 케이스가 어떤 코드 라인을 실행하는지 정확히 예측할 수 있는가?
  • RQ2최신 SOTA LLMs의 성능는 다양한 few-shot 프롬프팅 전략에 따라 어떻게 달라지는가?
  • RQ3LLMs는 다양한 입력 조건과 테스트 환경 하에서 코드의 동적 행동을 어느 정도 이해하는가?
  • RQ4코드 커버리지 예측은 LLMs의 코드 실행에 대한 추론 능력을 향상시키기 위한 의미 있는 사전학습 또는 미세조정 목표가 될 수 있는가?
  • RQ5실제 소프트웨어 엔지니어링 상황에서, 기존 실행 기반 방법에 비해 LLM 기반 코드 커버리지 예측이 어떤 장점을 제공할 수 있는가?

주요 결과

  • GPT-4는 평가된 모델들 중에서 가장 높은 성능를 보였으며, zero-shot 프롬프팅 시 10.46%의 정확도를 기록했고, few-shot 프롬프팅 시에는 24.48%까지 상승했다.
  • 모델 중 어느 것도 높은 정확도를 달성하지 못했으며, GPT-4조차도 메서드-테스트 쌍의 25% 미만에서 정확한 커버리지 예측을 내놓는 것으로 나타나, 코드 실행 이해도가 아직 제한적이라는 점을 시사한다.
  • 모델 간 성능 격차는 현재 LLMs가 제어 흐름과 조건부 실행과 같은 코드 내부 동작을 추론하는 데 여전히 어려움을 겪고 있음을 보여준다.
  • CoverageEval 데이터셋은 LLMs의 코드 실행 이해도 평가를 체계적으로 가능하게 하며, 향후 연구를 위한 새로운 벤치마크를 제공한다.
  • 비용이 많이 드는 빌드, 부분적 코드 전송, 실시간 단위 테스트 등 실행이 불가능하거나 비용이 많이 드는 상황에서 이 과제는 실용적 가치가 있다.
  • 코드 커버리지 예측은 LLMs의 코드 생성 및 테스트 능력을 향상시키기 위한 유의미한 학습 목표로 활용될 수 있다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.