← 최신 논문
💻 computer science

Heterogeneous Prompting and Execution Feedback for SWE Issue Test Generation and Selection

이 논문은 이질적 프롬프팅과 실행 피드백을 활용하여 재현 테스트를 자동으로 생성함으로써 소프트웨어 엔지니어링 이슈에서의 누락되거나 잘못된 코드 문제를 극복하는 새로운 테스트 생성기인 e-Otter++를 소개하며, TDD-Bench Verified 벤치마크에서 63%의 최첨단 fail-to-pass 비율을 달성했습니다.

원저자: Toufique Ahmed, Jatin Ganhotra, Avraham Shinnar, Martin Hirzel

게시일 2026-01-26
📖 4 분 읽기☕ 가벼운 읽기

원저자: Toufique Ahmed, Jatin Ganhotra, Avraham Shinnar, Martin Hirzel

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

당신은 거대하고 무질서한 도서관(소프트웨어 코드)에서 미스터리를 풀려는 탐정이라고 상상해 보십시오. 한 이용자(개발자)가 당신에게 찾아와 이렇게 말합니다. "이 책에 뭔가 문제가 있는데, 정확히 무엇인지 설명할 수는 없어요. 그리고 이 실수가 발생하는 구체적인 예시도 가지고 있지 않습니다."

소프트웨어 세계에서 이것을 **SWE 이슈(SWE Issue)**라고 부릅니다. 보통 버그를 고치려면 "재현 테스트(reproduction test)", 즉 "만약 X를 하면 라이브러리가 충돌해야 한다"라고 명시하는 구체적인 스크립트가 필요합니다. 이것이 버그가 존재한다는 것을 증명해 줍니다. 하지만 종종 이러한 스크립트는 아직 존재하지 않습니다.

이 논문은 **e-Otter++**라는 새로운 탐정 도구를 소개합니다. 이 도구의 역할은 실제 수정 사항(fix)이 작성되기도 전에, 단지 문제에 대한 무질서한 설명만을 읽고서 그 "충돌 스크립트(테스트)"를 자동으로 작성하는 것입니다.

e-Otter++가 어떻게 작동하는지 쉬운 비유를 통해 설명하겠습니다.

1. 문제점: "눈먼" 탐정

보통 똑똑한 AI(대규모 언어 모델)에게 테스트를 작성하라고 요청하면, AI는 추측을 시도합니다. 만약 한 번 물어본다면 틀릴 수도 있습니다. 하지만 똑같은 지시사항으로 10번을 물어본다면, AI는 그저 약간씩 다른 버전의 동일한 잘못된 추측을 내놓을 뿐일 수도 있습니다. 이는 마치 친구에게 영화를 딱 한 번 봤다고 가정하고 묘사해 달라고 부탁하는 것과 같습니다. 10번을 물어봐도 그 친구는 똑같은 실수를 반복할 것입니다.

2. 첫 번째 기술: "이질적 프롬프팅(Heterogeneous Prompting)" (코스튬 파티)

더 나은 추측을 얻기 위해, e-Otter++는 단순히 AI에게 똑같은 질문을 10번 던지는 것이 아닙니다. 대신, AI에게 질문하는 방식을 바꿉니다. 마치 AI에게 다양한 코스튬을 입히거나 다양한 관점을 부여하는 것과 같습니다.

  • "마스크(Masks)": AI가 퍼즐을 보고 있다고 상상해 보십시오. 때때로 e-Otter++는 퍼즐의 일부(코드 컨텍스트)를 가려서 AI가 더 적은 정보만을 바탕으로 추측하게 만듭니다. 또 다른 때는 특정 조각들만 보여줍니다. 이는 AI가 문제를 다른 방식으로 바라보도록 강제합니다.
  • "모프(Morphs)": 버그 리포트가 혼란스러운 전문 용어로 작성되어 있다고 상상해 보십시오. e-Otter++는 AI에게 리포트를 다양한 스타일로 다시 쓰도록 요청합니다:
    • 표준화 도구(The Standardizer): 무질서한 메모를 공식적이고 구조화된 리포트로 변환합니다.
    • 단순화 도구(The Simplifier): 혼란스러운 기술적 전문 용어를 제거하여 이해하기 쉽게 만듭니다.
    • 제거 도구(The Dropper): 오해를 불러일으킬 수 있는 특정 코드 스니펫(예: 라이브러리에 실제로 존재하지 않는 도구를 사용하도록 유도하는 코드)을 제거합니다.
    • 사전 사고 도구(The Pre-Thinker): AI에게 먼저 해결책을 추측하게 한 다음, 그 추측을 사용하여 테스트를 작성하도록 합니다.

