Files
tdc114plus/docs/references/ai-testing/tdc114plus_test_strategy.md
T

8.2 KiB

tdc114plus 테스트 단계별 전략 (참고용 초안)

  • 문서 유형: 테스트 전략 초안 (참고용)
  • 저장 경로: docs/references/ai-testing/tdc114plus_test_strategy.md
  • 상태: 참조 폴더 내 초안 — 사용 전 검토/승인 필요
  • 작성일: 2026-07-02

목적

tdc114plus 개발 중에 적용할 테스트 단계, 진입/종료 조건, 실행 방법, 검증 포인트를 정의한다. 이 문서는 참조용 초안이며, 최종 확정 시 사용자 승인을 받아 참조 폴더 밖(프로덕션 정책 위치)으로 이동한다.

범위

  • Flutter 앱 클라이언트: UI, 화면 흐름, 비즈니스 로직
  • AI/ML 관련 컴포넌트: 추론 함수, 프롬프트 템플릿, 결과 검증 루틴
  • 백엔드 연동: Baron SSO 로그인, orgFront 직원/조직 데이터 조회

개발 단계별 테스트 전략

tdc114plus 개발 진행은 다음 세 시기로 구분한다.

  1. 초반(Initial phase)
  2. 중반(Mid phase)
  3. 후반(Late phase)

각 시기에 따라 테스트 우선순위와 적용 대상이 달라진다.

초반(Initial phase)

  • 목표: 화면 흐름, 기본 기능, 코드 품질을 빠르게 검증하여 개발 기반을 마련한다.
  • 주요 활동:
    • Flutter 프로젝트 골격 확립
    • 로그인/직원검색/조직도 기본 화면 구성
    • Mock 데이터 기반 화면 흐름 검증
  • 적용 테스트:
    1. Static & CI Gate
      • flutter analyze, dart format, flutter test --coverage
      • 코드 스타일, 정적 분석, 기본 단위 테스트
    2. Unit & Component Tests
      • 화면 라우팅, 상태 전이, 데이터 변환
      • Mock 기반 ViewModel/Controller 동작 검증
    3. Mock-driven UI E2E
      • Mock API로 로그인→검색→조직도 시나리오 검증
      • 스냅샷 저장 및 회귀 검증
  • 개선 포인트:
    • 코드 품질 이슈 조기 발견
    • 초기 화면 플로우의 불일치 축소
    • Mock 데이터와 실제 API 계약 간 차이를 명확히 정의
  • 예시 명령:
./scripts/flutter-docker.sh analyze
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html

중반(Mid phase)

  • 목표: 외부 API 연동을 통합하고, 인증/권한/데이터 일관성 등을 검증한다.
  • 주요 활동:
    • Baron SSO 로그인 연동
    • orgFront 직원/조직 조회 로직 구현
    • 권한/마스킹/가족사 필터 검증
  • 적용 테스트:
    1. Integration Tests
      • Staging 또는 계약된 환경에서 API 연동
      • 로그인 세션, 직원 목록, 조직도 탐색 검증
    2. Unit & Component Tests
      • API 파싱, 재시도, 오류 처리, 보안 예외 로직
    3. Snapshot Loop 유지
      • Mock 데이터를 실 연동 API 형태로 업데이트
      • UI 회귀 스냅샷 재검증
  • 개선 포인트:
    • API 변경 영향 조기 검증
    • 인증/권한 경계 문제 발견
    • 데이터 포맷 불일치 최소화
  • 예시 명령:
export TDC114_API_BASE=https://staging-api.example.com
export TDC114_API_KEY=staging-key
./scripts/integration_tests.sh

후반(Late phase)

  • 목표: 릴리스 준비 상태에서 성능, 보안, 적대적 대응, 회귀 검증을 완료한다.
  • 주요 활동:
    • 릴리스 후보 빌드
    • 레드팀/적대적 테스트
    • 성능 및 데이터 드리프트 점검
  • 적용 테스트:
    1. Adversarial / Red-team Automated Runs
      • Jailbreaker, Social Engineer, Poisoner 시나리오
      • 시스템 역할, 의미론적 필터, 차단/대체 동작 검증
    2. Release Gate & Performance Checks
      • APK 빌드, 메모리/CPU 스모크, 보안 스캔
      • PSI 기반 데이터 드리프트 감지
    3. Regression Snapshot Validation
      • 주요 화면 및 시나리오에 대한 스냅샷 재검증
  • 개선 포인트:
    • 릴리스 이전 회귀 위험 제거
    • 보안/안정성 취약점 보강
    • 실제 운영 수준 성능 파악
  • 예시 명령:
flutter build apk --debug
./scripts/perf_smoke.sh
./scripts/redteam/run_all.sh --profile=jailbreaker

각 단계별 테스트 분류

