5.4.3 오라클 유닛 테스트를 위한 테스트 시나리오별 고정된 가짜 응답(Fixed Fake Response) 데이터셋 아키텍처 구축

5.4.3 오라클 유닛 테스트를 위한 테스트 시나리오별 고정된 가짜 응답(Fixed Fake Response) 데이터셋 아키텍처 구축

AI 파이프라인에서 하드코딩된 Mocking(모킹) 전략이나 앞서 다룬 VCR(Video Cassette Recorder) 패턴이 갖는 가장 위대하고 핵심적인 가치는, 네트워크를 타지 않는 통제된 **‘가짜 응답 텍스트 블록’**을 소프트웨어 개발자가 100% 비트(Bit) 단위까지 결정론적으로 쥐고 물리 통제할 수 있다는 점이다.

이러한 모킹의 장점을 가장 극단적이고 적극적으로 활용하는 테스팅 아키텍처 기법은, 거대 언어 모델(LLM)이 프로덕션(Production)에서 뱉어낼 수 있는 온갖 기괴하고 예측 불가능한 긍정적/부정적 텍스트 생성 상황들을 미리 정적 파일로 박제해 둔 **‘고정된 가짜 응답 데이터셋(Fixed Fake Response Dataset)’**을 체계적으로 구축하여 CI/CD 저장소에 커밋(Commit)해 두는 것이다.

이 데이터셋 픽스처(Fixture)들은 실제 비싼 LLM API를 수만 번 무작위로 호출해도 우연히 얻어내기 힘든 극한의 치명적 엣지 케이스(Edge Cases)들을 파이프라인 테스트 런타임에 강제로 유발(Trigger)시킨다. 결과적으로 이 정적 데이터베이스는 우리가 설계한 결정론적 오라클(검증 로직)과 JSON 파서(Parser) 백엔드 모듈이 얼마나 튼튼한 다중 예외 처리 방어벽을 갖추고 있는지 증명하는 가장 훌륭한 스트레스 테스트(Stress Test) 재료가 된다.

1. 오라클 방파제 검증을 위한 가짜 응답 데이터셋의 4대 필수 카테고리 (Fixtures Category)

가장 단단하고 빈틈없는 오라클 유닛 테스트(Unit Test)를 CI 러너(Runner) 위에 구축하기 위해, 엔터프라이즈 소스코드 저장소(예: tests/fixtures/fake_responses/) 내부에는 최소한 다음과 같은 4가지 범주의 극단적 Mock JSON 마크다운 텍스트 파일들이 체계적으로 정돈되어 있어야만 한다.

1.1 [Happy Path (완벽한 정상 응답)]: 골든 베이스라인(Golden Baseline)

가장 완벽하고 흠잡을 데 없는 아름다운 정답 데이터(Golden Sample)이다. 오라클 파이프라인이 과도하게 깐깐하게 굴어 정상적인 응답 마크다운마저 오분류(False Positive 에러)로 내치지 않고 무사히 Pass 시키는지, 뒷단의 Pydantic 파서 모듈이 JSON 필드 타입 캐스팅(Type Casting)을 부드럽게 매핑하는지 확인하는 가장 뼈대가 되는 베이스라인 보정 검사다.

  • [저장 파일명]: happy_path_valid_payment_json.json
  • [페이로드 특징]: 완벽한 JSON 포맷 구문(Syntax), 모든 필수 비즈니스 키워드 누락 없이 포함, 최대 토큰 길이 제약 엄격 준수, 어떠한 환각도 없는 무결점의 상태.

1.2 [Format Breaking (문법 및 구문 파괴)]: 파서 견고성(Parser Robustness) 테스트

사전 시스템 프롬프트에서 대문자로 *“반드시 순수한 JSON 스키마로만 단 하나 반환할 것”*이라고 폭력적으로 퓨샷(Few-shot) 명령했음에도 불구하고, 수다스러운 언어 모델이 흔히 저지르는 구문 에러 물리적 붕괴 상황들을 잔혹하게 모사(Simulation)한다. 정규화(Normalization) 파서 유닛 테스트에 절대적으로 필수적인 독극물 데이터다.

  • [저장 파일명 1]: format_error_markdown_wrapped.md
  • (결과 문자열 덩어리가 멍청하게 ```json { … } ``` 의 마크다운 파이프 블록에 앞뒤로 감싸여 반환된 경우. 오라클의 정규표현식 백틱(Backticks) 제거 스트리핑 전처리 로직이 정상 작동하여 내용물을 구출하는지 검사한다.)
  • [저장 파일명 2]: format_error_unterminated.txt
  • (Max_tokens 파라미터 한계나 모델의 버그로 인해 길이가 중간에 댕강 잘려, 닫는 괄호 }] 가 존재하지 않는 치명적 파상풍 경우. 오라클이 자비 없이 JSONDecodeError 익셉션을 뿜으며 파이프라인을 셧다운(Shutdown) 시키고 재시도(Retry) 이벤트 큐로 즉시 보내는지 컴파일 검사한다.)

