본문으로 건너뛰기
QA-Lab
고급25

비결정적 출력의 통계적 검증: 한 번이 아니라 여러 번 돌려본다

같은 프롬프트도 실행할 때마다 답이 달라지는데, 어떻게 "이 기능이 잘 동작한다"고 말할 수 있을까? 반복 실행과 통과율이라는, LLM 테스트만의 검증 방식을 익힌다.

  • #비결정성
  • #통계적검증
  • #통과율

개념

한 번의 성공이 항상 성공을 의미하지 않는다

모듈 10(레슨 4)에서 배운 비결정적 요소는, 코드에서는 시간이나 랜덤 값을 통제해서 "없앨 수 있는" 문제였다. 하지만 LLM 자체의 출력 비결정성은 통제해서 없앨 수 없다 — 같은 프롬프트를 열 번 넣으면, 아홉 번은 잘 답하고 한 번은 이상하게 답할 수 있다.

전통적 테스트: 한 번 실행해서 통과하면, 코드가 안 바뀌는 한 계속 통과 (결정적)
LLM 테스트: 한 번 실행해서 통과해도, 다음 실행에서 실패할 수 있음 (비결정적)

통과율(Pass Rate)이라는 새로운 지표

단일 성공/실패 대신, 같은 테스트를 N번 반복 실행해서 몇 %가 통과했는지를 지표로 삼는다. 모듈 6(레슨 5)에서 배운 품질 지표(결함 밀도, 결함 탈출률)와 비슷한 발상을, LLM 출력의 신뢰도를 측정하는 데 적용한 것이다.

같은 프롬프트를 100번 실행:
  - 92번: 정확하고 안전한 답변
  - 5번: 정확하지만 형식이 살짝 다름
  - 3번: 부정확한 답변(환각 포함)
 
→ "핵심 정확도 통과율 92%"라는 근거 있는 숫자로 보고할 수 있다

몇 번 반복해야 충분한가

이건 모듈 16(레슨 3)에서 배운 k6 부하 테스트의 "몇 명의 가상 사용자로 테스트할 것인가"와 비슷한 질문이다 — 반복 횟수가 적으면 우연이 결과를 왜곡할 수 있고, 너무 많으면 시간과 비용이 커진다. 일반적으로:

- 초기 탐색 단계: 10~20회 정도로 대략적인 감을 잡음
- 배포 전 신뢰도 확인: 100회 이상으로 더 정밀한 통과율 확보
- 핵심 기능(안전성이 중요한 답변): 더 많은 반복과 다양한 변형 프롬프트

허용 가능한 통과율은 얼마인가

모듈 14(레슨 4)에서 배운 품질 게이트 설계 원칙이 여기서도 적용된다 — 모든 기능에 100% 통과율을 요구하는 것은 비현실적이고, 동시에 모든 실패를 허용하는 것도 위험하다.

안전 관련 답변(예: 의료·법률 관련 안내): 매우 높은 통과율 요구,
  실패 시 명확히 "확인이 필요합니다"로 유도하는지까지 확인
일반 정보 제공: 상대적으로 유연한 기준 허용 가능

통과율만으로는 부족하다 — 실패 유형 분석

92%가 통과했다고 안심하기 전에, 나머지 8%가 어떻게 실패했는지를 봐야 한다. 이건 모듈 6(레슨 5)에서 배운 "지표는 신호일 뿐, 해석이 필요하다"는 원칙과 같다.

실패 유형 A: 형식이 살짝 다름(예: 글머리 기호 대신 번호를 씀) — 경미함
실패 유형 B: 사실관계가 틀림(환각) — 심각함

같은 "실패"라도 유형에 따라 심각도(모듈 6 레슨 1)가 완전히 다르다.

회귀 시 통과율 변화 추적하기

모델 버전이 바뀌거나 프롬프트를 수정했을 때, 이전 통과율과 비교하는 것이 회귀 테스트(모듈 10)의 LLM 버전이다.

프롬프트 수정 전: 통과율 92%
프롬프트 수정 후: 통과율 78% ← 회귀가 발생했다는 신호

실무에서 왜 필요한가

"이 AI 기능 테스트해봤더니 잘 되던데요"라는 한 번의 확인은, LLM의 비결정성을 감안하면 거의 의미가 없다. QA가 반복 실행과 통과율이라는 도구를 쓰면, "92% 신뢰도로 정상 동작하며, 실패 사례의 대부분은 형식 문제이지 사실 오류는 아니다"처럼 훨씬 근거 있는 보고를 할 수 있다.

실습 과제

과제 1 — 반복 횟수 판단하기 (10분)

"의료 정보를 안내하는 AI"와 "날씨를 요약해주는 AI" 각각에 대해, 배포 전 검증에 필요한 반복 횟수와 통과율 기준을 다르게 제안하고 이유를 설명한다.

과제 2 — 실패 유형 분류하기 (10분)

100번 반복 실행 결과 8번이 실패했다고 하자. 다음 두 실패 사례를 심각도 관점에서 분류한다.

  1. 답변이 요청한 언어(한국어) 대신 영어로 나옴
  2. 존재하지 않는 할인 쿠폰 코드를 알려줌

자가 체크리스트

  • 왜 한 번의 성공이 LLM 테스트에서는 충분하지 않은지 설명할 수 있다
  • 통과율(Pass Rate)이라는 지표를 계산하고 해석할 수 있다
  • 반복 횟수를 상황에 맞게 조절해야 하는 이유를 설명할 수 있다
  • 통과율만이 아니라 실패 유형까지 분석해야 하는 이유를 설명할 수 있다
  • 통과율 변화로 회귀를 탐지하는 방법을 설명할 수 있다

흔한 실수

  • 한 번 테스트해보고 "잘 된다"고 결론짓는다. LLM은 비결정적이므로 최소한의 반복 없이는 신뢰할 수 있는 결론이 아니다.
  • 모든 기능에 같은 반복 횟수·통과율 기준을 적용한다. 리스크가 큰 기능일수록 더 엄격한 기준이 필요하다.
  • 통과율 숫자만 보고 실패 사례의 내용은 들여다보지 않는다. 경미한 형식 문제와 심각한 사실 오류는 같은 "실패"가 아니다.

참고 자료