테스트 유형 초반 중반 후반
Static & CI Gate 필수 필수 필수
Unit & Component Tests 주력 유지 유지
Mock-driven UI E2E 핵심 일부 유지 회귀 검증
Integration Tests 준비 주력 유지/확장
Adversarial / Red-team Runs 준비 준비 핵심
Release/Performance Checks 없음 예비 주력

단계별 핵심 검증 포인트

  • 초반: 화면 흐름, Mock 데이터 기반 상태 전환, 초기 코드 품질
  • 중반: 실제 API 연동, 인증 및 권한, 외부 오류 처리
  • 후반: 보안/레드팀 검증, 성능 안정성, 릴리스 체크리스트

초반 단계 상세 시나리오

  • 로그인 화면 진입 및 입력 필드 유효성 검증
  • 입력된 전화번호가 형식에 맞지 않을 때 경고 메시지 표시
  • Mock 사용자 존재/미존재에 따른 로그인 성공/실패 플로우
  • 직원 검색 화면 진입 후 단어 검색, 결과 없음/결과 있음 케이스
  • 조직도 화면에서 노드 확장·축소, 팝업/상세 정보 표시
  • 즐겨찾기 토글 및 로컬 상태 저장 확인

중반 단계 상세 시나리오

  • 실제 SSO 인증 실패 시 재시도 및 오류 메시지 표시
  • orgFront 직원 목록 중 특정 가족사 검색 시 필터 동작 확인
  • 조직도 건너뛰기 및 자회사/모회사 표시 일관성 검증
  • API 응답 구조 변경에 대한 파싱 예외 처리 확인
  • 네트워크 타임아웃/401/500 등 실패 케이스 대응 검증

후반 단계 상세 시나리오

  • 릴리스 후보 APK 설치 후 주요 화면 진입 안정성 검증
  • Auth 세션 만료 후 재로그인 흐름 확인
  • 레드팀 공격 시나리오로 프롬프트 우회/입력 조작 시 방어 검증
  • 성능 기준에서 검색 응답 시간 및 UI 스크롤 부하 확인
  • 데이터 드리프트 지표(PSI) 계산에 필요한 로그 수집 경로 확인

자동화 스크립트 템플릿

아래 예시는 실제 스크립트 작성 시 템플릿으로 활용할 수 있는 구조이다.

1. Static & CI Gate 스크립트

#!/usr/bin/env bash
set -e

echo "[STATIC] Format check"
./scripts/flutter-docker.sh format

echo "[STATIC] Analyze"
./scripts/flutter-docker.sh analyze

echo "[STATIC] Unit tests with coverage"
./scripts/flutter-docker.sh test --coverage

echo "[STATIC] Completed"

2. Mock-driven UI E2E 스크립트

#!/usr/bin/env bash
set -e

echo "[MOCK E2E] Start mock server"
./scripts/mock-server.sh start

echo "[MOCK E2E] Run UI automation"
flutter drive --target=test_driver/app.dart

echo "[MOCK E2E] Save snapshot results"
# snapshot 저장 스크립트 예시
./scripts/save-snapshots.sh tests/snapshots/tdc114plus

3. Integration 테스트 실행 스크립트

#!/usr/bin/env bash
set -e

export TDC114_API_BASE=${TDC114_API_BASE:-https://staging-api.example.com}
export TDC114_API_KEY=${TDC114_API_KEY:?"TDC114_API_KEY required"}

echo "[INTEGRATION] Start integration tests"
./scripts/integration_tests.sh

4. 레드팀 자동화 실행 스크립트

#!/usr/bin/env bash
set -e

for profile in jailbreaker social_engineer poisoner; do
  echo "[REDTEAM] Running profile: $profile"
  ./scripts/redteam/run_all.sh --profile="$profile"
done

5. 릴리스 준비 스크립트

#!/usr/bin/env bash
set -e

echo "[RELEASE] Build debug APK"
flutter build apk --debug

echo "[RELEASE] Run performance smoke tests"
./scripts/perf_smoke.sh

echo "[RELEASE] Generate release report"
./scripts/generate-release-report.sh reports/tdc114plus/$(date +%Y%m%d)

리포트 및 기록

  • 자동화 실행 결과는 reports/tdc114plus/YYYYMMDD/ 경로에 저장한다.
  • 저장 항목:
    • 테스트 커버리지 보고서
    • 실패 케이스 및 재현 정보
    • 레드팀 시나리오 결과
    • PSI/데이터 드리프트 계산 결과
  • 실패 이력은 Jira 또는 이슈 트래커로 자동 이관을 권장한다.

거버넌스

  • 이 문서는 참조용 초안이며, 프로젝트 정책으로 채택하려면 정책팀/제품/보안 담당자의 승인 절차를 거쳐야 한다.
  • 승인 전까지 이 파일은 docs/references/ai-testing/에만 보관되며, 사용 전 최종 검토를 요청한다.