1.3 [Missing Fields & Logic Failure (비즈니스 논리 누락 및 치명적 환각 범람)]

LLM이 JSON 구문(Syntax) 생성 렌더링 자체에는 완벽히 성공하여 파서는 통과했지만, 그 속의 알맹이 내용물이 뱅킹 비즈니스 트랜잭션 요구사항을 전혀 충족하지 못한 ’똑똑한 헛소리(Smart Hallucination)’를 당당하게 뱉는 경우를 공격 방어한다.

  • [저장 파일명 1]: logic_error_missing_intent.json
  • (고객 챗봇 응답에 반드시 존재해야 할 ’환불’이라는 필수 의도(Intent) Enum 데이터 키가 말도 안 되게 누락되고 엉뚱하게 ’기타 안내’로 분류된 경우.)
  • [저장 파일명 2]: logic_error_hallucinated_url.json
  • (사내 RAG 지식베이스 검색 DB에 전혀 존재하지 않는 외부의 404 인터넷 링크(URL)나 엉터리 서버 전화번호를 모델이 그럴싸하게 스스로 창작 삽입(Hallucination)한 끔찍한 경우.)
  • [오라클 검증 타겟]: 사전에 코딩 설계된 ’키워드 포함/배제 로직 오라클’이 이러한 치명적인 논리적 내용 팩트 오류를 런타임에 즉각 적발(Assert)하고, 시스템 로그에 에러(Fail) 코드와 함께 페이저듀티(PagerDuty) 알리미를 격발하는지 무자비하게 유닛 테스트로 검증한다.

1.4 [Injection & Security Threat (프롬프트 인젝션 보안 위협 유출)]

악의적인 해커 사용자의 프롬프트 인젝션(Prompt Injection) 공격 텍스트가 챗봇 어텐션을 뚫고 성공하여, 회사의 클라우드 핵심 시스템 프롬프트 뼈대가 오염된 채 사용자 브라우저 화면에 고스란히 유출되는 끔찍한 탈옥(Jailbreak) 보안 붕괴 상태를 소프트웨어적으로 시뮬레이션한다.

  • [저장 파일명]: security_threat_prompt_leak.txt
  • (응답 문자열 내부에 “You are a helpful Oracle AI Assistant designed by Corporate X…” 따위의 메타 지시 시스템 문자열이 토해져 유출된 경우.)
  • [오라클 검증 타겟]: 정규식 및 유사도 블랙리스트 방어벽(Layer 3) 오라클이 보안 유출 패턴을 0.01초 만에 스캔하여 방화벽(Firewall) 블로킹 403 에러를 즉시 뿜어내는지 확인한다.

이러한 정적으로 얼어붙은 텍스트 고정 데이터셋 픽스처(Fixtures) 샌드박스를 CI/CD 환경에 구축하여 활용하면, AI 파이프라인 엔지니어는 외부 벤더 API의 끔찍한 네트워크 지연 속도와 확률적 불안정성(Nondeterminism) 핑계를 100% 깔끔하게 변수에서 제거할 수 있게 된다.
오직 **“이런 미치광이 형태의 응답 텍스트 문자열 더미가 들어왔을 때, 내가 짠 파이썬 오라클 검사 코드가 정확히 의도대로 파이프라인 차단 기차단기를 내리는가?”**라는 고전적 소프트웨어 공학의 ’순수한 로직 유닛 검증의 세계’로 진입할 수 있게 된다.
이것이야말로 통제 불가능한 확률적 딥러닝 애플리케이션의 엔터프라이즈 코드 테스트 커버리지(Test Coverage)를 영구적으로 극대화하는 가장 안전하고, 저렴하며, 아름다운 아키텍처 테스팅의 마스터키(Master Key)다.