核心概念
코드 인식 프롬프팅 기법을 통해 LLM이 복잡한 소프트웨어 단위에 대해 더 완전한 테스트 케이스를 생성할 수 있다.
摘要
이 논문은 코드 인식 프롬프팅이라는 새로운 접근법을 제안한다. 이 기법은 LLM이 테스트 생성 과정을 여러 단계로 분해하여 수행하도록 하여 더 높은 커버리지의 테스트 케이스를 생성할 수 있게 한다.
구체적으로 다음과 같은 과정으로 진행된다:
- 대상 메서드의 실행 경로와 반환 값을 정적으로 분석하여 근사적인 경로 제약 조건을 수집한다.
- 대상 메서드의 유형 및 종속성 컨텍스트를 수집한다.
- 각 실행 경로에 대한 프롬프트를 구성하여 LLM에 제공한다. 이 프롬프트에는 경로 제약 조건과 예상 반환 동작이 포함된다.
- LLM은 이 프롬프트를 바탕으로 각 실행 경로에 대한 테스트 케이스를 생성한다.
- 이전에 생성된 테스트 케이스를 다음 프롬프트에 포함하여 LLM이 더 완전한 테스트 스위트를 생성하도록 한다.
이 접근법은 기존의 기호 분석 기반 테스트 생성 기법의 한계를 극복한다. 즉, 복잡한 데이터 유형, 외부 종속성, 복잡한 분기 동작 등에 대해 효과적으로 대응할 수 있다.
실험 결과, SymPrompt는 CodeGen2 모델에서 정확한 테스트 생성을 5배 향상시키고 상대적인 커버리지를 26% 향상시켰다. GPT-4에 적용했을 때는 커버리지를 2배 이상 향상시켰다.
統計資料
코드 인식 프롬프팅을 통해 CodeGen2 모델에서 정확한 테스트 생성을 5배 향상시켰다.
코드 인식 프롬프팅을 통해 CodeGen2 모델의 상대적인 커버리지를 26% 향상시켰다.
코드 인식 프롬프팅을 통해 GPT-4 모델의 커버리지를 2배 이상 향상시켰다.
引述
"코드 인식 프롬프팅 기법을 통해 LLM이 복잡한 소프트웨어 단위에 대해 더 완전한 테스트 케이스를 생성할 수 있다."
"SymPrompt는 CodeGen2 모델에서 정확한 테스트 생성을 5배 향상시키고 상대적인 커버리지를 26% 향상시켰다."
"SymPrompt를 GPT-4에 적용했을 때는 커버리지를 2배 이상 향상시켰다."