← 최신 논문
💻 computer science

On the Flakiness of LLM-Generated Tests for Industrial and Open-Source Database Management Systems

본 연구는 4가지 데이터베이스 관리 시스템을 대상으로 LLM이 생성한 테스트의 플래키성(flakiness)을 조사하며, 이러한 테스트가 주로 보장되지 않은 실행 순서에 의존함으로 인해 기존 테스트보다 약간 더 높은 플래키율을 보인다는 점과, LLM이 특히 폐쇄형 소스 환경에서 프롬프트로부터 기존의 플래키 패턴을 자주 전파한다는 점을 밝히고 있다.

원저자: Alexander Berndt, Thomas Bach, Rainer Gemulla, Marcus Kessel, Sebastian Baltes

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

원저자: Alexander Berndt, Thomas Bach, Rainer Gemulla, Marcus Kessel, Sebastian Baltes

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

당신이 매우 유능하고 박학다식한 로봇 비서를 고용하여, 회사의 모든 중요한 정보를 저장하는 데이터베이스와 같은 복잡한 기계의 안전 점검(safety checks)을 작성하도록 돕는다고 상상해 보세요. 당신은 로봇에게 어떻게 점검을 작성하는지에 대한 몇 가지 예시를 제공했고, 로봇은 새로운 점검 항목들을 수백 개씩 뽑아내기 시작했습니다.

이 논문은 로봇이 작성한 점검 항목들이 실제로 얼마나 신뢰할 수 있는지에 대한 성적표와 같습니다. 연구진은 다음과 같은 사실을 알고 싶었습니다: 로봇이 작성한 테스트는 일관되게 작동하는가, 아니면 "플래키(flaky, 변덕스러운)"하게 행동하는가?

"플래키(Flaky)"한 테스트란 무엇인가?

"플래키"한 테스트는 매번 앞면이 나오기를 기대하는 동전 던지기와 같습니다.

  • 정상적인 테스트: 실행하면 "통과(Pass)"라고 나옵니다. 다시 실행해도 "통과"라고 나옵니다. 신뢰할 수 있습니다.
  • 플래키한 테스트: 실행하면 "통과"라고 나옵니다. 다시 실행했더니 "실패(Fail)"라고 나옵니다. 세 번째로 실행했더니 다시 "통과"라고 나옵니다.

이것은 엔지니어들에게 악몽입니다. 테스트가 무작위로 실패하면, 기계가 실제로 고장 난 것인지 아니면 테스트가 운이 나빴던 것인지 구분할 수 없기 때문입니다. 이는 시간을 낭비하게 만들고 안전 점검에 대한 사람들의 신뢰를 떨어뜨립니다.

실험: 로봇 대 현실 세계

연구진은 네 가지 서로 다른 "기계"(데이터베이스)를 설정했습니다:

  1. SAP HANA: 거대하고 복잡하며 소스 코드가 공개되지 않은 산업용 데이터베이스 (마치 비밀스럽고 첨단 기술이 집약된 금고와 같습니다).
  2. MySQL, SQLite, DuckDB: 인기 있는 오픈 소스 데이터베이스 (마치 잘 알려진 공개 설계도와 같습니다).

그들은 두 가지 다른 "로봇 두뇌"(대규모 언어 모델, LLM)인 GPT-4oMistral을 사용했습니다. 연구진은 이 로봇들에게 기존 테스트를 살펴보고, 더 많은 시나리오를 커버하기 위해 새로운 테스트를 작성하도록 요청했습니다(이를 "테스트 증폭(test amplification)"이라고 합니다).

주요 발견 사항

1. 로봇은 인간보다 조금 더 "불안정"합니다.
연구진은 로봇이 작성한 테스트가 인간 엔지니어가 작성한 테스트보다 플래키할 가능성이 약간 더 높다는 것을 발견했습니다. 인간이 작성한 테스트는 대부분 견고했던 반면, 로봇의 테스트는 무작위로 실패할 확률이 더 높았습니다.

