AI주도개발 통합시스템 v3.2.0 with Cursor Rules & Commands

현재 버전

Version

  • v3.2.0
  • 릴리스일: 2025-09-16
  • 주요 변경: 인지과학 기반 최적화를 통한 논리 플로우 재구성

6_testing/

01-test-generation.md

경로 : .cursor/commands/6_testing/01-test-generation.md

  # 풀스택 단계적 테스트 계획서

  ## 1. 프로젝트 개요
  
  ### 1.1 테스트 전략의 기본 방침
  본 계획서는 **구현 분석 → 기능별 테스트 계획 수립 → 레벨별 테스트 생성**의 단계적 접근으로, 프론트엔드와 백엔드 모두에서 3단계 테스트 전략을 수행하여 풀스택 시스템의 품질을 점진적으로 보증하는 것을 목표로 합니다.
  
  ### 1.2 실행 페이즈 개요
  ```mermaid
  graph TD
      A[Phase 0: 시스템 분석] --> B[Phase 1: 테스트 계획 수립]
      B --> C[Phase 2: 레벨 선택 · 테스트 생성]
      C --> D[Phase 3: 테스트 실행 · 리포트]
      
      A --> A1[구현 코드 분석]
      A --> A2[명세서 분석]
      A --> A3[API 사양 분석]
      A --> A4[DB 설계 분석]
      
      B --> B1[기능별 테스트 대상 정리]
      B --> B2[레벨별 테스트 계획]
      B --> B3[사용자 확인 · 선택]
      
      C --> C1[지정 레벨 테스트 생성]
      C --> C2[테스트 환경 준비]
      
      D --> D1[테스트 실행]
      D --> D2[결과 분석 · 리포트]
  ```
  
  ### 1.2 테스트 피라미드 구성(개정판)
  ```
          Level 3 E2E Tests (10%)
      ─────────────────────────────────
        Frontend E2E | Backend E2E
     Level 2 Integration Tests (20%)
    ───────────────────────────────────
     Frontend Integ | Backend Integ
   Level 1 Unit/Mock Tests (70%)
  ────────────────────────────────────────
  Frontend Unit   |   Backend Unit
  ```
  
  ## 2. 테스트 레벨 정의(프론트엔드 · 백엔드 공통)
  
  ### 2.1 Level 1: 유닛/모의(Mock) 테스트
  
  #### 2.1.1 Backend Level 1
  - **목적**: 비즈니스 로직 단위 검증
  - **신뢰도**: 60-70%
  - **실행 빈도**: 매 커밋
  - **실행 시간**: 초 단위
  - **기술 스택**: pytest, unittest.mock, pytest-mock
  - **대상**: 
    - 순수 함수, 계산 로직
    - API 핸들러(의존성 모킹)
    - 서비스 클래스 메서드
    - 검증(Validation) 함수
  
  #### 2.1.2 Frontend Level 1  
  - **목적**: 컴포넌트 단위 검증
  - **신뢰도**: 60-70%
  - **실행 빈도**: 매 커밋
  - **실행 시간**: 초 단위
  - **기술 스택**: Vitest, React Testing Library, happy-dom
  - **대상**:
    - 개별 컴포넌트 렌더링
    - props 처리
    - 이벤트 핸들러
    - 커스텀 훅
  
  ### 2.2 Level 2: 통합 테스트
  
  #### 2.2.1 Backend Level 2
  - **목적**: 컴포넌트 간 연동 검증
  - **신뢰도**: 75-85%
  - **실행 빈도**: 주간
  - **실행 시간**: 분 단위
  - **기술 스택**: pytest, TestContainers, httpx
  - **대상**:
    - API + 데이터베이스 연동
    - 서비스 간 연동
    - 외부 API 통합(테스트 환경)
    - 트랜잭션 정합성
  
  #### 2.2.2 Frontend Level 2
  - **목적**: 컴포넌트 간 연동 · API 통합 검증
  - **신뢰도**: 75-85%
  - **실행 빈도**: 주간
  - **실행 시간**: 분 단위
  - **기술 스택**: Vitest, React Testing Library, MSW
  - **대상**:
    - 다중 컴포넌트 연동
    - API 통신(MSW 모킹)
    - 상태 관리(Redux/Zustand 등)
    - 라우팅 기능
  
  ### 2.3 Level 3: E2E테스트
  
  #### 2.3.1 Backend Level 3
  - **목적**: 완전한 워크플로 검증
  - **신뢰도**: 90-95%
  - **실행 빈도**: 릴리스 전
  - **실행 시간**: 분~시간 단위
  - **기술 스택**: pytest, requests, 실제(스테이징) 서비스
  - **대상**:
    - API 기반 종단 간 플로우
    - 운영 유사 환경 테스트
    - 성능 검증
    - 보안 검증
  
  #### 2.3.2 Frontend Level 3
  - **목적**: 사용자 여정(User Journey) 종단 간 검증
  - **신뢰도**: 90-95%
  - **실행 빈도**: 릴리스 전
  - **실행 시간**: 분 단위
  - **기술 스택**: Playwright, Cypress
  - **대상**:
    - 완전한 사용자 플로우
    - 크로스 브라우저 테스트
    - 실제 브라우저 환경
    - 시각적 회귀 테스트
  
  ## 3. 테스트 환경 구성
  
  ### 3.1 Level 1 테스트 환경
  
  #### Backend Level 1
  ```yaml
  backend_level1:
    name: "Backend Mock Environment"
    database: "In-memory SQLite"
    external_services: "All Mocked"
    storage: "Mock Storage"
    setup_time: "< 1초"
    cleanup: "자동"
  ```
  
  #### Frontend Level 1
  ```yaml
  frontend_level1:
    name: "Frontend Unit Environment"
    browser: "happy-dom"
    api_services: "All Mocked (vi.mock)"
    components: "Isolated Testing"
    setup_time: "< 1초"
    cleanup: "자동"
  ```
  
  ### 3.2 Level 2 테스트 환경
  
  #### Backend Level 2
  ```yaml
  backend_level2:
    name: "Backend Integration Environment"
    database: "TestContainers PostgreSQL"
    external_services: "Test Services"
    storage: "Test Bucket"
    setup_time: "10-30초"
    cleanup: "자동 + 수동 확인"
  ```
  
  #### Frontend Level 2
  ```yaml
  frontend_level2:
    name: "Frontend Integration Environment"
    browser: "happy-dom"
    api_services: "MSW Mock Server"
    components: "Multi-component Testing"
    state_management: "Real Store"
    setup_time: "5-15초"
    cleanup: "자동"
  ```
  
  ### 3.3 Level 3 테스트 환경
  
  #### Backend Level 3
  ```yaml
  backend_level3:
    name: "Backend E2E Environment"
    database: "Staging Database"
    external_services: "Staging Services"
    storage: "Staging Bucket"
    setup_time: "1-5분"
    cleanup: "수동 확인 필수"
  ```
  
  #### Frontend Level 3
  ```yaml
  frontend_level3:
    name: "Frontend E2E Environment"
    browser: "Real Browsers (Chrome, Firefox, Safari)"
    api_services: "Staging Backend"
    environment: "Full Application"
    setup_time: "30초-2분"
    cleanup: "자동 + 스크린샷 보관"
  ```
  
  ## 4. Phase 0: 시스템 분석 · 테스트 계획 수립
  
  ### 4.1 구현 분석 페이즈
  
  #### 4.1.1 분석 대상 문서
  ```yaml
  required_documents:
    implementation:
      - backend_source_code: "API 구현, 서비스, 모델"
      - frontend_source_code: "컴포넌트, 페이지, 훅"
      - database_schema: "테이블 정의, 관계"
    
    specifications:
      - api_specification: "OpenAPI/Swagger 사양"
      - database_design: "ERD, 제약 정의"
      - system_design: "아키텍처 설계서"
      - user_requirements: "요구사항 정의서"
    
    optional_documents:
      - deployment_config: "인프라 설정"
      - security_requirements: "보안 요구사항"
      - performance_requirements: "성능 요구사항"
  ```
  
  #### 4.1.2 자동 분석 프로세스
  ```python
  class SystemAnalyzer:
      def analyze_system(self, documents):
          """시스템 전반을 분석하여 테스트 대상을 식별"""
          analysis_result = {
              "backend_features": self._analyze_backend(documents),
              "frontend_features": self._analyze_frontend(documents),
              "integration_points": self._analyze_integrations(documents),
              "critical_paths": self._identify_critical_paths(documents),
              "risk_assessment": self._assess_risks(documents)
          }
          return analysis_result
      
      def _analyze_backend(self, documents):
          """Backend기능 분석"""
          return {
              "api_endpoints": self._extract_api_endpoints(),
              "business_logic": self._extract_business_logic(),
              "data_models": self._extract_data_models(),
              "external_dependencies": self._extract_external_deps(),
              "security_features": self._extract_security_features()
          }
      
      def _analyze_frontend(self, documents):
          """Frontend기능 분석"""
          return {
              "components": self._extract_components(),
              "pages": self._extract_pages(),
              "user_flows": self._extract_user_flows(),
              "state_management": self._extract_state_management(),
              "api_integrations": self._extract_api_integrations()
          }
  ```
  
  ### 4.2 기능별 테스트 계획 수립
  
  #### 4.2.1 테스트 대상 기능 매핑 예시
  ```markdown
  # 시스템 분석 결과 예시
  
  ## Backend 기능 목록
  ### 인증 · 인가
  - **Level 1 대상**: JWT 토큰 생성 로직, 비밀번호 해시
  - **Level 2 대상**: 로그인 API + DB 연동, 권한 체크
  - **Level 3 대상**: 완전한 인증 플로우, 세션 관리
  
  ### 사용자 관리
  - **Level 1 대상**: 사용자 생성 검증, 업데이트 로직
  - **Level 2 대상**: 사용자 CRUD API + DB, 메일 발송 연동
  - **Level 3 대상**: 사용자 등록 ~ 인증 완료 플로우
  
  ### 데이터 처리
  - **Level 1 대상**: 계산 로직, 데이터 변환 처리
  - **Level 2 대상**: 파일 업로드 + 스토리지 연동
  - **Level 3 대상**: 배치 처리 파이프라인
  
  ## Frontend 기능 목록
  ### 인증 UI
  - **Level 1 대상**: 로그인 폼 컴포넌트, 검증
  - **Level 2 대상**: 인증 상태 관리, API 연동
  - **Level 3 대상**: 로그인 ~ 대시보드 전환 플로우
  
  ### 사용자 관리 UI
  - **Level 1 대상**: 사용자 목록 · 상세 컴포넌트
  - **Level 2 대상**: CRUD + API 연동, 상태 동기화
  - **Level 3 대상**: 사용자 관리 종단 간 워크플로
  
  ### 데이터 표시
  - **Level 1 대상**: 차트 · 테이블 컴포넌트
  - **Level 2 대상**: 데이터 조회 · 갱신, 필터링
  - **Level 3 대상**: 대시보드 전체 인터랙션
  ```
  
  #### 4.2.2 레벨별 테스트 계획 생성
  ```python
  class TestPlanGenerator:
      def generate_level_plans(self, analysis_result):
          """분석 결과에서 레벨별 테스트 계획 생성"""
          plans = {}
          
          for level in [1, 2, 3]:
              plans[f"level_{level}"] = {
                  "backend": self._generate_backend_plan(analysis_result, level),
                  "frontend": self._generate_frontend_plan(analysis_result, level),
                  "estimated_time": self._estimate_time(analysis_result, level),
                  "dependencies": self._identify_dependencies(analysis_result, level),
                  "risks": self._assess_level_risks(analysis_result, level)
              }
          
          return plans
      
      def _generate_backend_plan(self, analysis, level):
          """Backend용 레벨별 계획"""
          if level == 1:
              return {
                  "test_targets": analysis["backend_features"]["business_logic"],
                  "mock_dependencies": analysis["backend_features"]["external_dependencies"],
                  "test_count_estimate": len(analysis["backend_features"]["business_logic"]) * 3
              }
          elif level == 2:
              return {
                  "test_targets": analysis["integration_points"]["api_database"],
                  "real_dependencies": ["database", "test_services"],
                  "test_count_estimate": len(analysis["integration_points"]["api_database"]) * 2
              }
          # Level 3의 경우...
  ```
  
  ### 4.3 사용자 확인 · 선택 페이즈
  
  #### 4.3.1 테스트 계획 제시 포맷
  ```markdown
  # 테스트 실시 계획(사용자 확인용)
  
  ## 시스템 분석 결과 요약
  - **Backend 기능 수**: 15개
  - **Frontend 기능 수**: 12개  
  - **중요도 높은 기능**: 8개
  - **외부 연동 수**: 5개 서비스
  
  ## 레벨별 실시 계획
  
  ### Level 1 (Backend + Frontend Unit Tests)
  **추정 소요 시간**: 2–3일  
  **테스트 건수**: Backend 45건, Frontend 36건  
  **주요 대상 기능**:
  - ✅ 인증 로직 (Backend: JWT 토큰 생성, Frontend: 로그인 폼)
  - ✅ 사용자 관리 (Backend: 검증, Frontend: 사용자 목록)
  - ✅ 데이터 처리 (Backend: 계산 로직, Frontend: 차트 표시)
  
  **필요 환경**: 개발 환경만  
  **리스크**: 낮음
  
  ### Level 2 (Backend + Frontend Integration Tests)  
  **추정 소요 시간**: 3–5일  
  **테스트 건수**: Backend 30건, Frontend 24건  
  **주요 대상 기능**:
  - ✅ API + DB 연동 테스트
  - ✅ 외부 서비스 통합 테스트(모킹 환경)
  - ✅ 프론트엔드 상태 관리 + API 연동
  
  **필요 환경**: 테스트 DB, 모킹 서비스  
  **리스크**: 중간
  
  ### Level 3 (Backend + Frontend E2E Tests)
  **추정 소요 시간**: 5–7일  
  **테스트 건수**: Backend 20건, Frontend 15건  
  **주요 대상 기능**:
  - ✅ 완전한 사용자 플로우
  - ✅ 성능 테스트
  - ✅ 보안 테스트
  
  **필요 환경**: 스테이징 환경  
  **리스크**: 높음
  
  ## 권장 실행 순서
  1. **Level 1부터 시작** → 기초 품질 확보  
  2. **Level 2에서 통합 검증** → 서비스 간 연동 확인  
  3. **Level 3에서 최종 검증** → 운영 릴리스 전
  
  ## 사용자 선택 옵션
  - `"Level 1만 실시"` → 기본 품질 확보, 개발 단계용
  - `"Level 1-2 실시"` → 통합 품질 확보, 테스트 단계용
  - `"전 레벨 실시"` → 완전 품질 확보, 운영 릴리스용
  - `"커스텀 선택"` → 특정 기능 · 레벨 조합
  ```
  
  ## 5. 테스트 실행 플로우
  
  ### 4.1 단계적 실행 전략
  
  #### Level 1 실행 플로우
  ```mermaid
  graph TD
      A[구현 코드 분석] --> B[Backend Level 1 생성]
      A --> C[Frontend Level 1 생성]
      B --> D[Backend Unit 테스트 실행]
      C --> E[Frontend Unit 테스트 실행]
      D --> F[Level 1 통합 리포트]
      E --> F
      F --> G[Level 2 실행 판정]
  ```
  
  #### Level 2 실행 플로우
  ```mermaid
  graph TD
      A[Level 1 성공 확인] --> B[Backend Level 2 생성]
      A --> C[Frontend Level 2 생성]
      B --> D[Backend 통합 테스트 실행]
      C --> E[Frontend 통합 테스트 실행]
      D --> F[Level 2 통합 리포트]
      E --> F
      F --> G[Level 3 실행 판정]
  ```
  
  #### Level 3 실행 플로우
  ```mermaid
  graph TD
      A[Level 2 성공 확인] --> B[Backend Level 3 생성]
      A --> C[Frontend Level 3 생성]
      B --> D[Backend E2E 테스트 실행]
      C --> E[Frontend E2E 테스트 실행]
      D --> F[Level 3 통합 리포트]
      E --> F
      F --> G[종합 품질 평가]
  ```
  
  ## 5. 테스트 케이스 설계 방침
  
  ### 5.1 Level 1 테스트 케이스 설계
  
  #### Backend Level 1
  ```python
  class BackendLevel1Categories:
      BUSINESS_LOGIC = {
          "calculation_functions": "계산 · 변환 처리",
          "validation_logic": "검증(Validation) 처리", 
          "data_transformation": "데이터 변환 처리"
      }
      
      API_HANDLERS = {
          "request_processing": "요청 처리 로직(모킹 사용)",
          "response_formatting": "응답 포맷팅",
          "error_handling": "에러 핸들링"
      }
      
      SERVICE_METHODS = {
          "service_logic": "서비스 메서드 단위",
          "state_transitions": "상태 전이 로직",
          "business_rules": "비즈니스 규칙 검증"
      }
  ```
  
  #### Frontend Level 1
  ```typescript
  class FrontendLevel1Categories {
    COMPONENT_RENDERING = {
      "basic_rendering": "기본 렌더링 확인",
      "props_handling": "props 처리 확인",
      "conditional_rendering": "조건부 렌더링"
    }
    
    EVENT_HANDLING = {
      "click_events": "클릭 이벤트 처리",
      "form_submission": "폼 제출 처리",
      "input_validation": "입력값 검증"
    }
    
    CUSTOM_HOOKS = {
      "state_management": "상태 관리 훅",
      "data_fetching": "데이터 패칭 훅(모킹)",
      "side_effects": "부수효과 처리"
    }
  }
  ```
  
  ### 5.2 Level 2 테스트 케이스 설계
  
  #### Backend Level 2
  ```python
  class BackendLevel2Categories:
      API_DATABASE = {
          "crud_operations": "CRUD 동작의 완전성",
          "transaction_rollback": "트랜잭션 처리",
          "constraint_validation": "DB 제약 확인"
      }
      
      SERVICE_INTEGRATION = {
          "service_chaining": "서비스 간 연동",
          "async_processing": "비동기 처리 확인",
          "event_handling": "이벤트 처리"
      }
      
      EXTERNAL_API = {
          "third_party_integration": "외부 API 연동(테스트 환경)",
          "authentication": "인증 플로우",
          "rate_limiting": "레이트 리미트 대응"
      }
  ```
  
  #### Frontend Level 2
  ```typescript
  class FrontendLevel2Categories {
    COMPONENT_INTEGRATION = {
      "parent_child_communication": "부모-자식 컴포넌트 연동",
      "sibling_communication": "형제 컴포넌트 연동",
      "context_providers": "Context Provider 기능"
    }
    
    API_INTEGRATION = {
      "data_fetching": "데이터 패칭(MSW 사용)",
      "error_handling": "API 에러 핸들링",
      "loading_states": "로딩 상태 관리"
    }
    
    STATE_MANAGEMENT = {
      "redux_integration": "Redux 상태 관리",
      "local_storage": "로컬 스토리지",
      "routing": "라우팅 기능"
    }
  }
  ```
  
  ### 5.3 Level 3 테스트 케이스 설계
  
  #### Backend Level 3
  ```python
  class BackendLevel3Categories:
      COMPLETE_WORKFLOWS = {
          "user_registration": "사용자 가입 전체 플로우",
          "data_processing": "데이터 처리 파이프라인",
          "report_generation": "리포트 생성 처리"
      }
      
      PERFORMANCE = {
          "load_testing": "부하 테스트",
          "stress_testing": "스트레스 테스트",
          "scalability": "확장성 확인"
      }
      
      SECURITY = {
          "authentication_flow": "인증·인가 플로우",
          "data_protection": "데이터 보호 확인",
          "input_sanitization": "입력값 세니타이제이션"
      }
  ```
  
  #### Frontend Level 3
  ```typescript
  class FrontendLevel3Categories {
    USER_JOURNEYS = {
      "registration_flow": "사용자 가입 플로우",
      "login_logout": "로그인·로그아웃",
      "data_crud_flow": "데이터 CRUD 작업 플로우"
    }
    
    CROSS_BROWSER = {
      "chrome_testing": "Chrome 환경 테스트",
      "firefox_testing": "Firefox 환경 테스트",
      "safari_testing": "Safari 환경 테스트"
    }
    
    VISUAL_REGRESSION = {
      "component_screenshots": "컴포넌트 스크린샷",
      "page_screenshots": "페이지 전체 스크린샷",
      "responsive_testing": "반응형 테스트"
    }
  }
  ```
  
  ## 6. 품질 기준(레벨·영역별)
  
  ### 6.1 Backend 품질 기준
  
  | Level | 커버리지 목표 | 성공률 기준 | 실행 시간 제한 | 품질 지표 |
  |-------|---------------|------------|-------------|----------|
  | Backend L1 | 90%+ | 95%+ | 각 테스트 < 1초 | 로직 품질 |
  | Backend L2 | 80%+ | 90%+ | 각 테스트 < 30초 | 연동 품질 |
  | Backend L3 | 70%+ | 85%+ | 각 테스트 < 5분 | 시스템 품질 |
  
  ### 6.2 Frontend 품질 기준
  
  | Level | 커버리지 목표 | 성공률 기준 | 실행 시간 제한 | 품질 지표 |
  |-------|---------------|------------|-------------|----------|
  | Frontend L1 | 85%+ | 95%+ | 각 테스트 < 1초 | UI 품질 |
  | Frontend L2 | 75%+ | 90%+ | 각 테스트 < 15초 | UX 품질 |
  | Frontend L3 | 70%+ | 85%+ | 각 테스트 < 2분 | 엔드유저 품질 |
  
  ### 6.3 통합 품질 지표
  
  #### 시스템 전체 신뢰도 계산
  ```python
  def calculate_system_reliability():
      # Backend 가중치
      backend_l1_weight = 0.25  # Backend 기반 품질
      backend_l2_weight = 0.20  # Backend 통합 품질
      backend_l3_weight = 0.15  # Backend E2E 품질
      
      # Frontend 가중치
      frontend_l1_weight = 0.20  # Frontend 기반 품질
      frontend_l2_weight = 0.15  # Frontend 통합 품질
      frontend_l3_weight = 0.05  # Frontend E2E 품질
      
      total_reliability = (
          backend_l1_reliability * backend_l1_weight +
          backend_l2_reliability * backend_l2_weight +
          backend_l3_reliability * backend_l3_weight +
          frontend_l1_reliability * frontend_l1_weight +
          frontend_l2_reliability * frontend_l2_weight +
          frontend_l3_reliability * frontend_l3_weight
      )
      
      return total_reliability
  ```
  
  ## 7. 실행 스케줄
  
  ### 7.1 개발 페이즈 실행 계획
  
  #### Phase 1: Level 1 기반 구축(Week 1-2)
  ```yaml
  backend_level1:
    - pytest 환경 구축
    - 모의(Mock) 기능 구현
    - 유닛 테스트 스위트 작성
  
  frontend_level1:
    - Vitest + RTL 환경 구축
    - 컴포넌트 테스트 작성
    - 커스텀 훅 테스트
  ```
  
  #### Phase 2: Level 2 통합 구축(Week 3-4)
  ```yaml
  backend_level2:
    - TestContainers 환경 구축
    - 통합 테스트 스위트 작성
    - 테스트 데이터 관리
  
  frontend_level2:
    - MSW 환경 구축
    - API 통합 테스트 작성
    - 상태 관리 테스트
  ```
  
  #### Phase 3: Level 3 E2E 구축(Week 5-6)
  ```yaml
  backend_level3:
    - 스테이징 환경 구축
    - E2E 테스트 스위트 작성
    - 성능 테스트
  
  frontend_level3:
    - Playwright 환경 구축
    - 사용자 여정 테스트
    - 시각적 회귀 테스트
  ```
  
  ### 7.2 지속 실행 스케줄
  
  #### 일일 실행
  - Backend Level 1: 전 유닛 테스트
  - Frontend Level 1: 전 컴포넌트 테스트
  
  #### 주간 실행
  - Backend Level 2: 통합 테스트 스위트
  - Frontend Level 2: API 통합·상태 관리 테스트
  
  #### 릴리스 전 실행
  - Backend Level 3: 완전 E2E 테스트 스위트
  - Frontend Level 3: 완전 사용자 여정 테스트
  - 전 레벨: 종합 품질 확인
  
  ## 8. 실행 지시 형식
  
  ### 8.1 레벨·영역별 실행 지시
  
  #### Backend 전용 실행
  ```
  "Backend Level 1로 테스트 생성"
  "Backend Level 2로 테스트 생성"
  "Backend Level 3로 테스트 생성"
  ```
  
  #### Frontend 전용 실행
  ```
  "Frontend Level 1로 테스트 생성"
  "Frontend Level 2로 테스트 생성"
  "Frontend Level 3로 테스트 생성"
  ```
  
  #### 레벨별 풀스택 실행
  ```
  "Level 1로 전체 테스트 생성"  // Backend + Frontend Level 1
  "Level 2로 전체 테스트 생성"  // Backend + Frontend Level 2
  "Level 3로 전체 테스트 생성"  // Backend + Frontend Level 3
  ```
  
  #### 완전 실행
  ```
  "풀스택 테스트 생성"         // 전 레벨 × 전 영역
  "전 레벨로 테스트 생성"       // 단계적으로 전체
  ```
  
  ### 8.2 커스터마이즈 실행 지시
  
  #### 특정 조합
  ```
  "Backend Level 1-2 + Frontend Level 1로 테스트 생성"
  "Backend Level 3 + Frontend Level 1-2로 테스트 생성"
  ```
  
  ## 9. 리포트 생성 요건
  
  ### 9.1 레벨·영역별 리포트
  
  #### 개별 리포트
  - Backend Level 1 Report
  - Frontend Level 1 Report
  - Backend Level 2 Report
  - Frontend Level 2 Report
  - Backend Level 3 Report
  - Frontend Level 3 Report
  
  #### 통합 리포트
  - Level 1 Complete Report (Backend + Frontend)
  - Level 2 Complete Report (Backend + Frontend)
  - Level 3 Complete Report (Backend + Frontend)
  - Full Stack Summary Report
  
  ### 9.2 품질 대시보드
  
  ```markdown
  # 풀스택 품질 대시보드
  
  ## 개요
  | 영역 | Level 1 | Level 2 | Level 3 | 종합 |
  |------|---------|---------|---------|------|
  | Backend | ✅ 95% | ✅ 88% | ⚠️ 82% | 88% |
  | Frontend | ✅ 92% | ✅ 85% | ❌ 65% | 81% |
  | **시스템 전체** | **93%** | **87%** | **74%** | **85%** |
  
  ## 권장 개선 액션
  1. Frontend Level 3의 성공률 향상
  2. Backend Level 3의 실행 시간 단축
  3. 통합 테스트 케이스 추가
  ```
  
  ## 11. 실제 실행 절차
  
  ### 11.1 Phase 0: 시스템 분석 시작
  
  #### Step 1: 문서 제공
  다음 문서를 공유해 주세요:
  
  **필수 문서**:
  - 구현 코드(Backend/Frontend)
  - API 사양서(OpenAPI/Swagger 등)
  - 데이터베이스 설계서(ERD, DDL 등)
  
  **권장 문서**:
  - 시스템 설계서
  - 요구사항 정의서
  - 기존 테스트(있다면)
  
  #### Step 2: 자동 분석 실행
  ```
  "시스템 분석을 실행해 주세요"
  ```
  → 전체 문서를 분석하여 테스트 대상 기능을 식별
  
  #### Step 3: 테스트 계획 확인
  분석 결과에 기반해 레벨별 테스트 계획 제시
  → 사용자가 실행 레벨 선택
  
  ### 11.2 Phase 1: 테스트 생성·실행
  
  #### 사용자 선택에 따른 테스트 생성
  ```
  "Level 1로 실시"
  "Level 1-2로 실시"  
  "Backend Level 2만 실시"
  "인증 기능만 Level 1-3으로 실시"
  ```
  
  ### 11.3 실행 지시 예시
  
  #### 단계적 분석·실행
  ```bash
  # Step 1: 시스템 분석
  "시스템 분석을 실행해 주세요"
  
  # Step 2: 분석 결과 확인 후, 레벨 선택
  "Level 1로 실시해 주세요"
  "Level 2까지 실시해 주세요"
  "전 레벨로 실시해 주세요"
  
  # Step 3: 커스텀 선택(필요 시)
  "인증 기능과 사용자 관리 기능만 Level 1-2로 실시"
  "Backend Level 1-3 + Frontend Level 1-2로 실시"
  ```
  
  ---
  
  **준비 완료입니다. 먼저 시스템 분석부터 시작하겠습니다. 
  구현 코드, API 사양서, 데이터베이스 설계서를 공유해 주시면, 시스템 전반을 분석하여 구체적인 테스트 계획을 제시하겠습니다.**
  

                        

