Echo: Graph-Enhanced Retrieval and Execution Feedback for Issue Reproduction Test Generation

이 논문은 코드 그래프 기반의 정교한 컨텍스트 검색, 자동 실행 피드백, 그리고 패치 생성을 통해 버그 재현 테스트를 단일 생성으로 최적화하고 SWT-Bench Verified 에서 66.28% 의 성공률로 새로운 최첨단 성능을 달성한 'Echo' 에이전트를 제안합니다.

Zhiwei Fei, Yue Pan, Federica Sarro, Jidong Ge, Marc Liu, Vincent Ng, He Ye

게시일 Tue, 10 Ma
📖 3 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

에코 (Echo): 버그를 찾아내는 '수사관'과 '검증관' 이야기

이 논문은 소프트웨어 개발자들이 가장 골치 아파하는 문제 중 하나인 "이 버그가 정말로 존재하는 걸까? 그리고 어떻게 다시 만들어낼 수 있을까?" 라는 질문에 대한 획기적인 해결책을 제시합니다. 바로 '에코 (Echo)' 라는 인공지능 에이전트입니다.

이 복잡한 기술 내용을 일상적인 비유로 쉽게 설명해 드릴게요.


1. 문제 상황: "내 컴퓨터가 왜 이렇게 작동하지?"

소프트웨어를 쓰다 보면 가끔 "이 기능은 원래 이렇게 작동해야 하는데, 이상하게 작동해요!"라는 사용자 보고 (버그 리포트) 가 들어옵니다. 하지만 이 보고서는 보통 매우 모호합니다.

  • "화면이 깨져요." (어떤 화면? 언제? 왜?)
  • "로그가 안 뜬다." (어떤 로그?)

개발자는 이 모호한 보고를 바탕으로 문제가 생겼는지, 어떤 코드가 잘못되었는지 찾아내야 합니다. 그리고 가장 중요한 것은 "이 버그를 다시 재현 (Reproduce) 하는 테스트 코드" 를 작성하는 것입니다. 즉, "이 코드를 실행하면 반드시 오류가 나야 한다"는 것을 증명하는 시나리오를 만드는 건데, 이는 마치 미스터리 사건을 재연하는 것처럼 매우 어렵고 시간이 많이 걸립니다.

2. 에코 (Echo) 의 등장: 사건을 해결하는 3 인조 수사팀

에코는 이 어려운 작업을 대신해 주는 AI 에이전트입니다. 기존의 도구들은 단순히 "코드 검색해서 테스트 만들어보기" 수준이었다면, 에코는 세 가지 강력한 무기를 가지고 있습니다.

🔍 무기 1: '초능력 지도' (그래프 기반 검색)

기존의 AI 는 방대한 코드 도서관에서 키워드만 검색해서 관련 문서를 찾습니다. 하지만 에코는 '코드 지도 (Code Graph)' 라는 초능력을 가졌습니다.

  • 비유: 일반적인 검색은 책장 이름만 보고 책을 고르는 거라면, 에코는 책과 책 사이의 연결고리 (함수 호출, 상속 관계 등) 까지 파악합니다.
  • 효과: 버그가 발생한 핵심 부분 (초점 코드) 과 그와 관련된 과거의 테스트 사례를 정확히 찾아냅니다. "이 함수가 저 함수를 부르고, 그 함수가 또 저기서 쓰였으니, 여기가 문제일 거야!"라고 추리하는 거죠.

🛠️ 무기 2: '자동 실행 로봇' (자율 실행 및 피드백)

기존 도구들은 테스트 코드를 만들어도 "이게 실행될지, 환경 설정이 맞을지" 모르고 끝났습니다. 에코는 직접 실행해 봅니다.

  • 비유: 요리사가 레시피 (테스트 코드) 를 적어주는 걸 넘어, 직접 부엌에 들어가 재료를 구하고 (환경 설정), 요리를 해보고 (실행), "아, 소금이 부족했네!"라고 실제 결과를 보고 피드백을 받습니다.
  • 효과: 에코는 프로젝트마다 다른 실행 명령어 (pytest, unittest 등) 를 스스로 파악해서 테스트를 실행하고, 오류가 나면 그 로그를 분석해 코드를 수정합니다.

🧪 무기 3: '시간 여행자' (패치 검증)

가장 혁신적인 부분입니다. 에코는 버그를 고친 '수정된 버전 (패치)' 을 미리 만들어냅니다.

  • 비유: 에코는 "이 테스트 코드가 진짜 버그를 잡은 걸까?"를 확인하기 위해 두 가지 세계를 비교합니다.
    1. 원래 세계 (버그 있음): 테스트가 실패해야 합니다. (버그 재현 성공!)
    2. 수정된 세계 (버그 없음): 테스트가 통과해야 합니다. (버그 고침 확인!)
  • 효과: 만약 테스트가 원래 세계에서도 통과하거나, 수정된 세계에서도 실패한다면, 그 테스트는 엉뚱한 것을 테스트하고 있는 것입니다. 에코는 이 '실패 - 통과 (Fail-to-Pass)' 기준을 자동으로 확인하고, 조건에 맞지 않으면 코드를 다시 고쳐서 다시 실행합니다.

3. 에코의 성과: 왜 이것이 특별한가?

에코는 이 모든 과정을 한 번에 하나의 테스트에 집중해서 수행합니다.

  • 기존 방식: 100 개의 테스트를 만들어서 그중 하나만 골라보는 식 (비효율적, 비용 큼).
  • 에코 방식: 최고의 테스트 하나를 만들어내기 위해 끊임없이 다듬고 검증합니다.

실험 결과 (SWT-Bench 라는 유명한 테스트 기준에서), 에코는 66.28% 의 성공률을 보이며 기존 모든 오픈소스 도구들을 제치고 최고 (SOTA) 자리에 올랐습니다. 특히, 다른 도구들이 해결하지 못했던 어려운 사건들도 에코가 해결해냈습니다.

4. 요약: 에코가 우리에게 주는 메시지

에코는 단순히 코드를 짜주는 도구가 아닙니다.

  1. 정확한 정보 수집: 초능력 지도로 정확한 단서를 찾습니다.
  2. 실전 훈련: 직접 실행해보고 실패하면 다시 배웁니다.
  3. 철저한 검증: 버그가 고쳐졌을 때 다시 작동하는지 확인합니다.

이처럼 에코는 개발자들이 "버그를 재현하는" 가장 힘들고 지루한 작업을 대신해 주어, 소프트웨어의 품질을 높이고 개발 속도를 빠르게 만들어주는 최고의 파트너가 되었습니다.

한 줄 요약: 에코는 "버그가 왜 생겼는지"를 찾기 위해 코드의 지도를 보고, 직접 실행해 보고, 수정된 버전과 비교하며 가장 정확한 테스트를 만들어내는 AI 수사관입니다.