- 이전 테스트 결과 파일 정리 (Fail-*, OK-* 삭제) - testcase 11개 문서 업데이트 - 시나리오 품질 현황 문서 수정 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
18 KiB
18 KiB
TC - 휴가관리 (Vacation Management)
페이지: https://dev.codebridge-x.com/hr/vacation-management 작성일: 2026-01-29 대상: QC Playwright AI 테스트용
⚠️ 테스트 환경 안내
| 항목 | 내용 |
|---|---|
| 환경 유형 | 개발/테스트 환경 (Development Environment) |
| 운영 환경 여부 | ❌ 아니오 - 운영 환경이 아닙니다 |
| 데이터 특성 | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| 테스트 정책 | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
테스트 실행 지침
-
CRUD 테스트 허용: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
-
휴가 신청 테스트: 신규 휴가 신청(D-080~D-090) 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
-
휴가 취소 테스트: 취소 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다. 기존 시드 데이터는 보존합니다.
-
테스트 데이터 정리: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
💡 참고: "SKIP-PROTECT" 사유는 운영 환경이 아닌 경우 적용하지 않습니다. 개발 환경에서는 전체 CRUD 흐름을 테스트해야 합니다.
0. 사이드바 메뉴 탐색 (공통 전제 조건)
0.1 메뉴 펼치기
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| NAV-001 | 전제 | 사이드바 최상단 스크롤 | 사이드바가 최상단으로 스크롤 |
| NAV-002 | 전제 | "모두 펼치기" 버튼 클릭 | 사이드바의 모든 메뉴가 펼쳐짐 |
| NAV-003 | 전제 | 메뉴 펼침 대기 | 2초 대기 후 모든 메뉴 펼침 완료 |
| NAV-004 | 기능 | 1차 메뉴 찾기 | 스크롤 없이 1차 메뉴(인사관리) 클릭 가능 |
| NAV-005 | 기능 | 2차 메뉴 클릭 | 펼쳐진 서브메뉴에서 휴가관리 클릭 |
| NAV-006 | 기능 | 페이지 로드 확인 | 404 없이 정상 페이지 로드 |
💡 참고: "모두 펼치기" 버튼으로 전체 메뉴를 펼친 후 메뉴를 탐색하면 1차 메뉴를 누르지 못해 찾지 못하는 문제를 방지할 수 있습니다.
1. 목록 페이지 (List View)
1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-001 | 기본 | 페이지 접근 | /hr/vacation-management 정상 로딩, 테이블 표시 |
| L-002 | 기본 | 통계 카드 표시 | 상단에 "전체 휴가", "승인 대기", "승인 완료", "반려" 4개 카드 표시 |
| L-003 | 기본 | 통계 숫자 일치 | 카드 숫자 합 = 테이블 전체 건수 |
| L-004 | 기본 | 기본 정렬 | 최신순(신청일 내림차순) 정렬 |
| L-005 | 기본 | 빈 목록 | 데이터 없을 때 빈 상태 메시지 표시 |
| L-006 | 기본 | 연간 휴가 현황 | 사용일수/잔여일수/총일수 표시 |
1.2 테이블 컬럼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-010 | 기본 | 컬럼 구성 | 체크박스, 번호, 휴가유형, 시작일, 종료일, 일수, 신청자, 승인상태, 신청일, 작업 |
| L-011 | UI | 휴가유형 뱃지 색상 | 연차=파랑, 반차(오전)=초록, 반차(오후)=보라, 병가=빨강, 경조=주황, 공가=회색 |
| L-012 | UI | 승인상태 뱃지 색상 | 대기=노랑, 승인=초록, 반려=빨강, 취소=회색 |
| L-013 | UI | 일수 계산 표시 | 시작일~종료일 기준 자동 계산된 일수 |
| L-014 | UI | 반차 일수 | 반차는 0.5일로 표시 |
| L-015 | UI | 주말/공휴일 제외 | 일수 계산 시 주말/공휴일 제외 여부 확인 |
1.3 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-020 | 기능 | 신청자명 검색 | 이름 일부 입력 시 해당 신청만 필터링 |
| L-021 | 기능 | 사원번호 검색 | 사원번호 입력 시 해당 신청만 필터링 |
| L-022 | 기능 | 부서명 검색 | 부서명 입력 시 해당 부서원 신청만 필터링 |
| L-023 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-024 | 경계 | 빈 검색어 | 전체 목록 표시 |
| L-025 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "검색 결과 없음" 메시지 |
| L-026 | 경계 | 특수문자 검색 | 에러 없이 처리 (결과 0건 또는 매칭) |
1.4 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-030 | 기능 | 휴가유형 필터 - 연차 | 연차 신청만 표시 |
| L-031 | 기능 | 휴가유형 필터 - 반차(오전) | 오전 반차만 표시 |
| L-032 | 기능 | 휴가유형 필터 - 반차(오후) | 오후 반차만 표시 |
| L-033 | 기능 | 휴가유형 필터 - 병가 | 병가만 표시 |
| L-034 | 기능 | 휴가유형 필터 - 경조사 | 경조사 휴가만 표시 |
| L-035 | 기능 | 휴가유형 필터 - 공가 | 공가만 표시 |
| L-036 | 기능 | 승인상태 필터 - 대기 | 승인 대기만 표시 |
| L-037 | 기능 | 승인상태 필터 - 승인 | 승인된 휴가만 표시 |
| L-038 | 기능 | 승인상태 필터 - 반려 | 반려된 휴가만 표시 |
| L-039 | 기능 | 기간 필터 | 시작일~종료일 범위 내 휴가만 표시 |
| L-040 | 기능 | 부서 필터 | 선택한 부서원 휴가만 표시 |
| L-041 | 기능 | 필터 복합 적용 | 유형 + 상태 + 기간 동시 적용 시 AND 조건 |
| L-042 | 기능 | 필터 해제 | 필터 해제 시 전체 목록 복원 |
| L-043 | 경계 | 필터 결과 0건 | 빈 상태 메시지 표시, 에러 없음 |
1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-050 | 기능 | 최신순 | 신청일 내림차순 |
| L-051 | 기능 | 등록순 | 신청일 오름차순 |
| L-052 | 기능 | 시작일 오름차순 | 휴가 시작일 빠른 순 |
| L-053 | 기능 | 시작일 내림차순 | 휴가 시작일 늦은 순 |
| L-054 | 기능 | 일수 많은순 | 휴가 일수 내림차순 |
| L-055 | 기능 | 일수 적은순 | 휴가 일수 오름차순 |
1.6 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-060 | 기능 | 기본 페이지 크기 | 한 페이지 20건 표시 |
| L-061 | 기능 | 다음 페이지 이동 | 2페이지 클릭 시 다음 20건 표시 |
| L-062 | 기능 | 이전 페이지 이동 | 이전 페이지로 복귀 |
| L-063 | 경계 | 마지막 페이지 | "다음" 버튼 비활성화 또는 숨김 |
| L-064 | 경계 | 첫 페이지 | "이전" 버튼 비활성화 또는 숨김 |
| L-065 | 기능 | 필터 + 페이지네이션 | 필터 적용 후 페이지네이션 정상 동작 |
1.7 행 선택 및 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-070 | 기능 | 행 클릭 | 상세 페이지(view 모드)로 이동 |
| L-071 | 기능 | 체크박스 개별 선택 | 해당 행 선택 상태 |
| L-072 | 기능 | 전체 선택 체크박스 | 현재 페이지 전체 선택/해제 |
| L-073 | 기능 | 호버 시 작업 버튼 | 행 호버 시 수정/취소 버튼 표시 |
| L-074 | 기능 | 수정 버튼 클릭 | 상세 페이지(edit 모드)로 이동 |
| L-075 | 기능 | 취소 버튼 클릭 | 취소 확인 다이얼로그 표시 |
| L-076 | 기능 | 취소 확인 | 확인 시 휴가 취소, 상태 변경 |
| L-077 | 기능 | 취소 취소 | 취소 시 아무 변경 없음 |
| L-078 | 비즈 | 승인된 휴가 취소 | 취소 불가 또는 별도 승인 필요 |
| L-079 | 비즈 | 지난 휴가 취소 | 이미 지난 휴가는 취소 불가 |
1.8 일괄 처리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-080 | 기능 | 일괄 승인 버튼 | 다중 선택 시 일괄 승인 버튼 활성화 |
| L-081 | 기능 | 일괄 승인 실행 | 선택한 휴가 전체 승인 |
| L-082 | 기능 | 일괄 반려 버튼 | 다중 선택 시 일괄 반려 버튼 활성화 |
| L-083 | 기능 | 일괄 반려 실행 | 선택한 휴가 전체 반려 + 사유 입력 |
1.9 신규 등록 버튼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-090 | 기능 | 휴가 신청 버튼 | 클릭 시 상세 페이지(new 모드)로 이동 |
2. 상세/등록 페이지 (Detail View)
2.1 휴가 신청 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-001 | 기본 | 페이지 로딩 | 빈 폼 표시, 신청/취소 버튼 |
| D-002 | 기본 | 기본값 확인 | 휴가유형=연차, 시작일=오늘, 종료일=오늘 |
| D-003 | 기본 | 잔여 휴가일수 표시 | 현재 연도 잔여 일수 표시 |
| D-004 | 기본 | 신청자 정보 자동 표시 | 로그인 사용자 정보 자동 입력 |
2.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-010 | 검증 | 휴가유형 미선택 | 신청 시 필수값 에러 메시지 |
| D-011 | 검증 | 시작일 미입력 | 신청 시 필수값 에러 메시지 |
| D-012 | 검증 | 종료일 미입력 | 신청 시 필수값 에러 메시지 |
| D-013 | 검증 | 사유 미입력 | 신청 시 필수값 에러 메시지 (병가/경조사) |
2.1.2 휴가 유형 선택
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-020 | 기능 | 연차 선택 | 연차 선택, 일수 계산 활성화 |
| D-021 | 기능 | 반차(오전) 선택 | 0.5일 자동 계산, 종료일 비활성화 |
| D-022 | 기능 | 반차(오후) 선택 | 0.5일 자동 계산, 종료일 비활성화 |
| D-023 | 기능 | 병가 선택 | 증빙서류 첨부 필드 표시 |
| D-024 | 기능 | 경조사 선택 | 경조사 유형 선택 필드 표시 |
| D-025 | 기능 | 공가 선택 | 공가 사유 입력 필드 표시 |
2.1.3 날짜 선택
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-030 | 기능 | 시작일 선택 | 달력 팝업에서 날짜 선택 |
| D-031 | 기능 | 종료일 선택 | 시작일 이후 날짜만 선택 가능 |
| D-032 | 기능 | 일수 자동 계산 | 시작일~종료일 기준 자동 계산 (주말 제외) |
| D-033 | 경계 | 시작일 > 종료일 | 에러 메시지 또는 자동 보정 |
| D-034 | 경계 | 과거 날짜 선택 | 과거 날짜 선택 불가 또는 경고 |
| D-035 | 기능 | 공휴일 표시 | 달력에 공휴일 표시, 일수 계산 제외 |
| D-036 | 비즈 | 주말 선택 | 주말은 휴가 일수에서 제외 |
2.1.4 잔여 일수 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-040 | 비즈 | 잔여일수 초과 신청 | 에러 메시지 "잔여 휴가일수 부족" |
| D-041 | 비즈 | 잔여일수 = 신청일수 | 정상 신청 가능 |
| D-042 | 비즈 | 실시간 잔여일수 갱신 | 일수 변경 시 잔여일수 실시간 계산 |
2.1.5 사유 및 첨부
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-050 | 기능 | 휴가 사유 입력 | 최대 500자, 텍스트 에어리어 |
| D-051 | 기능 | 증빙서류 첨부 | 파일 업로드 UI (이미지/PDF) |
| D-052 | 경계 | 첨부파일 용량 초과 | 10MB 초과 시 에러 메시지 |
| D-053 | 경계 | 지원하지 않는 형식 | 허용되지 않은 확장자 에러 |
2.1.6 결재선 설정
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-060 | 기능 | 기본 결재선 표시 | 직속 상관 자동 표시 |
| D-061 | 기능 | 결재자 변경 | 다른 결재자 선택 가능 |
| D-062 | 기능 | 참조자 추가 | 참조자 추가 가능 |
| D-063 | 비즈 | 결재자 없음 | 결재자 미지정 시 신청 불가 |
2.1.7 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-080 | 기능 | 정상 신청 | 성공 메시지 + 목록 페이지로 이동 |
| D-081 | 기능 | 신청 후 상태 | 상태 = "대기(승인 대기)" |
| D-082 | 기능 | 취소 버튼 | 목록 페이지로 복귀, 데이터 미저장 |
| D-083 | 경계 | 네트워크 오류 시 신청 | 에러 메시지 표시, 데이터 유지 |
| D-084 | 기능 | 전체 필드 입력 신청 | 모든 필드 정상 저장 및 조회 |
| D-085 | 비즈 | 중복 기간 신청 | 이미 신청된 기간과 중복 시 에러 |
2.2 조회 모드 (mode=view)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-100 | 기본 | 페이지 로딩 | 저장된 데이터 표시, 모든 필드 읽기전용 |
| D-101 | 기본 | 신청 정보 표시 | 휴가유형, 기간, 일수, 사유 표시 |
| D-102 | 기본 | 결재 상태 표시 | 결재선 및 현재 상태 표시 |
| D-103 | UI | 버튼 표시 | 상태에 따라 수정/취소/목록 버튼 |
| D-104 | 기능 | 목록 버튼/뒤로가기 | 목록 페이지로 복귀 |
2.2.1 결재 이력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-110 | 기능 | 결재 이력 표시 | 결재자, 결재일시, 의견 표시 |
| D-111 | 기능 | 결재 상태 타임라인 | 신청→승인/반려 단계별 표시 |
| D-112 | 기능 | 반려 사유 표시 | 반려 시 반려 사유 표시 |
2.2.2 첨부파일
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-120 | 기능 | 첨부파일 목록 | 업로드된 파일 목록 표시 |
| D-121 | 기능 | 파일 다운로드 | 클릭 시 파일 다운로드 |
| D-122 | 기능 | 파일 미리보기 | 이미지/PDF 미리보기 지원 |
2.3 수정 모드 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-200 | 기본 | 페이지 로딩 | 기존 데이터 채워진 편집 가능 폼 |
| D-201 | 비즈 | 수정 가능 상태 | "대기" 상태일 때만 수정 가능 |
| D-202 | 기능 | 휴가유형 변경 | 유형 변경 가능 |
| D-203 | 기능 | 기간 변경 | 시작일/종료일 변경 가능 |
| D-204 | 기능 | 사유 수정 | 휴가 사유 수정 가능 |
| D-205 | 기능 | 첨부파일 추가/삭제 | 파일 추가 및 기존 파일 삭제 |
| D-206 | 경계 | 승인 후 수정 시도 | 수정 불가, 에러 메시지 |
2.3.1 저장/취소
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| D-210 | 기능 | 수정 저장 | 변경사항 저장 + view 모드 전환 |
| D-211 | 기능 | 수정 취소 | 변경사항 폐기 + view 모드 복귀 |
| D-212 | 기능 | 휴가 취소 버튼 | 취소 확인 다이얼로그 표시 |
| D-213 | 기능 | 휴가 취소 확인 | 휴가 취소 + 목록 페이지 이동 |
3. 결재자 화면
3.1 승인/반려 처리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| A-001 | 기능 | 승인 대기 목록 | 결재 대기 휴가 목록 표시 |
| A-002 | 기능 | 승인 버튼 클릭 | 승인 확인 다이얼로그 표시 |
| A-003 | 기능 | 승인 의견 입력 | 선택적 의견 입력 |
| A-004 | 기능 | 승인 확인 | 휴가 승인 처리, 상태 변경 |
| A-005 | 기능 | 반려 버튼 클릭 | 반려 사유 입력 다이얼로그 표시 |
| A-006 | 검증 | 반려 사유 필수 | 사유 미입력 시 반려 불가 |
| A-007 | 기능 | 반려 확인 | 휴가 반려 처리, 상태 변경 |
| A-008 | 비즈 | 알림 발송 | 승인/반려 시 신청자에게 알림 |
4. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| M-001 | UI | 목록 모바일 뷰 | 테이블 → 카드 레이아웃 전환 |
| M-002 | UI | 카드 핵심 정보 | 휴가유형, 기간, 상태 뱃지 표시 |
| M-003 | UI | 카드 액션 버튼 | 수정/취소 접근 가능 |
| M-004 | UI | 상세 페이지 레이아웃 | 모바일에서 폼 필드 세로 정렬 |
| M-005 | UI | 달력 모바일 | 모바일용 달력 UI |
| M-006 | UI | 결재 화면 모바일 | 모바일에서 승인/반려 버튼 접근 가능 |
5. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| API-001 | API | GET /vacations 응답 | { success: true, data: { data: [...], total, page, size } } |
| API-002 | API | GET /vacations/{id} 응답 | 휴가 상세 정보 + 결재 이력 포함 |
| API-003 | API | POST /vacations 응답 | 신규 휴가 ID 반환 |
| API-004 | API | GET /vacations/balance 응답 | 연차 잔여일수 정보 |
| API-005 | API | POST /vacations/{id}/approve 응답 | 승인 처리 결과 |
| API-006 | API | POST /vacations/{id}/reject 응답 | 반려 처리 결과 + 사유 |
| API-007 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
6. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| I-001 | 비즈 | 일수 계산 정확성 | (종료일 - 시작일 + 1) - 주말 - 공휴일 |
| I-002 | 비즈 | 잔여일수 갱신 | 승인 시 잔여일수 차감 |
| I-003 | 비즈 | 취소 시 일수 복원 | 취소 시 잔여일수 복원 |
| I-004 | 비즈 | 연도별 휴가 관리 | 연도 변경 시 새 연차 부여 |
| I-005 | 비즈 | 신청→조회 일치 | 신청한 데이터 = 조회 데이터 |
TC 요약
| 카테고리 | 건수 |
|---|---|
| 목록 페이지 | 53건 |
| 상세/등록 페이지 | 50건 |
| 결재자 화면 | 8건 |
| 모바일 반응형 | 6건 |
| API 응답 검증 | 7건 |
| 데이터 정합성 | 5건 |
| 합계 | 129건 |
참고: 구분 체계
- 기본: 페이지 로딩, 기본 표시
- 기능: 사용자 인터랙션, CRUD 동작
- UI: 색상, 레이아웃, 뱃지 등 시각 요소
- 검증: 입력값 유효성 검사
- 경계: 경계값, 예외 케이스
- 비즈: 비즈니스 로직 (잔여일수, 결재 등)
- API: API 레벨 검증