2. "순서"에 대한 혼동 (주된 원인).
로봇 테스트가 플래키했던 가장 큰 이유는 무엇일까요? 바로 순서에 대한 혼동이었습니다.
만ay한 로봇에게 학급에서 성적이 높은 상위 3명을 나열하라고 요청한다고 해봅시다. 만약 당신이 정렬 기준(성적순, 이름순, 키순 등)을 알려주지 않는다면, 로봇은 실행할 때마다 매번 다른 리스트를 줄 수도 있습니다.

  • 인간의 실수: 로봇은 데이터베이스가 항상 특정 순서(예: A-Z 알파벳순)로 결과를 반환할 것이라고 가정하고 테스트를 작성했습니다.
  • 현실: 데이터베이스는 명시적으로 정렬을 지시하지 않으면 결과를 무작위 순서로 반환하는 경우가 많습니다.
  • 결과: 결과가 로봇의 추측과 우연히 일치했을 때는 테스트가 통과했지만, 다음번에 순서가 바뀌자 테스트가 실패했습니다. 이 현상은 로봇이 작성한 플래키한 테스트의 **63%**에서 발생했습니다.

3. "따라 하기" 효과 (플래키함의 전이).
이 부분은 매우 흥-미롭습니다. 연구진은 트릭을 하나 써보기로 했습니다. 이미 플래키한(잘못된) 기존 테스트를 가져와서, 로봇에게 테스트를 작성하는 예시로 입력값으로 준 것입니다.

  • 결과: 로봇은 단순히 코드만 복사한 것이 아니라, 나쁜 습관까지 복사했습니다. 로봇은 똑같은 방식으로 플래키한 새로운 테스트들을 작성하기 시작했습니다.
  • 차이점: 로봇은 오픈 소스 데이터베이스보다 SAP HANA(비밀스러운 산업용 데이터베이스)에서 이러한 현상을 훨씬 더 많이 보였습니다. 왜냐하면 로봇은 이전에 학습한 적이 없는 SAP HANA 코드를 접했기 때문입니다. 따라서 로봇은 당신이 준 예시에 과도하게 의존했으며, 그 예시가 망가져 있더라도 그대로 따랐습니다. 반면 오픈 소스 데이터베이스의 경우, 로봇이 이전에 본 적 있는 유사한 코드가 있었기에 조금 더 독립적으로 작동할 수 있었습니다.

4. 컴파일의 어려움.
복잡하고 소스가 공개되지 않은 SAP HANA의 경우, 로봇은 코드가 컴파일(프로그램으로서 작동)되는 데에도 약 절반 정도의 확률로 어려움을 겪었습니다. 이는 마치 로봇이 본 적도 없는 자동차 엔진의 도면 몇 장만을 가지고 엔진 조립 지침을 쓰는 것과 같습니다. 로봇은 혼란을 느껴 구문 오류(syntax error)를 범했습니다.

시사점

이 논문은 AI가 자연스럽고 인간 같은 코드를 작성하는 데는 뛰어나지만, 다음과 같은 약점이 있다고 결론짓습니다: AI는 자신이 테스트하고 있는 시스템의 숨겨진 규칙을 항상 이해하는 것은 아닙니다.

  • "순서"의 함정: AI는 별도로 지시하지 않으면 데이터베이스가 결과의 순서를 보장하지 않는다는 사실을 자주 잊어버립니다.
  • "나쁜 예시"의 함정: 만약 당신이 AI에게 플래키한 테스트를 예시로 보여준다면, AI는 특히 시스템을 잘 모를 때 그 플래키함을 그대로 복제할 가능성이 높습니다.

조언: AI가 당신의 안전 점검을 작성하게 하기 전에, 먼저 당신의 기존 점검 항목들이 매우 견고한지 확인해야 합니다. 만약 AI에게 나쁜 예시를 제공한다면, AI는 나쁜 습관을 배우게 될 것입니다. 또한, AI에게 시스템이 작동하는 방식에 대해 매우 구체적인 지침을 주어야 합니다. 왜냐하면 AI는 스스로 숨겨진 규칙을 추측할 수 없기 때문입니다.

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

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

Digest 사용해 보기 →