이러한 "마스크"와 "모프"를 혼합함으로써, e-Otter++는 매우 다양하고 풍부한 잠재적 테스트 풀을 생성합니다. 이는 10명의 서로 다른 사람에게 범죄 현장을 묘사해 달라고 요청하되, 각자에게 서로 다른 단서를 주고 서로 다른 방식으로 말하게 하는 것과 같습니다. 이를 통해 적어도 한 명은 정답을 맞힐 확률을 높입니다.

3. 두 번째 기술: "실행 피드백(Execution Feedback)" (시범 실행)

AI가 테스트를 생성하면, e-Otter++는 그것을 그냥 믿지 않습니다. 생성된 테스트를 기존의 코드(버그가 있는 버전)에서 실행합니다.

  • 목표: 테스트는 반드시 실패해야 합니다. 하지만 반드시 올바른 이유로 실패해야 합니다.
  • 문제점: 때때로 테스트는 실제 버그 때문이 아니라 사소한 실수(예: 오타) 때문에 실패할 수 있습니다.
  • 해결책: e-Otter++에는 이 실패를 분석하는 "비평가(Critic, 또 다른 AI)"가 있습니다. 만약 테스트가 잘못된 이유로 실패했다면, 비평가는 "그것은 버그가 아닙니다. 여기 틀린 특정 라인이 있고, 당신이 살펴봐야 할 추가 코드가 여기 있습니다"라고 말합니다. 그러면 시스템은 이 새로운 정보를 바탕으로 테스트를 다시 작성합니다. 이 루프는 테스트가 버그 설명과 정확히 일치하게 실패할 때까지 계속됩니다.

4. 세 번째 기술: "대리 패치(Surrogate Patch)" (가짜 수정안)

가장 어려운 부분은 이것입니다: 어떤 테스트가 좋은 테스트인지 알기 위해서는, 그 테스트가 새로운 코드(수정본)에서 통과되어야 합니다. 하지만 수정본은 아직 존재하지 않습니다! 그렇다면 어떻게 최고의 테스트를 고를 수 있을까요?

e-Otter++는 영리한 우회 방법을 사용합니다:

  1. e-Otter++는 다른 AI 시스템(Agentless)에게 일련의 가짜 수정안(대리 패치)을 생성하도록 요청합니다. 이것들은 완벽하지는 않지만, 근접한 형태입니다.
  2. 생성된 모든 후보 테스트를 이 가짜 수정안들에 대해 실행합니다.
  3. 만약 어떤 테스트가 가짜 수정안에서 통과된다면, 그것은 좋은 테스트일 가능성이 높습니다.
  4. 마지막으로, 코드의 가장 중요한 부분을 가장 많이 커버하는 테스트를 기준으로 단 하나의 최고의 테스트를 선정합니다.

결과: 거대한 도약

이 논문은 두 가지 주요 벤치마크(TDD-Bench 및 SWT-bench)를 통해 이 시스템을 테스트했습니다.

  • 이전 최고 수준: 기존 시스템들은 작동하는 테스트를 약 37%에서 38% 정도의 확률로 생성할 수 있었습니다.
  • e-Otter++: 이러한 새로운 기술들(질문 방식의 변화와 가짜 수정안을 통한 답변 필터링)을 사용하여, e-Otter++는 한 벤치마크에서 성공률을 **63%**로, 다른 벤치마크에서는 **52.5%**로 끌어올렸습니다.

이것이 왜 중요한가

저자들은 이 시스템이 두 가지 주요 방식으로 도움이 된다고 말합니다:

  1. 인간을 위해: 이는 "테스트 주도 개발(Test-Driven Development, 버그를 고치기 전에 테스트를 작성하는 것)"의 지루한 부분을 자동화하여, 개발자가 버그를 확인하고 수정하는 것을 더 쉽게 만들어 줍니다.
  2. AI 에이전트를 위해: 많은 AI 코딩 에이전트들은 버그를 고쳤는지 확인하기 위해 이러한 테스트에 의존합니다. 더 나은 테스트를 제공함으로써, e-Otter++는 다른 AI 에이전트들이 자신의 업무를 더 잘 수행할 수 있도록 돕습니다.

요약하자면, e-Otter++는 인간이 먼저 증명을 작성하기 전에, 소프트웨어 버그가 존재하며 또한 수정되었다는 "증거"를 AI가 작성하도록 만드는 더 똑똑하고, 창의적이며, 엄격한 방법입니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →