LLM 기반 테스트 생성 코드 제거로 커버리지 향상

본 논문은 복잡한 메서드에 대한 단위 테스트 자동 생성 시 토큰 제한과 추론 효율성 문제를 해결하기 위해, 정적 분석으로 추출한 컨텍스트 정보를 요약하고, 이미 커버된 코드를 반복적으로 제거하면서 LLM에게 테스트 케이스를 생성하도록 하는 두 단계 프레임워크를 제안한다. 실험 결과, 제안 방법은 기존 LLM 기반 및 탐색 기반 기법보다 높은 라인·분기 커버리지를 달성한다.

저자: WeiZhe Xu, Mengyu Liu, Fanxin Kong

LLM 기반 테스트 생성 코드 제거로 커버리지 향상
본 논문은 대규모 언어 모델(LLM)을 활용한 자동 단위 테스트 생성이 복잡한 메서드에 적용될 때 발생하는 두 가지 핵심 문제, 즉 **토큰 제한**과 **추론 효율성 저하**를 해결하기 위한 새로운 프레임워크를 제안한다. 기존 연구는 작은 코드 조각에서는 LLM이 높은 커버리지를 달성했지만, 복잡도가 높은 메서드(사이클로매틱 복잡도 >10)에서는 성능이 급격히 떨어지는 현상을 보였다. 이러한 한계를 극복하기 위해 저자는 **컨텍스트 정보 검색** 단계와 **반복적 테스트 생성·코드 제거** 단계로 구성된 두 단계 접근법을 설계하였다. 첫 번째 단계에서는 대상 메서드의 내부 의존성(같은 파일 내 함수·변수)과 외부 의존성(다른 모듈·패키지)을 정적 분석(AST)으로 식별한다. 내부 의존성은 그대로 코드 슬라이스에 포함하고, 외부 의존성은 프로젝트 내 정의된 함수·클래스만을 추출한다. 추출된 외부 코드가 방대할 경우 LLM에게 **one‑shot 프롬프트**를 이용해 각 함수의 시그니처와 고수준 로직을 요약하도록 한다. 이렇게 요약된 의존성 정보와 원본 메서드 코드를 결합해 LLM에 전달함으로써, 불필요한 토큰 소모와 노이즈를 최소화한다. 두 번째 단계는 **반복적 테스트 생성 및 코드 제거**이다. 초기 슬라이스와 요약된 의존성을 LLM에 입력해 테스트 케이스를 생성하고, 실행 후 커버리지 리포트를 획득한다. 이미 커버된 라인은 정밀 제어 흐름 그래프(CFG)를 기반으로 **양방향 BFS** 탐색을 수행해 해당 라인에 도달하는 모든 경로를 식별한다. 이 과정에서 필수 라인 집합(preserve)을 결정하고, 나머지 라인은 안전하게 제거한다. 코드 제거 시 if‑else 구조가 비어 있으면 조건을 반전시키는 등 문법적 일관성을 유지한다. 정제된 슬라이스는 다시 LLM에 전달되어 새로운 테스트가 생성되고, 커버되지 않은 라인이 없을 때까지 이 과정을 반복한다. 알고리즘 1은 LLM과의 대화 흐름을 제어하고, 반환값(1,0,-1)으로 성공·진행·종료를 구분한다. 알고리즘 2는 코드 제거 로직을 구체화해, 필요 라인 집합을 정확히 산출한다. 실험은 여러 오픈소스 Python 프로젝트를 대상으로 진행되었으며, 비교 대상은 GPT‑3.5 기반 ChatTester, ChatUniTest, SymPrompt 등 최신 LLM 기반 기법과 Evosuite 같은 탐색 기반 기법이다. 평가 지표는 라인 커버리지, 분기 커버리지, 토큰 사용량, 테스트 생성 시간 등이다. 결과는 제안 방법이 평균 12~18%p 높은 라인 커버리지를 달성하고, 토큰 사용량을 30% 이상 절감했으며, 특히 복잡도 높은 메서드에서 기존 방법이 30% 이하에 머물렀던 반면 70% 이상을 커버했다는 점에서 큰 차별성을 보였다. 논문의 주요 기여는 다음과 같다. (1) 정적 분석과 LLM 요약을 결합한 **컨텍스트 효율화** 기법, (2) **코드 제거 기반 반복 테스트 생성**이라는 새로운 스케일링 전략을 도입해 LLM의 토큰 한계와 추론 효율성을 동시에 개선한 점, (3) 광범위한 실험을 통해 기존 최첨단 방법들을 실질적으로 능가함을 입증한 점이다. 또한, 코드 제거 과정이 자동화되어 인간 개입 없이도 안전하게 수행될 수 있다는 점은 실무 적용 가능성을 크게 높인다. 향후 연구에서는 다른 프로그래밍 언어와 다양한 LLM(예: Claude, Gemini)으로 확장하고, 정적 분석 단계에 데이터 흐름 분석을 추가해 더욱 정교한 의존성 요약을 시도할 여지가 있다.

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기