Chapter 2. 소프트웨어 테스트에서의 오라클(Oracle) 개념과 AI 시대의 역할
- Chapter 2. 소프트웨어 테스트에서의 오라클(Oracle) 개념과 AI 시대의 역할
- 2.1. 테스트 오라클(Test Oracle)의 기초 이론 및 정의
- 2.1.1. 소프트웨어 테스팅에서의 오라클의 본질적 의미
- 2.1.2. 오라클의 3대 구성 요소: 생성기(Generator), 비교기(Comparator), 판정기(Verdict)
- 2.1.3. 테스트 대상(SUT)과 오라클 간의 상호작용 메커니즘
- 2.1.4. 명세 기반(Specification-based) 오라클과 구현 기반(Implementation-based) 오라클
- 2.1.5. 오라클 정보의 원천: 요구사항 문서, 도메인 지식, 레거시 시스템, 사용자 기대치
- 2.1.6. 테스트 자동화에서 오라클이 차지하는 비중과 중요성
- 2.2. 전통적 소프트웨어 엔지니어링에서의 오라클 분류 체계
- 2.2.1. 참 오라클(True Oracle): 모든 입력에 대해 완벽한 정답을 제공하는 이상적 모델
- 2.2.2. 휴리스틱 오라클(Heuristic Oracle): 통계적 근사치와 경험적 법칙에 기반한 검증
- 2.2.3. 일관성 오라클(Consistency Oracle): 동일 입력에 대한 이전 실행 결과와의 비교
- 2.2.4. 모델 기반 오라클(Model-based Oracle): 상태 전이 다이어그램 및 수학적 모델 활용
- 2.2.5. 파생 오라클(Derived Oracle): 기존 시스템이나 대체 알고리즘의 결과를 정답으로 간주
- 2.2.6. 암시적 오라클(Implicit Oracle): 시스템 붕괴(Crash), 무응답 등 비정상 종료 감지
- 2.3. 오라클 문제(The Oracle Problem)와 자동화의 한계
- 2.3.1. 오라클 문제의 정의: 예상 결과를 산출하기 어렵거나 불가능한 상황
- 2.3.2. 테스트 불가능한 프로그램(Non-testable Programs)의 특징
- 2.3.3. 오라클 비용(Oracle Cost): 정답 생성 및 비교 비용이 테스트 비용을 초과하는 딜레마
- 2.3.4. 부분 오라클(Partial Oracle)의 현실적 타협과 한계
- 2.3.5. 인간 오라클(Human Oracle)의 개입 필요성과 병목 현상
- 2.4. AI 및 LLM(거대 언어 모델) 도입으로 인한 테스트 패러다임의 붕괴
- 2.4.1. 결정론적(Deterministic) 출력에서 확률적(Stochastic) 출력으로의 전환
- 2.4.2. ’정답’의 정의 모호성: 창의적 생성물에 대한 참/거짓 판별의 어려움
- 2.4.2.1. 다중 정답(Multiple Valid Answers)을 허용하는 테스트 케이스의 본질
- 2.4.2.2. 주관적 품질(가독성, 톤앤매너)에 대한 객관적(Objective) 지표화의 난제
- 2.4.3. 환각(Hallucination) 현상과 사실 관계 검증의 복잡성
- 2.4.4. 자연어 처리에서의 의미적 동등성(Semantic Equivalence) vs 문자적 일치(Exact Match)
- 2.4.5. 프롬프트 민감도에 따른 결과의 비일관성(Inconsistency) 문제
- 2.4.6. 블랙박스(Black-box)로서의 AI 모델과 설명 불가능성(Explainability)이 오라클에 미치는 영향
- 2.5. AI 시대를 위한 오라클의 재정의: 확률에서 확정으로
- 2.5.1. AI 오라클의 새로운 요구사항: 유창성(Fluency), 사실성(Factuality), 일관성(Consistency)
- 2.5.2. 확률적 결과에 대한 결정론적 검증 경계(Threshold) 설정 전략
- 2.5.2.1. 비즈니스 리스크 기반의 허용 오차(Tolerance Margin) 할당
- 2.5.2.2. 보수적(Conservative) 오라클과 개방적(Lenient) 오라클 운영의 트레이드오프
- 2.5.3. 참조 기반(Reference-based) 오라클과 무참조(Reference-free) 오라클
- 2.5.4. 구조적 오라클(Structural Oracle): JSON, XML 등 출력 형식을 통한 1차 검증
- 2.5.5. 의미 기반 오라클(Semantic Oracle): 임베딩 벡터 유사도(Cosine Similarity)를 활용한 비교
- 2.5.6. 메타모픽 테스팅(Metamorphic Testing) 기법을 활용한 관계적 속성 검증
- 2.6. AI 모델 평가 지표(Metrics)와 테스트 오라클의 구분
- 2.6.1. BLEU, ROUGE, METEOR 등 전통적 NLP 지표의 한계와 오라클로서의 부적합성
- 2.6.2. LLM 전용 지표(Perplexity, Truthfulness 등)와 비즈니스 요구사항의 괴리
- 2.6.3. 정량적 점수(Score)를 이진 판정(Pass/Fail) 오라클로 변환하는 기준
- 2.6.4. 인간 평가(Human Evaluation)와 자동화된 오라클 간의 상관관계 분석
- 2.6.5. 지표 해킹(Metric Hacking) 방지를 위한 다차원적 오라클 구성
- 2.7. 결정론적 정답지(Deterministic Ground Truth)의 역할과 중요성
- 2.7.1. 골든 데이터셋(Golden Dataset)의 정의와 AI 품질 보증의 기준점
- 2.7.2. 실버 데이터셋(Silver Dataset)과 약한 감독(Weak Supervision) 오라클
- 2.7.3. 회귀 테스트(Regression Testing)에서의 불변량(Invariant)으로서의 결정론적 정답
- 2.7.4. 소수의 확정적 오라클이 다수의 확률적 데이터를 제어하는 하이브리드 전략
- 2.7.5. 법적/규제적 준수(Compliance)를 위한 강성 오라클(Hard Oracle)의 필요성
- 2.8. AI 기반 오라클(AI-based Oracle)의 등장: AI로 AI를 검증하다
- 2.8.1. LLM-as-a-Judge 개념의 부상과 평가자 모델의 역할
- 2.8.2. 교차 검증(Cross-Validation): 다수의 모델 합의(Consensus)를 이용한 오라클
- 2.8.3. 적대적 오라클(Adversarial Oracle): 레드팀(Red Teaming) 자동화와 취약점 탐지
- 2.8.4. AI 오라클의 신뢰성 문제: 편향(Bias)의 전이와 자기 강화(Self-Reinforcement) 위험
- 2.9. 오라클 수명 주기 관리와 MLOps/LLMOps 통합
- 2.9.1. 데이터 드리프트(Data Drift)에 따른 정답지 오라클의 유효기간
- 2.9.2. 지속적 학습(Continuous Learning) 환경에서의 동적 오라클(Dynamic Oracle) 업데이트
- 2.9.3. 버전 관리 시스템 내에서의 테스트 케이스 및 오라클 이력 관리
- 2.9.4. CI/CD 파이프라인 내 오라클 자동화 배포 및 차단(Blocking) 정책
- 2.10 요약 및 3장 연결: 왜 우리는 다시 결정론적 정답지를 갈구하는가?
- 2.10.1 통제 불가능한 AI를 통제 가능한 시스템으로 편입시키기 위한 필수 조건
- 2.10.2 엔터프라이즈급 AI 서비스의 품질 보증(QA) 최후의 보루
- 2.10.3 다음 장 예고: 결정론적 정답지의 설계 원칙과 구체적 방법론
- 2.11 생성형(Generative) AI 시스템과 예측형(Predictive) AI 시스템의 테스팅 차이
- 2.11.1 예측 및 분류 모델(Predictive)에서의 정답(T/F) 도출과 명확한 혼동 행렬(Confusion Matrix)
- 2.11.2 생성형(Generative) 모델における 무한한 출력 상태(State Space)와 정답의 스펙트럼 화
- 2.11.3 닫힌 세계(Closed-World) 가정에서 열린 세계(Open-World) 환경으로의 오라클 적응