Skip to content

Latest commit

 

History

History
125 lines (99 loc) · 4.56 KB

File metadata and controls

125 lines (99 loc) · 4.56 KB

ITZeep Backend Test Coverage Progress

목표

  • 타겟 커버리지: 70%
  • 현재 커버리지: 14% (6,420/44,567 instructions)
  • 필요한 추가 커버리지: 56% (약 24,777 instructions 추가)

전체 진행 상황

✅ 완료된 테스트

  1. NotificationServiceImplTest - 21개 테스트 케이스

    • 모든 public 메서드 1:1 매핑 완료
    • 채팅 알림, 삭제, 읽음 처리 등 완전 커버
  2. PreContractDataServiceImplTest - 9개 테스트 케이스

    • fetchOwnerData, fetchTenantData, fetchOcrData 메서드 완전 커버
    • 예외 처리 케이스 포함
  3. MyPageServiceImplTest - 15개 테스트 케이스

    • 사용자 정보, 프로필 이미지, 닉네임, 알림 설정 등 완전 커버
    • 6개 주요 메서드 1:1 매핑
  4. 기존 테스트들

    • FraudRiskServiceImplTest (21% 커버리지)
    • UserServiceImplTest (95% 커버리지)
    • IdentityVerificationServiceTest (62% 커버리지)
    • 다양한 global/auth 테스트들

🔄 현재 커버리지 분석 (도메인별)

높은 커버리지 (50% 이상)

  • global.oauth2.service: 94%
  • domain.user.service: 95%
  • global.mongodb.service: 100%
  • global.oauth2.controller: 100%
  • global.redis.controller: 100%
  • global.email.controller: 100%
  • global.file.controller: 82%
  • global.auth.service: 85%
  • domain.verification.service: 62%
  • domain.fraud.controller: 58%

중간 커버리지 (20-50%)

  • global.auth.jwt: 40%
  • global.redis.service: 43%
  • global.file.service: 39%
  • domain.mypage.service: 28%

낮은 커버리지 (0-20%)

  • domain.contract.service: 0% ⚠️ 7,117 instructions (최우선)
  • domain.home.service: 0% ⚠️ 1,212 instructions
  • domain.chat.service: 5% ⚠️ 7,946 instructions
  • domain.chat.controller: 0% ⚠️ 3,461 instructions
  • domain.contract.controller: 0% ⚠️ 778 instructions
  • domain.precontract.service: 20% (개선 필요)

🎯 70% 달성 전략

Phase 1: 대용량 0% 커버리지 도메인 (예상 +30% 커버리지)

  1. domain.contract.service (7,117 instructions) - 최우선
  2. domain.chat.service (7,946 instructions)
  3. domain.chat.controller (3,461 instructions)

Phase 2: 중간 규모 0% 커버리지 (예상 +15% 커버리지)

  1. domain.home.service (1,212 instructions)
  2. domain.contract.controller (778 instructions)
  3. domain.home.controller (587 instructions)

Phase 3: 기존 커버리지 개선 (예상 +10% 커버리지)

  1. domain.precontract.service (20% → 60% 목표)
  2. global.common.util (5% → 40% 목표)
  3. domain.chat.fcm (1% → 50% 목표)

📋 다음 작업 계획

즉시 착수: ContractServiceImpl 테스트

  • 예상 메서드 수: 15+ 개
  • 주요 메서드: saveContractMongo, getContract, nextStep, saveDepositPrice 등
  • 예상 테스트 케이스: 50+ 개

진행 상황 추적

  • ContractServiceImpl 테스트 생성
  • ChatServiceImpl 테스트 생성
  • HomeServiceImpl 테스트 생성
  • 각 Controller 테스트 생성
  • 중간 커버리지 측정 및 조정

🔍 주의사항

  • 실제 API 확인 후 테스트 작성 (이전에 잘못된 가정으로 컴파일 에러 발생)
  • 1:1 메서드 매핑 원칙 유지
  • Nested 테스트 클래스로 구조화
  • 성공/실패/예외 케이스 모두 포함

🔍 테스트 생성 시도 중 발생한 문제점

API 구조 파악의 어려움

여러 도메인에서 테스트 생성을 시도했으나 다음과 같은 문제가 반복적으로 발생:

  1. ContractServiceImpl:

    • 복잡한 의존성 구조 (19개 메서드)
    • Mapper와 Repository 메서드명 불일치
    • MongoDB 문서 구조 복잡성
  2. ChatServiceImpl:

    • 23개 메서드, 다양한 의존성
    • WebSocket 관련 복잡한 상태 관리
    • Real-time 기능으로 인한 테스트 복잡성
  3. HomeServiceImpl:

    • DTO 구조 불일치 (setter 메서드 부재)
    • HomeVO vs Home 클래스명 혼동
    • Mapper 메서드 구조 파악 어려움

성공적인 테스트들의 공통점

  • 명확한 API 구조: NotificationServiceImpl, MyPageServiceImpl
  • 단순한 의존성: PreContractDataServiceImpl
  • 기존 테스트 참고 가능: FraudRiskServiceImpl, UserServiceImpl

향후 전략

  1. 기존 성공 테스트 확장: 현재 동작하는 테스트들의 커버리지 개선
  2. 단순 컴포넌트 우선: util, config 클래스들
  3. Controller 테스트: 상대적으로 단순한 API 테스트

최종 업데이트: 현재 14% 커버리지 (331/332 테스트 통과)