Files

8.2 KiB

[POLICY] AI 기반 시스템 개발 및 테스트 자동화 통합 규약 (Comprehensive AI Testing Policy)

  • 문서 유형: 개발 정책 및 CLI 참조 규약 (System Policy & Convention)
  • 적용 대상: AI 파이프라인 소스코드, 모델 추론 레이어, LLM 기반 에이전트 워크플로우
  • 참조 경로: docs/references/ai-testing/ai_testing_policy_draft.md
  • 최종 수정: 2026. 07. 02

1. 목적 및 기본 준수 사항 (General Principles)

  1. 확률적 출력 관리: AI 모델의 출력은 결정론적이지 않고 확률에 기반하므로, 모든 테스트 스크립트는 단순 문자열 매칭을 지양하고 구조적 스키마 검증 및 AI 기반 자가 평가 방식을 채택한다.
  2. CLI 강제성: 본 문서에 정의된 정책 수치(커버리지, 성능 메트릭 등)를 만족하지 못하는 코드는 빌드(Build) 및 Main 브랜치로의 병합(Merge)을 전면 차단한다.
  3. 통합 검증 체계: 기존 소프트웨어의 베이스라인 테스트, AI 특화 기능 테스트, 엔진 교차 검증, 3대 레드팀 적대적 공격 테스트를 하나의 파이프라인 안에서 유기적으로 수행한다.

2. 소스코드 및 베이스라인 규약 (Code & Baseline Convention)

2.1 정적 분석 및 코드 체크

  • 모든 PR(Pull Request) 및 커밋 시점에 CLI 기반의 정적 분석(Linting) 및 타입 검사(Type Checking)를 의무적으로 통과해야 한다.
  • AI 학습 파이프라인이나 데이터 전처리 스크립트 내의 문법 오류로 인한 자원 낭비를 방지하기 위해 빌드 프로세스 최우선 단계에서 정적 분석을 수행한다.

2.2 유닛 테스트 강도 정책 (Unit Test Intensity)

AI 시스템의 컴포넌트는 성격에 따라 유닛 테스트의 합격 기준 및 강도를 이원화하여 적용한다.

  • 결정론적 로직 영역 (High Intensity - 강도 높음):
    • 대상: 데이터 전처리, 전처리 가드레일 필터, API 라우팅, 데이터 변환 래퍼
    • 기준: 테스트 통과율(Pass-rate) 100% 필수이며 엄격하게 검증한다.
  • 확률론적 로직 영역 (Structural Validation - 구조적 검증):
    • 대상: AI 모델 추론(Inference) 함수 결과값, 프롬프트 템플릿 컴포저 출력
    • 기준: 텍스트의 완전 일치 대신 다음 구조적 조건을 만족해야 함.
      • 출력 데이터의 JSON 스키마/키값 유효성 검증
      • 임베딩 벡터 차원(Shape)의 일치 여부 검증
      • 모델 출력 확률 값의 범위 검증 (0 \\le p \\le 1)

2.3 커버리지 테스트 기준 (Test Coverage)

  • 소스코드 라인 커버리지: 일반 비즈니스 로직 및 데이터 전처리 코드는 최소 80% 이상의 라인 커버리지를 유지한다.
  • 시나리오 커버리지 (데이터셋 커버리지): 단순히 코드 라인이 실행되었는가를 넘어, 사전에 준비된 사용자 의도(Intent) 데이터셋 및 극단적 엣지 케이스 시나리오 리스트의 최소 90% 이상을 테스트 스위트가 직접 경험하고 통과해야 한다.

3. 기능(Functional) 및 자율형 E2E 스냅샷 평가 규약 (E2E Snapshot Loop)

3.1 기능 테스트 (Functional Testing)

  • AI 시스템이 기획한 대로 제 기능을 수행하는지 비즈니스 요구사항 부합 여부를 검증한다. (예: 인사를 하면 인사를 받는지, 이미지 분류기가 카테고리를 올바르게 반환하는지 등)

3.2 스냅샷 저장 및 자율형 교정 루프 (Autonomous Correction Loop)

