# 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 계약 간 차이를 명확히 정의 - 예시 명령: ```bash ./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 변경 영향 조기 검증 - 인증/권한 경계 문제 발견 - 데이터 포맷 불일치 최소화 - 예시 명령: ```bash 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 - 주요 화면 및 시나리오에 대한 스냅샷 재검증 - 개선 포인트: - 릴리스 이전 회귀 위험 제거 - 보안/안정성 취약점 보강 - 실제 운영 수준 성능 파악 - 예시 명령: ```bash 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 스크립트 ```bash #!/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 스크립트 ```bash #!/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 테스트 실행 스크립트 ```bash #!/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. 레드팀 자동화 실행 스크립트 ```bash #!/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. 릴리스 준비 스크립트 ```bash #!/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/`에만 보관되며, 사용 전 최종 검토를 요청한다.