02-quality-assurance.md

경로 : .cursor/commands/6_testing/02-quality-assurance.md

  # 품질 보증·검증 프롬프트

  ## 목적
  
  본 시스템은 구현 계획서와 테스트 계획서의 품질 보증을 자동화하여, 설계 문서에서의 누락 사항이나 문서 간 정합성 문제를 조기에 발견·수정하는 것을 목적으로 합니다. 단계적 검증 프로세스를 통해 고품질의 개발 계획 수립을 지원합니다.
  
  ## 검증 프레임워크 개요
  
  ### 검증 페이즈 구성
  ```mermaid
  graph TD
      A[설계 문서군] --> B[Phase 1: 설계서 → 구현 계획서 검증]
      B --> C[Phase 2: 구현 계획서 → 테스트 계획서 검증]
      C --> D[Phase 3: 종합 정합성 검증]
      D --> E[품질 보증 리포트]
      
      A --> A1[API 설계서]
      A --> A2[DB 설계서]
      A --> A3[상세 설계서]
      A --> A4[요구사항 정의서]
      
      B --> B1[구조 정합성 검증]
      B --> B2[기능 망라성 검증]
      B --> B3[기술 정합성 검증]
      
      C --> C1[테스트 대상 망라성 검증]
      C --> C2[테스트 레벨 타당성 검증]
      C --> C3[품질 기준 정합성 검증]
      
      D --> D1[전체 일관성 확인]
      D --> D2[의존관계 검증]
      D --> D3[리스크 평가]
  ```
  
  ### 품질 게이트 기준
  ```yaml
  quality_gates:
    phase1_pass_criteria:
      structural_consistency: ">= 95%"
      functional_coverage: ">= 90%"
      technical_alignment: ">= 85%"
      critical_issues: "0건"
      
    phase2_pass_criteria:
      test_coverage: ">= 90%"
      level_appropriateness: ">= 85%"
      quality_standard_alignment: ">= 90%"
      critical_issues: "0건"
      
    phase3_pass_criteria:
      overall_consistency: ">= 85%"
      dependency_integrity: ">= 90%"
      risk_assessment: "Low 리스크 이하"
      blocking_issues: "0건"
  ```
  
  ## Phase 1: 설계서 → 구현 계획서 검증
  
  ### 1.1 API 설계서 정합성 검증
  
  #### 검증 체크리스트
  ```markdown
  ### API 설계서 정합성 검증 [ ] 0/20항목 완료 (0%)
  
  #### 엔드포인트 망라성 [ ] 0/5항목 완료
  - [ ] 모든 REST 엔드포인트가 구현 계획에 포함되어 있다
  - [ ] HTTP 메서드(GET/POST/PUT/DELETE)가 올바르게 계획되어 있다
  - [ ] Path 파라미터·Query 파라미터가 고려되어 있다
  - [ ] 요청/응답 스키마가 구현 계획에 반영되어 있다
  - [ ] 엔드포인트 간 의존관계가 정리되어 있다
  
  #### 인증·인가 요건 [ ] 0/4항목 완료
  - [ ] 인증이 필요한 엔드포인트가 식별되어 있다
  - [ ] 권한 레벨(admin/user/guest 등)이 구현 계획에 포함되어 있다
  - [ ] JWT 토큰 처리 로직이 계획되어 있다
  - [ ] 세션 관리 방식이 정의되어 있다
  
  #### 데이터 검증·에러 처리 [ ] 0/6항목 완료
  - [ ] 입력값 밸리데이션 규칙이 구현 계획에 포함되어 있다
  - [ ] 필수/옵셔널 필드가 명확하다
  - [ ] 에러 응답 형식(4xx/5xx)이 정의되어 있다
  - [ ] 비즈니스 에러/시스템 에러 분류가 명확하다
  - [ ] Rate Limit/스로틀링 대응이 계획되어 있다
  - [ ] CORS 설정이 고려되어 있다
  
  #### API 사양 구현 상세 [ ] 0/5항목 완료
  - [ ] OpenAPI/Swagger 사양의 전 항목이 구현 계획에서 커버된다
  - [ ] API 버저닝 전략이 정의되어 있다
  - [ ] 비동기 처리(WebSocket/SSE 등)가 적절히 계획되어 있다
  - [ ] 파일 업로드·다운로드 처리가 포함되어 있다
  - [ ] API 모니터링·로그 출력 요건이 정의되어 있다
  ```
  
  #### 자동 검증 룰
  ```python
  class APIDesignValidation:
      def validate_endpoint_coverage(self, api_spec, implementation_plan):
          """엔드포인트 망라성 자동 검증"""
          missing_endpoints = []
          api_endpoints = self._extract_endpoints(api_spec)
          planned_endpoints = self._extract_planned_endpoints(implementation_plan)
          
          for endpoint in api_endpoints:
              if not self._endpoint_exists_in_plan(endpoint, planned_endpoints):
                  missing_endpoints.append({
                      "endpoint": endpoint,
                      "method": endpoint.method,
                      "path": endpoint.path,
                      "severity": "critical"
                  })
          
          return {
              "coverage_rate": len(planned_endpoints) / len(api_endpoints),
              "missing_endpoints": missing_endpoints,
              "status": "pass" if len(missing_endpoints) == 0 else "fail"
          }
      
      def validate_schema_alignment(self, api_spec, implementation_plan):
          """스키마 정합성 자동 검증"""
          schema_issues = []
          
          for endpoint in api_spec.endpoints:
              planned_handler = self._find_planned_handler(endpoint, implementation_plan)
              if planned_handler:
                  # 요청 스키마 검증
                  if not self._request_schema_matches(endpoint.request_schema, planned_handler.input_schema):
                      schema_issues.append({
                          "endpoint": endpoint.path,
                          "issue": "request_schema_mismatch",
                          "severity": "high"
                      })
                  
                  # 응답 스키마 검증
                  if not self._response_schema_matches(endpoint.response_schema, planned_handler.output_schema):
                      schema_issues.append({
                          "endpoint": endpoint.path,
                          "issue": "response_schema_mismatch", 
                          "severity": "high"
                      })
          
          return {
              "schema_alignment_rate": self._calculate_alignment_rate(schema_issues),
              "schema_issues": schema_issues,
              "status": "pass" if len(schema_issues) == 0 else "fail"
          }
  ```
  
  ### 1.2 데이터베이스 설계서 정합성 검증
  
  #### 검증 체크리스트
  ```markdown
  ### 데이터베이스 설계서 정합성 검증 [ ] 0/18항목 완료 (0%)
  
  #### 테이블·모델 정의 [ ] 0/6항목 완료
  - [ ] 모든 테이블에 대응하는 모델 클래스가 구현 계획에 포함되어 있다
  - [ ] 모든 컬럼이 모델 속성으로 정의되어 있다
  - [ ] 데이터 타입(VARCHAR/INT/DATETIME 등)이 적절히 매핑되어 있다
  - [ ] NULL 허용/NOT NULL 제약이 구현 계획에 반영되어 있다
  - [ ] 기본값 설정이 고려되어 있다
  - [ ] 계산 필드·가상 컬럼이 적절히 계획되어 있다
  
  #### 제약·관계성 [ ] 0/6항목 완료
  - [ ] 기본 키 제약이 구현 계획에 포함되어 있다
  - [ ] 외래 키 제약·참조 정합성이 고려되어 있다
  - [ ] 유니크 제약이 구현 계획에 반영되어 있다
  - [ ] 체크 제약·업무 규칙 제약이 포함되어 있다
  - [ ] 테이블 간 관계(1:1/1:N/N:N)가 올바르게 계획되어 있다
  - [ ] Cascade 삭제·갱신 규칙이 정의되어 있다
  
  #### 인덱스·성능 [ ] 0/3항목 완료
  - [ ] 성능 요건에 기반한 인덱스 설계가 포함되어 있다
  - [ ] 복합 인덱스·부분 인덱스가 적절히 계획되어 있다
  - [ ] 쿼리 최적화 전략이 구현 계획에 포함되어 있다
  
  #### 마이그레이션·운영 [ ] 0/3항목 완료
  - [ ] 스키마 변경 마이그레이션 계획이 포함되어 있다
  - [ ] 초기 데이터 투입·마스터 데이터 관리가 계획되어 있다
  - [ ] 백업·복구 전략이 고려되어 있다
  ```
  
  #### 자동 검증 룰
  ```python
  class DatabaseDesignValidation:
      def validate_table_model_mapping(self, db_schema, implementation_plan):
          """테이블·모델 매핑 자동 검증"""
          mapping_issues = []
          
          for table in db_schema.tables:
              model = self._find_corresponding_model(table, implementation_plan)
              if not model:
                  mapping_issues.append({
                      "table": table.name,
                      "issue": "missing_model",
                      "severity": "critical"
                  })
                  continue
              
              # 컬럼·속성 매핑 검증
              for column in table.columns:
                  if not self._column_mapped_to_attribute(column, model):
                      mapping_issues.append({
                          "table": table.name,
                          "column": column.name,
                          "issue": "missing_attribute",
                          "severity": "high"
                      })
          
          return {
              "mapping_coverage": self._calculate_mapping_coverage(mapping_issues),
              "mapping_issues": mapping_issues,
              "status": "pass" if len([i for i in mapping_issues if i["severity"] == "critical"]) == 0 else "fail"
          }
      
      def validate_constraint_implementation(self, db_schema, implementation_plan):
          """제약 구현 자동 검증"""
          constraint_issues = []
          
          for table in db_schema.tables:
              model = self._find_corresponding_model(table, implementation_plan)
              if model:
                  # 외래 키 제약 검증
                  for fk in table.foreign_keys:
                      if not self._foreign_key_implemented(fk, model):
                          constraint_issues.append({
                              "table": table.name,
                              "constraint": f"FK_{fk.column}",
                              "issue": "missing_foreign_key_implementation",
                              "severity": "high"
                          })
                  
                  # 유니크 제약 검증
                  for unique in table.unique_constraints:
                      if not self._unique_constraint_implemented(unique, model):
                          constraint_issues.append({
                              "table": table.name,
                              "constraint": f"UNIQUE_{unique.columns}",
                              "issue": "missing_unique_constraint",
                              "severity": "medium"
                          })
          
          return {
              "constraint_coverage": self._calculate_constraint_coverage(constraint_issues),
              "constraint_issues": constraint_issues,
              "status": "pass" if len([i for i in constraint_issues if i["severity"] == "high"]) == 0 else "fail"
          }
  ```
  
  ### 1.3 상세 설계서 정합성 검증
  
  #### 검증 체크리스트
  ```markdown
  ### 상세 설계서 정합성 검증 [ ] 0/16항목 완료 (0%)
  
  #### 비즈니스 로직 구현 [ ] 0/6항목 완료
  - [ ] 모든 비즈니스 룰이 구현 계획에 포함되어 있다
  - [ ] 계산 로직·알고리즘이 상세화되어 있다
  - [ ] 상태 전이 로직이 구현 계획에 반영되어 있다
  - [ ] 밸리데이션 룰·업무 제약이 포함되어 있다
  - [ ] 워크플로우·승인 프로세스가 계획되어 있다
  - [ ] 예외 처리·에러 핸들링 전략이 정의되어 있다
  
  #### 비기능 요건 대응 [ ] 0/5항목 완료
  - [ ] 성능 요건(응답 시간/처리량)이 고려되어 있다
  - [ ] 확장성 요건이 구현 계획에 반영되어 있다
  - [ ] 보안 요건(암호화/접근 제어)이 포함되어 있다
  - [ ] 가용성·신뢰성 요건이 계획되어 있다
  - [ ] 감사·로그 요건이 구현 계획에 포함되어 있다
  
  #### 외부 시스템 연계 [ ] 0/5항목 완료
  - [ ] 외부 API 연계 사양이 구현 계획에 포함되어 있다
  - [ ] 인증 방식(OAuth/API Key 등)이 정의되어 있다
  - [ ] 데이터 변환·매핑 룰이 계획되어 있다
  - [ ] 에러 핸들링·재시도 전략이 포함되어 있다
  - [ ] 외부 시스템 장애 시 대체 처리(폴백)가 계획되어 있다
  ```
  
  ## Phase 2: 구현 계획서 → 테스트 계획서 검증
  
  ### 2.1 테스트 대상 망라성 검증
  
  #### 검증 체크리스트
  ```markdown
  ### 테스트 대상 망라성 검증 [ ] 0/15항목 완료 (0%)
  
  #### Backend 기능 테스트 망라성 [ ] 0/5항목 완료
  - [ ] 구현 계획의 모든 API 엔드포인트에 테스트가 정의되어 있다
  - [ ] 모든 비즈니스 로직·서비스 클래스에 유닛 테스트가 계획되어 있다
  - [ ] 데이터베이스 조작(CRUD)에 테스트가 포함되어 있다
  - [ ] 외부 시스템 연계에 대한 모의(Mock)·통합 테스트가 계획되어 있다
  - [ ] 에러 핸들링·예외 처리에 테스트가 포함되어 있다
  
  #### Frontend 기능 테스트 망라성 [ ] 0/5항목 완료
  - [ ] 구현 계획의 모든 컴포넌트에 테스트가 정의되어 있다
  - [ ] 모든 페이지·화면에 테스트가 계획되어 있다
  - [ ] 사용자 인터랙션(클릭/입력 등)에 대한 테스트가 포함되어 있다
  - [ ] 상태 관리·데이터 플로우에 테스트가 계획되어 있다
  - [ ] API 연계·비동기 처리에 테스트가 포함되어 있다
  
  #### 통합·E2E 기능 테스트 망라성 [ ] 0/5항목 완료
  - [ ] 구현 계획의 주요 사용자 플로우에 E2E 테스트가 정의되어 있다
  - [ ] 시스템 간 연계에 테스트가 계획되어 있다
  - [ ] 인증·인가 플로우에 테스트가 포함되어 있다
  - [ ] 데이터 정합성·트랜잭션 처리에 테스트가 계획되어 있다
  - [ ] 성능·부하 테스트가 적절히 계획되어 있다
  ```
  
  #### 자동 검증 룰
  ```python
  class TestCoverageValidation:
      def validate_backend_test_coverage(self, implementation_plan, test_plan):
          """Backend 테스트 망라성 자동 검증"""
          coverage_gaps = []
          
          # API 엔드포인트 테스트 망라성
          implemented_apis = self._extract_implemented_apis(implementation_plan)
          tested_apis = self._extract_tested_apis(test_plan)
          
          for api in implemented_apis:
              if not self._api_has_tests(api, tested_apis):
                  coverage_gaps.append({
                      "type": "api_endpoint",
                      "item": f"{api.method} {api.path}",
                      "missing_test_levels": self._identify_missing_test_levels(api, test_plan),
                      "severity": "high"
                  })
          
          # 비즈니스 로직 테스트 망라성
          business_logic = self._extract_business_logic(implementation_plan)
          tested_logic = self._extract_tested_logic(test_plan)
          
          for logic in business_logic:
              if not self._logic_has_tests(logic, tested_logic):
                  coverage_gaps.append({
                      "type": "business_logic",
                      "item": logic.name,
                      "missing_test_levels": ["level1"],
                      "severity": "medium"
                  })
          
          return {
              "coverage_rate": self._calculate_coverage_rate(coverage_gaps, implemented_apis + business_logic),
              "coverage_gaps": coverage_gaps,
              "status": "pass" if len([g for g in coverage_gaps if g["severity"] == "high"]) == 0 else "fail"
          }
      
      def validate_frontend_test_coverage(self, implementation_plan, test_plan):
          """Frontend 테스트 망라성 자동 검증"""
          coverage_gaps = []
          
          # 컴포넌트 테스트 망라성
          implemented_components = self._extract_implemented_components(implementation_plan)
          tested_components = self._extract_tested_components(test_plan)
          
          for component in implemented_components:
              if not self._component_has_tests(component, tested_components):
                  coverage_gaps.append({
                      "type": "component",
                      "item": component.name,
                      "missing_test_levels": self._identify_missing_component_tests(component, test_plan),
                      "severity": "high"
                  })
          
          # 사용자 플로우 테스트 망라성
          user_flows = self._extract_user_flows(implementation_plan)
          tested_flows = self._extract_tested_flows(test_plan)
          
          for flow in user_flows:
              if not self._flow_has_e2e_tests(flow, tested_flows):
                  coverage_gaps.append({
                      "type": "user_flow",
                      "item": flow.name,
                      "missing_test_levels": ["level3"],
                      "severity": "medium"
                  })
          
          return {
              "coverage_rate": self._calculate_coverage_rate(coverage_gaps, implemented_components + user_flows),
              "coverage_gaps": coverage_gaps,
              "status": "pass" if len([g for g in coverage_gaps if g["severity"] == "high"]) == 0 else "fail"
          }
  ```
  
  ### 2.2 테스트 레벨 타당성 검증
  
  #### 검증 체크리스트
  ```markdown
  ### 테스트 레벨 타당성 검증 [ ] 0/12항목 완료 (0%)
  
  #### Level 1 (Unit/Mock) 타당성 [ ] 0/4항목 완료
  - [ ] 순수 함수·계산 로직이 적절히 Level 1로 분류되어 있다
  - [ ] 외부 의존이 없는 컴포넌트가 Level 1에 포함되어 있다
  - [ ] 모의(Mock) 대상 외부 의존관계가 명확히 정의되어 있다
  - [ ] Level 1 테스트 실행 시간이 적절(<1초/테스트)하게 설정되어 있다
  
  #### Level 2 (Integration) 타당성 [ ] 0/4항목 완료
  - [ ] API + DB 연계가 Level 2에 적절히 분류되어 있다
  - [ ] 컴포넌트 간 연계가 Level 2에 포함되어 있다
  - [ ] 외부 서비스 통합(테스트 환경)이 Level 2에 계획되어 있다
  - [ ] Level 2 테스트 실행 시간이 적절(<30초/테스트)하게 설정되어 있다
  
  #### Level 3 (E2E) 타당성 [ ] 0/4항목 완료
  - [ ] 완전한 사용자 플로우가 Level 3에 적절히 분류되어 있다
  - [ ] 시스템 전체 동작 확인이 Level 3에 포함되어 있다
  - [ ] 실서비스 유사 환경에서의 테스트가 Level 3에 계획되어 있다
  - [ ] Level 3 테스트 실행 시간이 적절(<5분/테스트)하게 설정되어 있다
  ```
  
  ### 2.3 품질 기준 정합성 검증
  
  #### 검증 체크리스트
  ```markdown
  ### 품질 기준 정합성 검증 [ ] 0/10항목 완료 (0%)
  
  #### 테스트 환경 정합성 [ ] 0/3항목 완료
  - [ ] 구현에 사용하는 기술 스택이 테스트 환경에서 고려되어 있다
  - [ ] 데이터베이스·스토리지 요건이 테스트 환경에 반영되어 있다
  - [ ] 외부 서비스 의존의 모의(Mock) 전략이 적절히 정의되어 있다
  
  #### 성능 기준 정합성 [ ] 0/4항목 완료
  - [ ] 구현 계획의 성능 요건이 테스트 기준에 반영되어 있다
  - [ ] 부하 테스트·스트레스 테스트 기준이 적절히 설정되어 있다
  - [ ] 응답 시간·처리량 목표가 명확히 정의되어 있다
  - [ ] 스케일러빌리티 테스트 기준이 구현 요건과 일치한다
  
  #### 보안 기준 정합성 [ ] 0/3항목 완료
  - [ ] 구현 계획의 보안 요건이 테스트 항목에 포함되어 있다
  - [ ] 인증·인가 테스트가 적절히 계획되어 있다
  - [ ] 취약점 테스트·침투 테스트가 포함되어 있다
  ```
  
  ## Phase 3: 종합 정합성 검증
  
  ### 3.1 전체 일관성 확인
  
  #### 검증 체크리스트
  ```markdown
  ### 전체 일관성 확인 [ ] 0/12항목 완료 (0%)
  
  #### 아키텍처 일관성 [ ] 0/4항목 완료
  - [ ] 설계서의 아키텍처 패턴이 구현 계획에 일관되게 반영되어 있다
  - [ ] 레이어 분리(프레젠테이션/비즈니스/데이터)가 적절히 유지되어 있다
  - [ ] 기술 스택 선택이 전체 설계와 일치한다
  - [ ] 보안 아키텍처가 일관되게 적용되어 있다
  
  #### 데이터 플로우 일관성 [ ] 0/4항목 완료
  - [ ] 설계서의 데이터 플로우가 구현·테스트 계획과 일관된다
  - [ ] 입력 검증·데이터 변환 처리가 적절히 계획되어 있다
  - [ ] 데이터 영속화·캐시 전략이 일관된다
  - [ ] 데이터 보안·프라이버시 요건이 일관되게 적용되어 있다
  
  #### 품질 요건 일관성 [ ] 0/4항목 완료
  - [ ] 비기능 요건이 구현·테스트 계획 전반에서 일관되게 고려되어 있다
  - [ ] 성능 목표가 구현·테스트 전반에서 일치한다
  - [ ] 가용성·신뢰성 요건이 일관되게 계획되어 있다
  - [ ] 운영·유지보수 요건이 적절히 반영되어 있다
  ```
  
  ### 3.2 의존관계 검증
  
  #### 검증 체크리스트
  ```markdown
  ### 의존관계 검증 [ ] 0/9항목 완료 (0%)
  
  #### 구현 의존관계 [ ] 0/3항목 완료
  - [ ] 컴포넌트 간 의존관계가 구현 계획에서 적절히 관리되고 있다
  - [ ] 외부 라이브러리·서비스 의존이 명확히 정의되어 있다
  - [ ] 순환 의존·부적절한 의존관계가 존재하지 않는다
  
  #### 테스트 의존관계 [ ] 0/3항목 완료
  - [ ] 테스트 실행 순서·의존관계가 적절히 정의되어 있다
  - [ ] 테스트 데이터·환경의 의존관계가 관리되고 있다
  - [ ] 테스트 레벨 간 의존관계가 적절히 설계되어 있다
  
  #### 배포 의존관계 [ ] 0/3항목 완료
  - [ ] 구현 컴포넌트의 배포 순서가 고려되어 있다
  - [ ] DB 마이그레이션·초기화 의존관계가 정의되어 있다
  - [ ] 환경 간(개발/테스트/운영) 의존관계가 관리되고 있다
  ```
  
  ## 검증 실행·리포트 생성
  
  ### 실행 지시 형식
  
  #### 단계별 검증 실행
  ```bash
  # Phase 1: 설계서 → 구현 계획서 검증
  "설계서와 구현 계획서의 정합성을 검증해 주세요"
  "API 설계서와의 정합성만 검증해 주세요"
  "데이터베이스 설계서와의 정합성만 검증해 주세요"
  
  # Phase 2: 구현 계획서 → 테스트 계획서 검증
  "구현 계획서와 테스트 계획서의 정합성을 검증해 주세요"
  "테스트 대상 망라성만 검증해 주세요"
  "테스트 레벨 타당성만 검증해 주세요"
  
  # Phase 3: 종합 정합성 검증
  "전체 정합성을 검증해 주세요"
  "의존관계만 검증해 주세요"
  
  # 완전 검증
  "설계서부터 구현·테스트 계획서까지 완전 검증해 주세요"
  ```
  
  #### 커스텀 검증 실행
  ```bash
  # 특정 영역만
  "Backend 구현 계획의 정합성만 검증해 주세요"
  "Frontend 구현 계획의 정합성만 검증해 주세요"
  "인증 기능의 구현·테스트 정합성을 검증해 주세요"
  
  # 특정 품질 관점만
  "보안 요건의 정합성을 검증해 주세요"
  "성능 요건의 정합성을 검증해 주세요"
  ```
  
  ### 검증 리포트 형식
  
  #### 임원용 요약(Executive Summary)
  ```markdown
  # 품질 보증 검증 리포트 - YYYY/MM/DD
  
  ## 📊 종합 평가 요약
  | 검증 페이즈 | 정합성 점수 | High 문제(중요) | Medium 문제 | 종합 판정 |
  |---|---|---|---|---|
  | Phase 1: 설계 → 구현 | 88% | 2건 | 5건 | ⚠️ 수정 필요 |
  | Phase 2: 구현 → 테스트 | 92% | 0건 | 3건 | ✅ 합격 |
  | Phase 3: 종합 정합성 | 85% | 1건 | 2건 | ⚠️ 수정 필요 |
  | **전체 평가** | **88%** | **3건** | **10건** | **⚠️ 수정 후 재검증** |
  
  ## 🚨 중요(High/Critical) 이슈
  1. **API 설계서**: 사용자 관리 API 3개 엔드포인트가 구현 계획에 누락
  2. **DB 설계**: 외래 키 제약 5건이 구현 계획에서 미반영
  3. **의존관계**: 인증 서비스 ↔ 파일 관리 서비스 간 순환 의존
  
  ## ⚠️ 중간급(Medium) 이슈
  1. **테스트 망라성**: Frontend Level 2 상태관리 테스트 부족
  2. **성능**: 부하 테스트 기준이 구현 요건과 불일치
  3. **보안**: 입력값 검증 테스트 일부 부족
  
  ## 📈 품질 개선 권고
  1. API 설계서 재점검 및 구현 계획 반영
  2. 데이터베이스 제약 구현 계획에 추가
  3. 테스트 계획의 망라성 보강
  
  ## 🎯 다음 단계
  1. High/Critical 이슈 수정(추정 공수: 2일)
  2. 수정 후 부분 재검증
  3. 전체 재검증 및 최종 승인
  ```
  
  #### 상세 검증 결과
  ```markdown
  ## 상세 검증 결과
  
  ### Phase 1: 설계서 → 구현 계획서 검증
  
  #### API 설계서 정합성 검증 [⚠️] 15/20항목 완료 (75%)
  
  ##### 엔드포인트 망라성 [❌] 2/5항목 완료 (40%)
  - [❌] 모든 REST 엔드포인트가 구현 계획에 포함되어 있다
    - **문제**: 아래 3개 엔드포인트가 구현 계획에 누락
      - `GET /api/users/{id}/profile` 
      - `PUT /api/users/{id}/settings`
      - `DELETE /api/users/{id}`
    - **영향**: 사용자 관리 기능 구현의 불완전
    - **수정안**: `backend/app/api/users.py` 구현 계획에 상기 3개 엔드포인트 추가
  
  - [✅] HTTP 메서드(GET/POST/PUT/DELETE)가 올바르게 계획되어 있다
  - [⚠️] Path·Query 파라미터가 고려되어 있다
    - **문제**: 페이지네이션 쿼리 파라미터(page, limit) 처리가 구현 계획에서 불명확
    - **수정안**: API 핸들러의 페이지네이션 처리 로직 명확화
  
  ##### 인증·인가 요건 [✅] 4/4항목 완료 (100%)
  - [✅] 인증 필요 엔드포인트 식별
  - [✅] 권한 레벨 포함
  - [✅] JWT 처리 로직 계획
  - [✅] 세션 관리 방식 정의
  
  #### 데이터베이스 설계서 정합성 검증 [⚠️] 12/18항목 완료 (67%)
  
  ##### 제약·관계성 [❌] 1/6항목 완료 (17%)
  - [✅] 기본 키 제약 포함
  - [❌] 외래 키 제약·참조 정합성 고려
    - **문제**: 다음 외래 키 제약이 구현 계획에서 미반영
      - `files.user_id -> users.id`
      - `file_shares.file_id -> files.id`
      - `file_shares.user_id -> users.id`
      - `folders.parent_id -> folders.id`
      - `folders.user_id -> users.id`
    - **영향**: 데이터 정합성 저하, 고립 레코드 발생 위험
    - **수정안**: `backend/app/models/schemas.py`에 ForeignKey 필드 추가
  
  ### Phase 2: 구현 계획서 → 테스트 계획서 검증
  
  #### 테스트 대상의 커버리지 검증 [✅] 13/15항목 완료 (87%)
  
  ##### Frontend 기능 테스트 커버리지 [⚠️] 4/5항목 완료 (80%)
  - [✅] 구현 계획의 모든 컴포넌트에 테스트가 정의되어 있음  
  - [✅] 모든 페이지 및 화면에 대한 테스트가 계획되어 있음  
  - [✅] 사용자 인터랙션(클릭/입력 등)에 대한 테스트 포함  
  - [⚠️] 상태 관리 및 데이터 플로우 테스트 계획 부족  
    - **문제**: Zustand 상태 스토어의 Level 2 통합 테스트 부족  
    - **수정안**: `frontend/src/stores/` 내 각 스토어에 대한 통합 테스트 추가  
  - [✅] API 연동 및 비동기 처리 테스트 포함  
  ```
  
  #### 개선 제안 생성
  ```python
  class ImprovementSuggestionGenerator:
      def generate_suggestions(self, validation_results):
          """검증 결과로부터 개선 제안 생성"""
          suggestions = []
          
          for issue in validation_results.get_critical_issues():
              suggestion = {
                  "issue_id": issue.id,
                  "title": issue.title,
                  "severity": issue.severity,
                  "affected_components": issue.affected_components,
                  "root_cause": self._analyze_root_cause(issue),
                  "solution_options": self._generate_solution_options(issue),
                  "estimated_effort": self._estimate_effort(issue),
                  "dependencies": self._identify_dependencies(issue),
                  "risk_if_not_fixed": self._assess_risk(issue)
              }
              suggestions.append(suggestion)
          
          return self._prioritize_suggestions(suggestions)
      
      def _generate_solution_options(self, issue):
          """문제에 대한 해결 옵션 생성"""
          if issue.type == "missing_api_endpoint":
              return [
                  {
                      "option": "구현 계획에 추가",
                      "description": "API 설계서를 기반으로 엔드포인트를 구현 계획에 추가",
                      "effort": "낮음",
                      "risk": "낮음"
                  },
                  {
                      "option": "API 설계서 수정",
                      "description": "불필요한 엔드포인트를 API 설계서에서 제거",
                      "effort": "낮음",
                      "risk": "중간 (요구사항 확인 필요)"
                  }
              ]
          elif issue.type == "missing_foreign_key":
              return [
                  {
                      "option": "모델에 ForeignKey 추가",
                      "description": "Django 모델에 적절한 ForeignKey 필드 추가",
                      "effort": "중간",
                      "risk": "낮음"
                  },
                  {
                      "option": "DB 제약조건만 추가",
                      "description": "마이그레이션으로 제약조건만 추가하고 애플리케이션 레벨에서 관리",
                      "effort": "낮음",
                      "risk": "중간 (데이터 정합성 관리 복잡)"
                  }
              ]
  ```
  
  ### 품질 게이트 판정
  
  #### 자동 판정 규칙
  ```python
  class QualityGateJudgment:
      def evaluate_overall_quality(self, validation_results):
          """전체 품질 평가 및 다음 단계 판정"""
          
          # 심각도별 문제 카운트
          critical_issues = len(validation_results.get_issues_by_severity("critical"))
          high_issues = len(validation_results.get_issues_by_severity("high"))
          medium_issues = len(validation_results.get_issues_by_severity("medium"))
          
          # 단계별 점수
          phase1_score = validation_results.get_phase_score(1)
          phase2_score = validation_results.get_phase_score(2)
          phase3_score = validation_results.get_phase_score(3)
          
          # 종합 판정
          if critical_issues > 0:
              return {
                  "status": "BLOCKED",
                  "message": "Critical 등급 문제가 존재하여 구현 시작 불가",
                  "required_actions": ["Critical 문제 수정", "부분 재검증"],
                  "estimated_fix_time": self._estimate_critical_fix_time(critical_issues)
              }
          elif high_issues > 5 or phase1_score < 80:
              return {
                  "status": "MAJOR_REVISION_REQUIRED", 
                  "message": "High 등급 문제 다수 발생, 대규모 수정 필요",
                  "required_actions": ["High 문제 수정", "설계서 재검토", "전체 재검증"],
                  "estimated_fix_time": self._estimate_major_fix_time(high_issues)
              }
          elif high_issues > 0 or phase1_score < 90:
              return {
                  "status": "MINOR_REVISION_REQUIRED",
                  "message": "경미한 수정 후 구현 가능", 
                  "required_actions": ["High 문제 수정", "부분 재검증"],
                  "estimated_fix_time": self._estimate_minor_fix_time(high_issues)
              }
          else:
              return {
                  "status": "APPROVED",
                  "message": "품질 기준을 충족, 구현 시작 가능",
                  "required_actions": ["구현 시작"],
                  "next_checkpoint": "구현 완료 후 테스트 실행"
              }
  ```
  
  ## 지속적 품질 관리
  
  ### 정기 검증 스케줄
  
  #### 개발 단계별 검증
  ```yaml
  development_phase_validation:
    design_phase:
      - trigger: "설계서 업데이트 시"
      - validation: "Phase 1만"
      - frequency: "즉시"
      
    implementation_planning:
      - trigger: "구현 계획서 작성/업데이트 시"
      - validation: "Phase 1-2"
      - frequency: "계획 변경 시마다"
      
    test_planning:
      - trigger: "테스트 계획서 작성/업데이트 시"
      - validation: "Phase 2-3"
      - frequency: "계획 변경 시마다"
      
    implementation_start:
      - trigger: "구현 시작 전"
      - validation: "전체 Phase"
      - frequency: "시작 전 필수"
      
    milestone_checkpoints:
      - trigger: "개발 마일스톤 도달 시"
      - validation: "전체 Phase"
      - frequency: "주간"
  ```
  
  ### 품질 메트릭 모니터링
  
  #### KPI 정의
  ```yaml
  quality_kpis:
    consistency_metrics:
      - design_implementation_alignment: ">= 90%"
      - implementation_test_alignment: ">= 85%"
      - overall_consistency_score: ">= 85%"
      
    coverage_metrics:
      - api_coverage_rate: ">= 95%"
      - database_coverage_rate: ">= 90%"
      - test_coverage_rate: ">= 90%"
      
    issue_metrics:
      - critical_issues: "0건"
      - high_severity_issues: "<= 3건"
      - issue_resolution_time: "<= 2일"
      
    process_metrics:
      - validation_execution_time: "<= 30분"
      - false_positive_rate: "<= 5%"
      - user_satisfaction_score: ">= 4.0/5.0"
  ```
  
  ## 요약
  
  이 품질 보증 시스템을 통해:
  
  1. **누락 방지**: 설계서 요구사항이 구현 및 테스트 계획에 정확히 반영됨
  2. **정합성 보장**: 문서 간 불일치가 조기에 발견되고 수정됨
  3. **품질 향상**: 단계별 검증으로 고품질의 개발 계획 수립 가능
  4. **효율화**: 자동 검증으로 수동 리뷰 부담 감소
  5. **지속적 개선**: 정기 품질 모니터링을 통해 개발 프로세스 지속 개선
  
  이 시스템을 활용하면 설계부터 구현, 테스트까지 일관된 품질 보증 체계를 구축할 수 있으며, 프로젝트의 성공 확률이 크게 향상됩니다.

                        
All Rights Reserved by JAEWOO, KIM. © 2026 MDRULES Development.