생성형 AI 워크플로우의 엔드투엔드(E2E) 테스트 시, CLI는 사용자가 화면에서 요청하는 순간부터 AI를 거쳐 최종 화면이 뜰 때까지의 전체 과정을 통째로 테스트하되, 평가용 상위 AI(Evaluator LLM)를 활용한 자동 재시도 루프 정책을 적용한다.

  1. 스냅샷 생성: 타겟 AI 엔진이 출력한 최종 결과(텍스트, 이미지 등)를 tests/snapshots/ 디렉토리에 버전별 스냅샷으로 저장한다.
  2. 평가용 AI 검증: 별도의 검증용 AI(또는 상위 모델)가 사전에 정의된 평가 루브릭을 기준으로 스냅샷의 답변이 올바른지 자가 검증한다.
  3. FAIL 처리 및 반복(Loop): 평가 기준 미달 시, CLI는 프롬프트나 파라미터를 수정하여 올바른 결과가 나올 때까지 최대 $N$회(기본값: 3회) 자동으로 반복 수행한다.
  4. 최종 판정: 최대 반복 후에도 FAIL인 경우, 해당 빌드는 실패로 처리되며 인간 개발자의 검토(Human-in-the-loop) 단계로 이관된다.

4. 멀티 AI 엔진 교차 검증 정책 (Multi-Engine Switch Policy)

특정 AI 파트너사의 모델에 대한 독점적 종속성(Lock-in)을 방지하고 시스템 마비 시 대체 가능성을 확보하기 위해, 모든 비즈니스 추론 기능은 다음 3가지 범주의 AI 엔진 종류별로 매트릭스 교차 테스트를 수행한다.

  1. 상용 폐쇄형 엔진 (Commercial Closed-Source): (예: GPT-4o, Claude 3.5 Sonnet) 최고 수준의 추론 성능 및 기본적인 방어 가드레일 한계선을 측정하는 기준으로 삼는다.
  2. 오픈소스형 엔진 (Open-Source Local/Self-Hosted): (예: Llama 3, Mistral) 데이터 보안 준수 환경 및 비용 최적화 라우팅 환경 하에서 가드레일이 무너지지 않는지 검증한다.
  3. 도메인 특화 미세조정 엔진 (Internal Fine-Tuned): 사내 자체 데이터로 학습된 전용 모델을 테스트하여 특정 도메인 내에서의 성능을 점검하고 환각 지표(Hallucination Index)를 모니터링한다.

5. 3대 프로필 레드팀 공격 규약 (Red Teaming Matrix Policy)

CLI 자동화 적대적 테스트셋은 AI 엔진의 보안 및 안정성을 허물기 위해 서로 다른 성향을 가진 다음 세 가지 공격 프로필을 무조건 포함하여 교차 검증을 실행해야 한다.

공격 프로필 분류 집중 검증 영역 공격 벡터 예시 방어 및 검증 체크포인트
1. 기술형 레드팀
(Jailbreaker)
시스템 프롬프트 우회 및 가드레일 무력화 가상화 레이어 명령 주입, Base64/입력 인코딩 우회, DAN(무제한 모드) 페르소나 주입 공격 우회 불가능한 시스템 역할 가드레일(System Role Guardrail) 작동 여부
2. 심리형 레드팀
(Social Engineer)
문맥 조작 및 감정적 우회 동정심 유발 시나리오(예: 할머니 동화책 이야기), 소설/역할극 빙자 유해 질문, 인지적 착시 유도 의미론적 경계 필터(Semantic Boundary Filters) 작동 및 윤리 정렬 점수 검증
3. 악성 데이터형 레드팀
(Poisoner)
시스템 견고성 및 오작동 유도 버퍼 오버플로우 유도용 초장문 텍스트 입력, 노이즈가 섞인 적대적(Adversarial) 데이터 주입 입력값 정제 레이어(Sanitization) 가동 및 안전한 에러 핸들링(Fallback) 여부

6. 품질 점수 및 데이터 모니터링 메트릭 (Metrics & Monitoring)

최종 배포 승인을 획득하기 위해 CLI는 테스트 완료 시점마다 아래 메트릭 계산식을 기반으로 한 결과 리포트를 의무적으로 생성해야 한다.

6.1 모델 수학적 성능 메트릭

새로운 변경 사항이나 프롬프트가 적용된 AI 엔진은 검증 데이터셋에서 다음 메트릭의 최소 기준치(Baseline: 예: 0.85)를 초과해야 한다.

\text{Precision (정밀도)} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Positives}} \text{Recall (재현율)} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}}

6.2 데이터 드리프트 감지 (Data Drift Monitoring)

  • 세상이 변하거나 트렌드가 바뀌어 발생하는 오작동을 막기 위해, CLI는 실제 운영 환경에서 수집된 입력 데이터와 모델 학습 데이터 간의 구조적 분포 차이를 **인구통계학적 안정도 지표(PSI, Population Stability Index)**를 통해 정기적으로 계산한다.
  • \text{PSI} \ge 0.2 이상 검출 시, CLI는 '데이터 드리프트 경고(Warning)'를 발생시키고 AI 모델의 재학습(Retraining) 파이프라인 트리거를 요청한다.