3.6.3.1 Pass/Fail 이분법적 접근의 한계 보완

3.6.3.1 Pass/Fail 이분법적 접근의 한계 보완

전통적인 소프트웨어 테스팅의 대원칙은 ’모 아니면 도(All-or-Nothing)’이다. 테스트 함수는 불리언(Boolean) 값을 반환하며, 기댓값과 1바이트라도 다르면 해당 단위 테스트는 냉혹하게 Fail 판정을 받는다. 결정론적 오라클(Deterministic Oracle) 역시 이 견고한 이분법 위에서 출발하지만, 거대 언어 모델(LLM)이 토해내는 다차원적인(Multi-dimensional) 복합 응답을 단순히 PassFail 두 바구니로만 나누려 들면 CI/CD 파이프라인 전체가 경직되는 부작용이 발생한다.

1. 다중 구성 요소 응답에서의 이분법적 한계

결정론적 오라클의 평가 대상이 되는 AI의 응답은 보통 여러 논리적 요소가 결합된 형태를 띤다. 예를 들어, 금융 AI 비서에게 “최근 3개월 A주식 수익률과 관련 뉴스를 요약해줘“라고 질문했을 때, 정답지는 최소 두 가지 속성(수익률 수치, 뉴스의 핵심 키워드)을 구조화하여 보유하게 된다.

  • 완고한 이분법의 문제점: 만약 LLM이 ’수익률(수학적 정답)’은 소수점 둘째 자리까지 완벽하게 맞춰놓고선, ’관련 뉴스(맥락적 정답)’에서 필수 포함어(Whitelist)를 하나 누락했다고 가정해 보자. 오라클이 엄격한 AND 조건의 이분법을 적용한다면 이 응답은 무조건 Fail이다.
  • 개발자의 피로도 증가: 이 경우, 수학 연산 모듈은 완벽히 정상 작동하고 있음에도 불필요한 알럿(Alert)이 발생한다. 개발자는 어디서부터 모델의 맥락 생성이 망가졌는지 추적해야 하며, 이러한 ’억울한 Fail’이 누적되면 엔지니어들은 오라클의 룰을 점점 느슨하게 하향 평준화(Dumbing down) 시키려는 유혹에 빠진다.

2. 부분 점수(Partial Credit) 상태 모델의 도입

오라클의 결정론을 포기하지 않으면서도 시스템의 유연성을 잃지 않기 위해서는 테스트 통과 상태를 삼항식(Ternary) 이상의 세분화된 스펙트럼으로 확장해야 한다. 전통적 Pass/Fail 사이에 **Partial-Pass (경고 상태)**라는 지표를 삽입하는 것이 대표적인 전략이다.

  • PASS (전면 통과): 오라클의 모든 결정론적 제약(필수 조건 + 권장 조건)을 100% 충족한 상태.
  • PARTIAL-PASS (기능적 통과, 형식적 경고): 시스템 장애를 일으키는 치명적인 핵심 제약(Core Constraint, 예: JSON 스키마 구조, 수학적 연산값)은 통과했으나, 부가적인 정책(예: 어조, 덜 중요한 키워드 누락)을 위반한 경우. 시스템 배포(Deploy)는 허용하되 성능 저하 지표(Metric)로 기록된다.
  • FAIL (배포 차단): 핵심 제약 조건을 하나라도 위반한 상태로, 파이프라인을 즉시 중지시킨다.

3. 세밀한 디버깅을 위한 카테고리화

부분 점수를 도입한다는 것은 정답지(Ground Truth)의 스키마 구조 자체를 재설계해야 함을 의미한다. 오라클이 검증할 각 필드마다 가중치나 치명도(Severity)의 등급을 부여해야 한다.

{
  "expected_outputs": [
    {"field": "return_rate", "value": 15.2, "type": "exact", "severity": "CRITICAL"},
    {"field": "news_summary", "keywords": ["어닝 서프라이즈"], "type": "includes", "severity": "MINOR"}
  ]
}

이와 같이 평가 대상을 분해하고 부분 점수를 인정함으로써, 오라클 파이프라인은 단순히 “이번 프롬프트 변경이 실패했습니다“라고 통보하는 것을 넘어, “비즈니스 로직(CRITICAL)은 무결성을 유지하고 있으나, 텍스트 요약(MINOR) 성능이 12% 하락했습니다“라는 고해상도의 엔지니어링 피드백을 제공할 수 있다. 이는 복잡화된 AI 소프트웨어 유지보수에서 장기적인 대응력을 확보하는 필수적인 타협점이다.