This commit is contained in:
lab1
2026-01-30 08:04:35 +09:00
parent a7bbdbbd04
commit da86d81196
9 changed files with 3446 additions and 0 deletions

354
testcase/TC_DASHBOARD.md Normal file
View File

@@ -0,0 +1,354 @@
# TC - 대시보드 (Dashboard)
> **페이지**: https://dev.sam.kr/dashboard
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | 조회 중심 테스트, 위젯 설정 변경 가능 |
### 테스트 실행 지침
1. **조회 테스트**: 대시보드는 주로 데이터 조회 및 시각화 기능을 테스트합니다.
2. **위젯 설정 테스트**: 위젯 배치, 크기 조절, 설정 변경 등을 테스트합니다.
3. **성능 확인**: 대시보드 로딩 시간 및 차트 렌더링 성능을 확인합니다.
---
## 1. 페이지 로딩
### 1.1 기본 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/dashboard` 정상 로딩 |
| L-002 | 기본 | 로딩 인디케이터 | 데이터 로딩 중 스피너/스켈레톤 표시 |
| L-003 | 기본 | 기본 레이아웃 | 그리드 형태 위젯 레이아웃 표시 |
| L-004 | 기본 | 사용자별 설정 | 저장된 대시보드 설정 로드 |
| L-005 | 기본 | 첫 로그인 기본값 | 기본 위젯 구성으로 표시 |
| L-006 | 성능 | 로딩 시간 | 3초 이내 메인 컨텐츠 표시 |
### 1.2 헤더 영역
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-010 | UI | 페이지 타이틀 | "대시보드" 타이틀 표시 |
| L-011 | 기능 | 기간 선택 | 오늘/이번주/이번달/지난달/직접입력 |
| L-012 | 기능 | 기간 변경 적용 | 기간 변경 시 위젯 데이터 갱신 |
| L-013 | 기능 | 새로고침 버튼 | 클릭 시 전체 데이터 새로고침 |
| L-014 | 기능 | 마지막 갱신 시간 | 마지막 데이터 갱신 시간 표시 |
| L-015 | 기능 | 위젯 설정 버튼 | 위젯 편집 모드 진입 |
---
## 2. KPI 카드 위젯
### 2.1 매출 KPI
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| K-001 | 기본 | 매출액 카드 | 선택 기간 총 매출액 표시 |
| K-002 | UI | 금액 포맷 | 천단위 콤마 + "원" 표시 |
| K-003 | UI | 전기 대비 | 전월/전주 대비 증감률 표시 |
| K-004 | UI | 증가 표시 | 증가 시 초록색 화살표 ↑ |
| K-005 | UI | 감소 표시 | 감소 시 빨간색 화살표 ↓ |
| K-006 | 기능 | 카드 클릭 | 상세 매출 페이지로 이동 |
### 2.2 주문 KPI
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| K-010 | 기본 | 주문건수 카드 | 선택 기간 총 주문 건수 |
| K-011 | UI | 건수 포맷 | 숫자 + "건" 표시 |
| K-012 | UI | 전기 대비 | 전월/전주 대비 증감 표시 |
| K-013 | 기능 | 카드 클릭 | 주문 목록 페이지로 이동 |
### 2.3 고객/거래처 KPI
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| K-020 | 기본 | 신규 고객 카드 | 신규 등록 고객/거래처 수 |
| K-021 | 기본 | 활성 고객 카드 | 최근 거래 있는 고객 수 |
| K-022 | 기능 | 카드 클릭 | 고객/거래처 목록으로 이동 |
### 2.4 재고/품목 KPI
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| K-030 | 기본 | 품목 수 카드 | 등록된 총 품목 수 |
| K-031 | 기본 | 재고 부족 카드 | 안전재고 미만 품목 수 |
| K-032 | UI | 경고 표시 | 재고 부족 시 빨간색 강조 |
| K-033 | 기능 | 카드 클릭 | 재고 현황 페이지로 이동 |
### 2.5 미수금/미지급금 KPI
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| K-040 | 기본 | 미수금 총액 카드 | 미수금 총액 표시 |
| K-041 | 기본 | 미지급금 총액 카드 | 미지급금 총액 표시 |
| K-042 | UI | 금액 색상 | 금액 높을수록 빨간색 강조 |
| K-043 | 기능 | 카드 클릭 | 미수금/미지급금 상세로 이동 |
---
## 3. 차트 위젯
### 3.1 매출 추이 차트
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| C-001 | 기본 | 차트 표시 | 기간별 매출 추이 라인/바 차트 |
| C-002 | UI | X축 | 기간 (일/주/월) 표시 |
| C-003 | UI | Y축 | 금액 표시 (자동 스케일) |
| C-004 | 기능 | 호버 툴팁 | 데이터 포인트 호버 시 상세 정보 |
| C-005 | 기능 | 차트 유형 전환 | 라인/바/영역 차트 전환 |
| C-006 | 기능 | 데이터 범위 | 월간/분기/연간 선택 |
| C-007 | 기능 | 전년 비교 | 전년 동기 데이터 오버레이 |
| C-008 | 성능 | 렌더링 시간 | 1초 이내 차트 표시 |
### 3.2 주문 현황 차트
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| C-010 | 기본 | 차트 표시 | 주문 상태별 파이/도넛 차트 |
| C-011 | UI | 범례 | 상태별 색상 범례 표시 |
| C-012 | UI | 비율 표시 | 각 상태별 비율(%) 표시 |
| C-013 | 기능 | 호버 툴팁 | 상태 호버 시 건수/금액 표시 |
| C-014 | 기능 | 범례 클릭 | 클릭 시 해당 상태 데이터 토글 |
### 3.3 카테고리별 매출 차트
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| C-020 | 기본 | 차트 표시 | 카테고리별 매출 막대/파이 차트 |
| C-021 | UI | 색상 구분 | 카테고리별 다른 색상 |
| C-022 | 기능 | 정렬 | 매출 높은순/낮은순 정렬 |
| C-023 | 기능 | Top N | 상위 N개만 표시 옵션 |
### 3.4 거래처별 매출 차트
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| C-030 | 기본 | 차트 표시 | 거래처별 매출 막대 차트 |
| C-031 | 기능 | Top 10 | 상위 10개 거래처 표시 |
| C-032 | 기능 | 거래처 클릭 | 거래처 상세 페이지로 이동 |
### 3.5 일별/시간별 패턴 차트
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| C-040 | 기본 | 차트 표시 | 요일/시간별 주문 패턴 히트맵 |
| C-041 | UI | 색상 강도 | 주문 많을수록 진한 색상 |
| C-042 | 기능 | 호버 상세 | 셀 호버 시 구체적 수치 |
---
## 4. 목록 위젯
### 4.1 최근 주문 목록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-001 | 기본 | 목록 표시 | 최근 5~10건 주문 표시 |
| W-002 | UI | 주문 정보 | 주문번호, 거래처, 금액, 상태 |
| W-003 | UI | 상태 뱃지 | 상태별 색상 뱃지 |
| W-004 | 기능 | 행 클릭 | 주문 상세 페이지로 이동 |
| W-005 | 기능 | 더보기 | "더보기" 클릭 시 주문 목록으로 이동 |
| W-006 | 기능 | 자동 갱신 | 새 주문 시 실시간 반영 (설정에 따라) |
### 4.2 처리 필요 항목
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-010 | 기본 | 목록 표시 | 승인 대기, 미처리 항목 목록 |
| W-011 | UI | 항목 유형 | 결재, 주문, 발주 등 유형 표시 |
| W-012 | UI | 긴급 표시 | 긴급 항목 빨간색 강조 |
| W-013 | 기능 | 항목 클릭 | 해당 상세 페이지로 이동 |
| W-014 | 기능 | 빠른 처리 | 간단한 항목 즉시 처리 버튼 |
### 4.3 재고 부족 알림
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-020 | 기본 | 목록 표시 | 안전재고 미만 품목 목록 |
| W-021 | UI | 품목 정보 | 품목명, 현재고, 안전재고 |
| W-022 | UI | 부족량 표시 | 부족 수량 빨간색 표시 |
| W-023 | 기능 | 품목 클릭 | 품목 상세 또는 발주 페이지 |
| W-024 | 기능 | 발주 바로가기 | "발주하기" 버튼 |
### 4.4 최근 활동 로그
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-030 | 기본 | 목록 표시 | 최근 시스템 활동 로그 |
| W-031 | UI | 활동 정보 | 시간, 사용자, 활동 내용 |
| W-032 | UI | 활동 아이콘 | 활동 유형별 아이콘 |
| W-033 | 기능 | 타임라인 형태 | 시간순 타임라인 표시 |
---
## 5. 위젯 커스터마이징
### 5.1 편집 모드
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-001 | 기능 | 편집 모드 진입 | 설정 버튼 클릭 시 편집 모드 |
| E-002 | UI | 편집 모드 표시 | 위젯 테두리, 이동/크기 핸들 표시 |
| E-003 | 기능 | 위젯 드래그 | 위젯 위치 드래그앤드롭 이동 |
| E-004 | 기능 | 위젯 크기 조절 | 모서리 드래그로 크기 조절 |
| E-005 | 기능 | 위젯 삭제 | X 버튼 클릭 시 위젯 제거 |
| E-006 | 기능 | 위젯 추가 | "위젯 추가" 버튼으로 새 위젯 |
| E-007 | 기능 | 저장 | 변경사항 저장 |
| E-008 | 기능 | 취소 | 변경사항 취소 + 원복 |
| E-009 | 기능 | 기본값 복원 | 기본 레이아웃으로 초기화 |
### 5.2 위젯 설정
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-010 | 기능 | 위젯 설정 모달 | 위젯 기어 아이콘 클릭 |
| E-011 | 기능 | 차트 유형 변경 | 라인/바/파이 등 유형 선택 |
| E-012 | 기능 | 데이터 범위 설정 | 표시할 기간/개수 설정 |
| E-013 | 기능 | 색상 테마 | 차트 색상 테마 선택 |
| E-014 | 기능 | 자동 갱신 | 자동 갱신 간격 설정 |
### 5.3 위젯 라이브러리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-020 | 기능 | 위젯 목록 | 사용 가능한 위젯 목록 표시 |
| E-021 | UI | 위젯 미리보기 | 위젯 썸네일/설명 표시 |
| E-022 | 기능 | 위젯 검색 | 위젯명으로 검색 |
| E-023 | 기능 | 카테고리 필터 | KPI/차트/목록/알림 카테고리 |
| E-024 | 기능 | 위젯 추가 | 클릭 또는 드래그로 추가 |
---
## 6. 알림 및 실시간 업데이트
### 6.1 실시간 알림
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| N-001 | 기능 | 새 주문 알림 | 새 주문 발생 시 토스트 알림 |
| N-002 | 기능 | 결재 요청 알림 | 결재 요청 시 알림 |
| N-003 | 기능 | 재고 경고 알림 | 안전재고 미만 시 알림 |
| N-004 | 기능 | 알림 센터 | 알림 목록 확인 패널 |
| N-005 | 기능 | 알림 읽음 처리 | 알림 클릭 시 읽음 표시 |
| N-006 | 기능 | 알림 설정 | 알림 종류별 ON/OFF 설정 |
### 6.2 자동 데이터 갱신
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| N-010 | 기능 | 자동 갱신 | 설정된 간격으로 데이터 갱신 |
| N-011 | UI | 갱신 중 표시 | 갱신 중 인디케이터 표시 |
| N-012 | 기능 | 갱신 간격 설정 | 1분/5분/10분/수동 선택 |
| N-013 | 비즈 | 백그라운드 갱신 | 탭 비활성 시 갱신 정책 |
---
## 7. 다중 대시보드
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기능 | 대시보드 생성 | 새 대시보드 생성 |
| D-002 | 기능 | 대시보드 이름 | 대시보드 이름 설정 |
| D-003 | 기능 | 대시보드 전환 | 탭/드롭다운으로 대시보드 전환 |
| D-004 | 기능 | 대시보드 복사 | 기존 대시보드 복사 |
| D-005 | 기능 | 대시보드 삭제 | 대시보드 삭제 (기본 대시보드 제외) |
| D-006 | 기능 | 기본 대시보드 설정 | 로그인 시 기본 표시 대시보드 |
---
## 8. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 모바일 레이아웃 | 위젯 세로 배치 (1열) |
| M-002 | UI | KPI 카드 | 가로 스크롤 또는 2열 그리드 |
| M-003 | UI | 차트 반응형 | 차트 크기 자동 조절 |
| M-004 | UI | 목록 축소 | 목록 항목 수 축소 |
| M-005 | 기능 | 터치 스크롤 | 매끄러운 스크롤 |
| M-006 | 기능 | 풀 투 리프레시 | 당겨서 새로고침 |
| M-007 | UI | 위젯 편집 모바일 | 모바일 위젯 편집 제한적 지원 |
---
## 9. 성능 테스트
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| P-001 | 성능 | 초기 로딩 시간 | 3초 이내 메인 컨텐츠 표시 |
| P-002 | 성능 | 차트 렌더링 | 1초 이내 차트 표시 |
| P-003 | 성능 | 기간 변경 반응 | 2초 이내 데이터 갱신 |
| P-004 | 성능 | 위젯 드래그 | 끊김 없는 드래그 애니메이션 |
| P-005 | 성능 | 메모리 사용량 | 장시간 사용 시 메모리 누수 없음 |
| P-006 | 성능 | 대량 데이터 | 대량 데이터에서도 정상 동작 |
---
## 10. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /dashboard/kpi 응답 | KPI 데이터 반환 |
| API-002 | API | GET /dashboard/charts 응답 | 차트 데이터 반환 |
| API-003 | API | GET /dashboard/lists 응답 | 목록 데이터 반환 |
| API-004 | API | GET /dashboard/settings 응답 | 사용자 대시보드 설정 |
| API-005 | API | PUT /dashboard/settings 응답 | 설정 저장 결과 |
| API-006 | API | 병렬 요청 | 여러 위젯 데이터 동시 요청 |
| API-007 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 11. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | KPI 수치 일치 | 대시보드 수치 = 상세 페이지 합계 |
| I-002 | 비즈 | 차트 데이터 일치 | 차트 합계 = KPI 수치 |
| I-003 | 비즈 | 기간 계산 정확성 | 선택 기간 데이터 정확 집계 |
| I-004 | 비즈 | 실시간 반영 | 신규 데이터 즉시 반영 |
| I-005 | 비즈 | 권한별 데이터 | 권한에 따른 데이터 범위 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 페이지 로딩 | 15건 |
| KPI 카드 위젯 | 18건 |
| 차트 위젯 | 24건 |
| 목록 위젯 | 15건 |
| 위젯 커스터마이징 | 24건 |
| 알림 및 실시간 업데이트 | 10건 |
| 다중 대시보드 | 6건 |
| 모바일 반응형 | 7건 |
| 성능 테스트 | 6건 |
| API 응답 검증 | 7건 |
| 데이터 정합성 | 5건 |
| **합계** | **137건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, 설정 변경
- **UI**: 색상, 레이아웃, 애니메이션 등 시각 요소
- **성능**: 로딩 시간, 렌더링 성능
- **비즈**: 비즈니스 로직 (데이터 집계, 권한 등)
- **API**: API 레벨 검증

View File

@@ -0,0 +1,334 @@
# TC - 부서관리 (Department Management)
> **페이지**: https://dev.sam.kr/settings/departments
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **부서 등록 테스트**: 신규 부서 등록 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **부서 삭제 테스트**: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다. 소속 직원이 있는 기존 부서는 보존합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 1. 조직도 페이지 (Organization Chart)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/settings/departments` 정상 로딩, 조직도 표시 |
| L-002 | 기본 | 조직도 트리 | 계층형 조직 구조 트리 표시 |
| L-003 | 기본 | 루트 회사 | 최상위에 회사(법인) 노드 표시 |
| L-004 | 기본 | 통계 정보 | 총 부서 수, 총 직원 수 표시 |
| L-005 | 기본 | 빈 조직도 | 부서 없을 때 빈 상태 메시지 |
### 1.2 조직도 표시
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-010 | UI | 트리 구조 | 부모-자식 관계 시각적 표현 |
| L-011 | UI | 부서명 표시 | 각 노드에 부서명 표시 |
| L-012 | UI | 부서장 표시 | 부서장명 또는 빈 상태 표시 |
| L-013 | UI | 직원 수 표시 | 부서별 소속 직원 수 표시 |
| L-014 | UI | 레벨 들여쓰기 | 계층별 들여쓰기로 구분 |
| L-015 | UI | 펼침/접힘 아이콘 | 하위 부서 있으면 토글 아이콘 |
### 1.3 조직도 네비게이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 부서 펼치기 | 클릭 시 하위 부서 펼침 |
| L-021 | 기능 | 부서 접기 | 다시 클릭 시 하위 부서 접힘 |
| L-022 | 기능 | 전체 펼치기 | "전체 펼치기" 버튼 클릭 시 전체 펼침 |
| L-023 | 기능 | 전체 접기 | "전체 접기" 버튼 클릭 시 전체 접힘 |
| L-024 | 기능 | 부서 클릭 | 부서 상세 패널/페이지 표시 |
| L-025 | 기능 | 부서 검색 | 부서명 검색 시 해당 부서 하이라이트 |
### 1.4 뷰 모드
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 트리 뷰 | 트리 형태 조직도 |
| L-031 | 기능 | 차트 뷰 | 조직도 차트 형태 (수평 또는 수직) |
| L-032 | 기능 | 리스트 뷰 | 테이블 형태 부서 목록 |
| L-033 | 기능 | 뷰 전환 | 뷰 모드 간 전환 |
| L-034 | 기능 | 줌 인/아웃 | 차트 뷰에서 확대/축소 |
---
## 2. 부서 목록 (리스트 뷰)
### 2.1 테이블 구성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-001 | 기본 | 컬럼 구성 | 번호, 부서코드, 부서명, 상위부서, 부서장, 직원수, 사용여부, 작업 |
| T-002 | UI | 계층 표시 | 부서명 앞에 레벨 표시 (└ 또는 들여쓰기) |
| T-003 | UI | 사용여부 뱃지 | 사용=초록, 미사용=회색 |
### 2.2 검색/필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-010 | 기능 | 부서명 검색 | 부서명 일부 입력 시 해당 부서 필터링 |
| T-011 | 기능 | 부서코드 검색 | 부서코드로 검색 |
| T-012 | 기능 | 사용여부 필터 | 사용중/미사용 필터 |
| T-013 | 기능 | 상위부서 필터 | 특정 상위부서 하위만 표시 |
| T-014 | 경계 | 검색 결과 없음 | 빈 결과 + 메시지 표시 |
### 2.3 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-020 | 기능 | 조직순서 | 조직도 순서대로 정렬 (기본) |
| T-021 | 기능 | 부서명순 | 부서명 가나다순 |
| T-022 | 기능 | 직원수순 | 직원 수 내림차순 |
| T-023 | 기능 | 등록순 | 등록일 오름차순 |
### 2.4 행 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-030 | 기능 | 행 클릭 | 부서 상세 페이지로 이동 |
| T-031 | 기능 | 호버 시 작업 버튼 | 수정/삭제/이동 버튼 표시 |
| T-032 | 기능 | 수정 버튼 | 부서 수정 모달/페이지 |
| T-033 | 기능 | 삭제 버튼 | 삭제 확인 다이얼로그 |
| T-034 | 기능 | 이동 버튼 | 상위 부서 변경 모달 |
---
## 3. 부서 등록/수정
### 3.1 부서 등록 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기본 | 모달/페이지 로딩 | 부서 등록 폼 표시 |
| D-002 | 기본 | 부서코드 자동 생성 | 자동 생성 옵션 또는 수동 입력 |
#### 3.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 검증 | 부서명 미입력 | 저장 시 필수값 에러 메시지 |
| D-011 | 검증 | 부서코드 미입력 | 저장 시 필수값 에러 메시지 (수동 입력 시) |
| D-012 | 검증 | 상위부서 미선택 | 루트가 아닌 경우 에러 메시지 |
#### 3.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 부서명 입력 | 최대 50자, 부서명 입력 |
| D-021 | 기능 | 부서명(영문) 입력 | 영문 부서명 (선택) |
| D-022 | 기능 | 부서코드 입력 | 영문+숫자 조합 코드 |
| D-023 | 기능 | 상위부서 선택 | 드롭다운 또는 트리에서 선택 |
| D-024 | 기능 | 부서장 선택 | 직원 검색 후 부서장 지정 |
| D-025 | 기능 | 표시순서 입력 | 동일 레벨 내 순서 지정 |
| D-026 | 기능 | 사용여부 설정 | 사용/미사용 토글 |
| D-027 | 경계 | 부서명 중복 | 동일 레벨 내 부서명 중복 시 에러 |
| D-028 | 경계 | 부서코드 중복 | 부서코드 중복 시 에러 |
#### 3.1.3 추가 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-030 | 기능 | 전화번호 입력 | 부서 대표 전화번호 |
| D-031 | 기능 | 팩스번호 입력 | 부서 팩스번호 |
| D-032 | 기능 | 위치 입력 | 부서 위치 (건물/층/호) |
| D-033 | 기능 | 비고 입력 | 추가 설명 (최대 500자) |
#### 3.1.4 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-040 | 기능 | 정상 저장 | 성공 메시지 + 목록 갱신 |
| D-041 | 기능 | 저장 후 계속 등록 | 저장 후 빈 폼으로 초기화 |
| D-042 | 기능 | 취소 버튼 | 모달 닫기 또는 목록 복귀 |
| D-043 | 비즈 | 조직도 실시간 반영 | 저장 후 조직도에 새 부서 표시 |
### 3.2 부서 수정 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-100 | 기본 | 모달/페이지 로딩 | 기존 데이터 채워진 폼 |
| D-101 | 기본 | 부서코드 읽기전용 | 코드 수정 불가 (설정에 따라) |
| D-102 | 기능 | 부서명 수정 | 부서명 변경 |
| D-103 | 기능 | 상위부서 변경 | 다른 상위부서로 이동 |
| D-104 | 기능 | 부서장 변경 | 다른 직원으로 부서장 변경 |
| D-105 | 기능 | 순서 변경 | 표시 순서 변경 |
| D-106 | 기능 | 비활성화 | 사용여부 OFF |
| D-107 | 비즈 | 자기 자신 하위로 이동 | 자기 자신 또는 하위를 상위로 불가 |
### 3.3 부서 삭제
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-110 | 기능 | 삭제 버튼 클릭 | 삭제 확인 다이얼로그 표시 |
| D-111 | 기능 | 삭제 확인 | 부서 삭제, 조직도 갱신 |
| D-112 | 기능 | 삭제 취소 | 아무 변경 없음 |
| D-113 | 비즈 | 하위부서 있는 경우 | 삭제 불가, 하위부서 먼저 삭제 안내 |
| D-114 | 비즈 | 소속 직원 있는 경우 | 삭제 불가, 직원 이동 먼저 안내 |
| D-115 | 비즈 | 결재선 참조 | 결재선에 사용 중이면 삭제 불가 |
---
## 4. 부서 상세 페이지
### 4.1 기본 정보 표시
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| V-001 | 기본 | 페이지 로딩 | 부서 상세 정보 표시 |
| V-002 | UI | 부서 정보 카드 | 부서명, 코드, 상위부서, 부서장, 위치 등 |
| V-003 | UI | 조직도 위치 | 현재 부서의 조직도 내 위치 표시 |
| V-004 | 기능 | 수정 버튼 | 수정 모드로 전환 |
| V-005 | 기능 | 목록 버튼 | 목록 페이지로 복귀 |
### 4.2 소속 직원 목록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| V-010 | 기능 | 직원 목록 | 해당 부서 소속 직원 목록 표시 |
| V-011 | UI | 직원 정보 | 사원번호, 이름, 직급, 입사일 |
| V-012 | UI | 부서장 표시 | 부서장 뱃지 또는 아이콘 |
| V-013 | 기능 | 직원 클릭 | 직원 상세 페이지로 이동 |
| V-014 | 기능 | 직원 검색 | 부서 내 직원 검색 |
### 4.3 하위 부서 목록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| V-020 | 기능 | 하위부서 목록 | 직속 하위 부서 목록 표시 |
| V-021 | 기능 | 하위부서 클릭 | 해당 부서 상세로 이동 |
| V-022 | 기능 | 하위부서 추가 | 현재 부서를 상위로 하는 부서 추가 |
---
## 5. 부서 이동
### 5.1 개별 이동
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | 기능 | 이동 모달 | 상위부서 선택 모달 표시 |
| M-002 | 기능 | 상위부서 트리 | 이동 가능한 부서 트리 표시 |
| M-003 | 기능 | 부서 선택 | 새 상위부서 선택 |
| M-004 | 기능 | 이동 확인 | 부서 이동 + 조직도 갱신 |
| M-005 | 비즈 | 자기 하위로 이동 | 자기 자신 또는 하위를 상위로 불가 |
| M-006 | 비즈 | 순환 참조 방지 | 순환 참조 발생 시 에러 |
### 5.2 드래그앤드롭 이동
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-010 | 기능 | 부서 드래그 | 조직도에서 부서 드래그 시작 |
| M-011 | UI | 드롭 영역 표시 | 이동 가능한 영역 하이라이트 |
| M-012 | 기능 | 부서 드롭 | 새 위치에 드롭 시 이동 |
| M-013 | UI | 이동 취소 | ESC 또는 원위치 드롭 시 취소 |
| M-014 | 비즈 | 잘못된 위치 드롭 | 불가능한 위치에 드롭 시 복귀 |
### 5.3 순서 변경
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-020 | 기능 | 동일 레벨 내 순서 | 형제 부서 간 순서 변경 |
| M-021 | 기능 | 위로 이동 | "위로" 버튼 클릭 시 순서 올림 |
| M-022 | 기능 | 아래로 이동 | "아래로" 버튼 클릭 시 순서 내림 |
| M-023 | 기능 | 드래그 순서 변경 | 드래그앤드롭으로 순서 변경 |
---
## 6. 일괄 작업
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| B-001 | 기능 | 다중 선택 | 체크박스로 여러 부서 선택 |
| B-002 | 기능 | 일괄 비활성화 | 선택 부서 일괄 비활성화 |
| B-003 | 기능 | 일괄 활성화 | 선택 부서 일괄 활성화 |
| B-004 | 기능 | Excel 내보내기 | 부서 목록 Excel 다운로드 |
| B-005 | 기능 | Excel 가져오기 | Excel로 부서 일괄 등록 |
---
## 7. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| MB-001 | UI | 조직도 모바일 | 세로 스크롤 조직도 |
| MB-002 | UI | 부서 카드 | 모바일에서 카드 형태 표시 |
| MB-003 | UI | 터치 네비게이션 | 터치로 펼치기/접기 |
| MB-004 | UI | 부서 등록 모바일 | 모바일 친화적 폼 |
| MB-005 | UI | 부서 검색 모바일 | 모바일 검색 UI |
---
## 8. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /departments 응답 | `{ success: true, data: [...] }` (트리 구조) |
| API-002 | API | GET /departments/{id} 응답 | 부서 상세 + 소속 직원 |
| API-003 | API | POST /departments 응답 | 신규 부서 ID 반환 |
| API-004 | API | PUT /departments/{id} 응답 | 수정 결과 |
| API-005 | API | PUT /departments/{id}/move 응답 | 이동 결과 |
| API-006 | API | DELETE /departments/{id} 응답 | 삭제 결과 |
| API-007 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 9. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 직원 수 일치 | 부서 직원 수 = 실제 소속 직원 수 |
| I-002 | 비즈 | 계층 구조 | 부모-자식 관계 무결성 |
| I-003 | 비즈 | 순환 참조 방지 | 자기 자신을 상위로 불가 |
| I-004 | 비즈 | 부서장 소속 | 부서장은 해당 부서 소속 직원 |
| I-005 | 비즈 | 삭제 후 연관 | 부서 삭제 시 직원 부서 null 또는 이동 |
| I-006 | 비즈 | 이동 후 계층 | 이동 후 계층 깊이 정확성 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 조직도 페이지 | 20건 |
| 부서 목록 | 16건 |
| 부서 등록/수정 | 25건 |
| 부서 상세 페이지 | 10건 |
| 부서 이동 | 14건 |
| 일괄 작업 | 5건 |
| 모바일 반응형 | 5건 |
| API 응답 검증 | 7건 |
| 데이터 정합성 | 6건 |
| **합계** | **108건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 아이콘 등 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (계층 구조, 순환 참조 등)
- **API**: API 레벨 검증

View File

@@ -0,0 +1,428 @@
# TC - 재고관리 (Inventory Management)
> **페이지**: https://dev.sam.kr/inventory/stocks
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (입고, 출고, 조정, 이동 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **입출고 테스트**: 입고/출고 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **재고조정 테스트**: 재고조정 테스트는 테스트용 품목을 대상으로 실행합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 1. 재고 현황 페이지 (Stock Status)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/inventory/stocks` 정상 로딩, 재고 목록 표시 |
| 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 | 품목 이미지 | 썸네일 이미지 표시 |
| L-015 | UI | 마이너스 재고 | 음수 재고 빨간색 표시 |
### 1.3 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 품목명 검색 | 품목명 일부 입력 시 해당 품목만 필터링 |
| L-021 | 기능 | 품목코드 검색 | 코드 입력 시 해당 품목만 필터링 |
| L-022 | 기능 | 바코드 검색 | 바코드 입력 또는 스캔 시 검색 |
| L-023 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-024 | 경계 | 빈 검색어 | 전체 목록 표시 |
| L-025 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "검색 결과 없음" 메시지 |
### 1.4 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 창고 필터 | 특정 창고 재고만 표시 |
| L-031 | 기능 | 카테고리 필터 | 특정 카테고리 품목만 표시 |
| L-032 | 기능 | 재고 상태 필터 - 전체 | 모든 품목 표시 |
| L-033 | 기능 | 재고 상태 필터 - 재고 있음 | 재고 > 0 품목만 표시 |
| L-034 | 기능 | 재고 상태 필터 - 재고 없음 | 재고 = 0 품목만 표시 |
| L-035 | 기능 | 재고 상태 필터 - 안전재고 미만 | 현재고 < 안전재고 품목만 표시 |
| L-036 | 기능 | 재고 상태 필터 - 과잉재고 | 현재고 > 최대재고 품목만 표시 |
| L-037 | 기능 | 공급업체 필터 | 특정 공급업체 품목만 표시 |
| L-038 | 기능 | 필터 복합 적용 | 창고 + 카테고리 + 상태 동시 적용 |
| L-039 | 기능 | 필터 해제 | 필터 해제 시 전체 목록 복원 |
| L-040 | 경계 | 필터 결과 0건 | 빈 상태 메시지 표시 |
### 1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-050 | 기능 | 품목명 오름차순 | 가나다/ABC 순 |
| L-051 | 기능 | 품목명 내림차순 | 역순 |
| L-052 | 기능 | 재고 많은순 | 현재고 내림차순 |
| L-053 | 기능 | 재고 적은순 | 현재고 오름차순 |
| L-054 | 기능 | 재고가치 높은순 | 재고가치 내림차순 |
| L-055 | 기능 | 재고가치 낮은순 | 재고가치 오름차순 |
### 1.6 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-060 | 기능 | 기본 페이지 크기 | 한 페이지 50건 표시 |
| L-061 | 기능 | 페이지 크기 변경 | 20/50/100건 선택 가능 |
| L-062 | 기능 | 다음 페이지 이동 | 다음 페이지로 이동 |
| L-063 | 기능 | 이전 페이지 이동 | 이전 페이지로 복귀 |
| L-064 | 경계 | 마지막 페이지 | "다음" 버튼 비활성화 |
| L-065 | 경계 | 첫 페이지 | "이전" 버튼 비활성화 |
### 1.7 행 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-070 | 기능 | 행 클릭 | 재고 상세 페이지로 이동 |
| L-071 | 기능 | 체크박스 개별 선택 | 해당 행 선택 상태 |
| L-072 | 기능 | 전체 선택 체크박스 | 현재 페이지 전체 선택/해제 |
| L-073 | 기능 | 호버 시 작업 버튼 | 입고/출고/조정/이력 버튼 표시 |
| L-074 | 기능 | 빠른 입고 | 행에서 바로 입고 처리 |
| L-075 | 기능 | 빠른 출고 | 행에서 바로 출고 처리 |
### 1.8 일괄 처리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-080 | 기능 | Excel 내보내기 | 재고 목록 Excel 다운로드 |
| L-081 | 기능 | 재고실사 시작 | 선택 품목 재고실사 모드 |
| L-082 | 기능 | 바코드 라벨 출력 | 선택 품목 바코드 라벨 출력 |
---
## 2. 입고 관리
### 2.1 입고 등록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 기본 | 페이지 로딩 | 입고 등록 폼 표시 |
| I-002 | 기본 | 기본값 확인 | 입고일=오늘, 창고=기본창고 |
#### 2.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-010 | 검증 | 품목 미선택 | 저장 시 필수값 에러 메시지 |
| I-011 | 검증 | 수량 미입력 | 저장 시 필수값 에러 메시지 |
| I-012 | 검증 | 수량 0 입력 | 저장 시 에러 메시지 |
| I-013 | 검증 | 창고 미선택 | 저장 시 필수값 에러 메시지 |
#### 2.1.2 입고 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-020 | 기능 | 입고일 선택 | 달력에서 날짜 선택 |
| I-021 | 기능 | 입고유형 선택 | 구매입고/반품입고/조정입고/이동입고 |
| I-022 | 기능 | 품목 검색/선택 | 품목 검색 후 선택 |
| I-023 | 기능 | 품목 바코드 스캔 | 바코드 스캔으로 품목 추가 |
| I-024 | 기능 | 수량 입력 | 입고 수량 입력 |
| I-025 | 기능 | 창고 선택 | 입고할 창고 선택 |
| I-026 | 기능 | 입고단가 입력 | 입고 단가 입력 (선택) |
| I-027 | 기능 | 공급업체 선택 | 구매입고 시 공급업체 선택 |
| I-028 | 기능 | 발주 연결 | 발주서와 입고 연결 |
| I-029 | 기능 | 비고 입력 | 입고 사유/메모 입력 |
| I-030 | 경계 | 음수 수량 | 에러 메시지 또는 입력 제한 |
#### 2.1.3 다중 품목 입고
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-040 | 기능 | 품목 추가 | 여러 품목 동시 입고 등록 |
| I-041 | 기능 | 품목 삭제 | 추가된 품목 삭제 |
| I-042 | 기능 | 품목 순서 변경 | 드래그앤드롭으로 순서 변경 |
| I-043 | 기능 | 합계 표시 | 총 입고 수량/금액 표시 |
#### 2.1.4 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-050 | 기능 | 정상 저장 | 입고 완료, 재고 증가 확인 |
| I-051 | 기능 | 저장 후 계속 | 저장 후 새 입고 등록 화면 |
| I-052 | 기능 | 취소 버튼 | 목록 페이지로 복귀 |
| I-053 | 비즈 | 재고 실시간 갱신 | 입고 후 현재고 즉시 증가 |
| I-054 | 비즈 | 입고 이력 생성 | 입고 이력 자동 생성 |
---
## 3. 출고 관리
### 3.1 출고 등록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| O-001 | 기본 | 페이지 로딩 | 출고 등록 폼 표시 |
| O-002 | 기본 | 기본값 확인 | 출고일=오늘, 창고=기본창고 |
#### 3.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| O-010 | 검증 | 품목 미선택 | 저장 시 필수값 에러 메시지 |
| O-011 | 검증 | 수량 미입력 | 저장 시 필수값 에러 메시지 |
| O-012 | 검증 | 수량 0 입력 | 저장 시 에러 메시지 |
| O-013 | 비즈 | 재고 초과 출고 | 재고 부족 에러 메시지 |
#### 3.1.2 출고 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| O-020 | 기능 | 출고일 선택 | 달력에서 날짜 선택 |
| O-021 | 기능 | 출고유형 선택 | 판매출고/반품출고/조정출고/이동출고/폐기출고 |
| O-022 | 기능 | 품목 검색/선택 | 품목 검색 후 선택, 현재고 표시 |
| O-023 | 기능 | 품목 바코드 스캔 | 바코드 스캔으로 품목 추가 |
| O-024 | 기능 | 수량 입력 | 출고 수량 입력 |
| O-025 | UI | 가용재고 표시 | 출고 가능 수량 실시간 표시 |
| O-026 | 기능 | 창고 선택 | 출고할 창고 선택 |
| O-027 | 기능 | 거래처 선택 | 판매출고 시 거래처 선택 |
| O-028 | 기능 | 주문 연결 | 주문서와 출고 연결 |
| O-029 | 기능 | 비고 입력 | 출고 사유/메모 입력 |
#### 3.1.3 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| O-050 | 기능 | 정상 저장 | 출고 완료, 재고 감소 확인 |
| O-051 | 비즈 | 재고 실시간 갱신 | 출고 후 현재고 즉시 감소 |
| O-052 | 비즈 | 출고 이력 생성 | 출고 이력 자동 생성 |
| O-053 | 비즈 | 음수 재고 허용/차단 | 설정에 따라 음수 재고 처리 |
---
## 4. 재고 조정
### 4.1 재고 조정 등록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-001 | 기본 | 페이지 로딩 | 재고 조정 폼 표시 |
| A-002 | 기능 | 조정 유형 | 재고실사/분실/파손/오류정정 |
#### 4.1.1 조정 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-010 | 기능 | 품목 선택 | 조정할 품목 선택, 현재고 표시 |
| A-011 | 기능 | 조정 수량 입력 | 조정 후 수량 입력 |
| A-012 | UI | 차이 자동 계산 | 현재고 - 조정수량 = 차이 표시 |
| A-013 | 기능 | 조정 사유 필수 입력 | 조정 사유 입력 (필수) |
| A-014 | 기능 | 증빙 첨부 | 실사표/사진 등 첨부 |
#### 4.1.2 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-020 | 기능 | 정상 저장 | 조정 완료, 재고 변경 확인 |
| A-021 | 비즈 | 조정 이력 생성 | 조정 전/후 기록 |
| A-022 | 비즈 | 관리자 승인 | 대량 조정 시 승인 필요 (설정에 따라) |
---
## 5. 재고 이동
### 5.1 창고간 이동
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-001 | 기본 | 페이지 로딩 | 재고 이동 폼 표시 |
| T-002 | 기능 | 출발 창고 선택 | 출발 창고 선택, 재고 표시 |
| T-003 | 기능 | 도착 창고 선택 | 도착 창고 선택 |
| T-004 | 기능 | 품목 선택 | 이동할 품목 선택 |
| T-005 | 기능 | 수량 입력 | 이동 수량 입력 |
| T-006 | 비즈 | 동일 창고 이동 | 같은 창고로 이동 불가 |
| T-007 | 비즈 | 재고 초과 이동 | 재고 부족 에러 메시지 |
| T-008 | 기능 | 이동 저장 | 출발창고 감소, 도착창고 증가 |
| T-009 | 비즈 | 이동 이력 생성 | 출고/입고 이력 자동 생성 |
---
## 6. 재고 상세 페이지
### 6.1 조회 모드
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기본 | 페이지 로딩 | 품목별 재고 상세 정보 표시 |
| D-002 | UI | 품목 정보 | 품목코드, 품목명, 카테고리, 규격, 단위 |
| D-003 | UI | 재고 정보 | 현재고, 안전재고, 최대재고, 가용재고 |
| D-004 | UI | 창고별 재고 | 창고별 재고 분포 표시 |
| D-005 | UI | 재고 차트 | 재고 추이 그래프 |
### 6.2 입출고 이력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 기능 | 이력 목록 | 입출고 이력 시간순 표시 |
| D-011 | UI | 이력 정보 | 일자, 유형, 수량, 잔량, 창고, 담당자 |
| D-012 | UI | 입고 표시 | 입고=파란색 + 양수 |
| D-013 | UI | 출고 표시 | 출고=빨간색 - 음수 |
| D-014 | 기능 | 기간 필터 | 조회 기간 설정 |
| D-015 | 기능 | 유형 필터 | 입고/출고/조정/이동 필터 |
| D-016 | 기능 | 이력 상세 | 클릭 시 상세 정보 모달 |
### 6.3 연관 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 미처리 발주 | 입고 대기 발주 목록 |
| D-021 | 기능 | 미처리 주문 | 출고 대기 주문 목록 |
| D-022 | 기능 | 공급업체 | 해당 품목 공급업체 정보 |
---
## 7. 재고 실사
### 7.1 실사 프로세스
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| S-001 | 기능 | 실사 시작 | 재고 실사 시작 (재고 동결) |
| S-002 | 기능 | 실사 대상 선택 | 전체/카테고리별/창고별 선택 |
| S-003 | 기능 | 실사 목록 생성 | 실사 대상 품목 목록 생성 |
| S-004 | 기능 | 실사 수량 입력 | 실제 수량 입력 |
| S-005 | 기능 | 바코드 스캔 입력 | 바코드 스캔으로 수량 입력 |
| S-006 | UI | 차이 표시 | 장부재고 vs 실사재고 차이 표시 |
| S-007 | 기능 | 실사 완료 | 실사 결과 확정 |
| S-008 | 비즈 | 자동 조정 | 차이분 자동 재고 조정 |
| S-009 | 기능 | 실사 보고서 | 실사 결과 보고서 출력 |
---
## 8. 창고 관리
### 8.1 창고 CRUD
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-001 | 기능 | 창고 목록 | 등록된 창고 목록 표시 |
| W-002 | 기능 | 창고 등록 | 신규 창고 생성 |
| W-003 | 기능 | 창고명 입력 | 창고명 입력 (필수) |
| W-004 | 기능 | 창고코드 입력 | 창고 식별 코드 |
| W-005 | 기능 | 위치 입력 | 창고 위치/주소 입력 |
| W-006 | 기능 | 담당자 설정 | 창고 담당자 지정 |
| W-007 | 기능 | 기본창고 설정 | 기본 창고 지정 |
| W-008 | 기능 | 창고 수정 | 창고 정보 수정 |
| W-009 | 기능 | 창고 비활성화 | 사용 중지 (삭제 대신) |
| W-010 | 비즈 | 재고 있는 창고 삭제 | 삭제 불가, 비활성화만 가능 |
---
## 9. 보고서
### 9.1 재고 보고서
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-001 | 기능 | 현재 재고 보고서 | 현재 재고 현황 리포트 |
| R-002 | 기능 | 재고 가치 보고서 | 재고 금액 현황 리포트 |
| R-003 | 기능 | 입출고 보고서 | 기간별 입출고 내역 리포트 |
| R-004 | 기능 | 창고별 보고서 | 창고별 재고 현황 |
| R-005 | 기능 | 카테고리별 보고서 | 카테고리별 재고 현황 |
| R-006 | 기능 | 안전재고 보고서 | 안전재고 미만 품목 |
| R-007 | 기능 | 재고 회전율 보고서 | 품목별 재고 회전율 |
| R-008 | 기능 | ABC 분석 보고서 | 품목 ABC 분류 분석 |
| R-009 | 기능 | PDF 출력 | 보고서 PDF 다운로드 |
| R-010 | 기능 | Excel 출력 | 보고서 Excel 다운로드 |
---
## 10. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 목록 모바일 뷰 | 카드 형태로 재고 표시 |
| M-002 | UI | 카드 핵심 정보 | 품목명, 현재고, 상태 표시 |
| M-003 | UI | 바코드 스캔 | 모바일 카메라 바코드 스캔 |
| M-004 | UI | 빠른 입출고 | 모바일에서 간편 입출고 |
| M-005 | UI | 재고 실사 모바일 | 모바일 실사 입력 |
---
## 11. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /stocks 응답 | `{ success: true, data: { data: [...], total } }` |
| API-002 | API | GET /stocks/{productId} 응답 | 품목별 재고 상세 |
| API-003 | API | POST /stocks/inbound 응답 | 입고 처리 결과 |
| API-004 | API | POST /stocks/outbound 응답 | 출고 처리 결과 |
| API-005 | API | POST /stocks/adjust 응답 | 조정 처리 결과 |
| API-006 | API | POST /stocks/transfer 응답 | 이동 처리 결과 |
| API-007 | API | GET /stocks/history 응답 | 입출고 이력 |
| API-008 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 12. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 재고 계산 정확성 | 입고합계 - 출고합계 = 현재고 |
| I-002 | 비즈 | 창고별 합계 | 창고별 재고 합 = 총 재고 |
| I-003 | 비즈 | 이동 후 합계 | 이동 전후 총 재고 동일 |
| I-004 | 비즈 | 조정 이력 | 조정 전/후 재고 차이 = 조정 수량 |
| I-005 | 비즈 | 실사 정합성 | 실사 후 재고 = 실사 수량 |
| I-006 | 비즈 | 동시성 처리 | 동시 입출고 시 데이터 무결성 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 재고 현황 페이지 | 50건 |
| 입고 관리 | 20건 |
| 출고 관리 | 16건 |
| 재고 조정 | 8건 |
| 재고 이동 | 9건 |
| 재고 상세 페이지 | 12건 |
| 재고 실사 | 9건 |
| 창고 관리 | 10건 |
| 보고서 | 10건 |
| 모바일 반응형 | 5건 |
| API 응답 검증 | 8건 |
| 데이터 정합성 | 6건 |
| **합계** | **163건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 아이콘 등 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (재고 계산, 동시성 등)
- **API**: API 레벨 검증

384
testcase/TC_NOTICE_BOARD.md Normal file
View File

@@ -0,0 +1,384 @@
# TC - 공지사항/게시판 (Notice Board)
> **페이지**: https://dev.sam.kr/community/notices
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **게시글 등록 테스트**: 신규 게시글 등록 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **게시글 삭제 테스트**: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 1. 목록 페이지 (List View)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/community/notices` 정상 로딩, 게시글 목록 표시 |
| L-002 | 기본 | 상단 고정 공지 | 중요 공지가 상단에 고정 표시 |
| L-003 | 기본 | 일반 게시글 | 고정 공지 아래 일반 게시글 목록 |
| L-004 | 기본 | 기본 정렬 | 최신순(등록일 내림차순) 정렬 |
| L-005 | 기본 | 빈 목록 | 게시글 없을 때 빈 상태 메시지 표시 |
| L-006 | 기본 | 총 게시글 수 | 전체 게시글 수 표시 |
### 1.2 목록 컬럼/표시
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-010 | 기본 | 컬럼 구성 | 번호, 카테고리, 제목, 작성자, 등록일, 조회수, 첨부 |
| L-011 | UI | 카테고리 뱃지 색상 | 공지=빨강, 일반=파랑, 이벤트=주황, 안내=초록 |
| L-012 | UI | NEW 뱃지 | 최근 7일 이내 글에 NEW 뱃지 표시 |
| L-013 | UI | 첨부파일 아이콘 | 첨부파일 있으면 클립 아이콘 표시 |
| L-014 | UI | 댓글 수 표시 | 제목 옆에 댓글 수 표시 [5] |
| L-015 | UI | 고정 공지 아이콘 | 상단 고정 글에 핀 아이콘 |
| L-016 | UI | 비밀글 아이콘 | 비밀글에 잠금 아이콘 |
| L-017 | UI | 인기글 표시 | 조회수 높은 글에 인기 뱃지 |
### 1.3 카테고리 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 전체 카테고리 | 모든 게시글 표시 |
| L-021 | 기능 | 공지 카테고리 | 공지사항만 표시 |
| L-022 | 기능 | 일반 카테고리 | 일반 게시글만 표시 |
| L-023 | 기능 | 이벤트 카테고리 | 이벤트 게시글만 표시 |
| L-024 | 기능 | 안내 카테고리 | 안내 게시글만 표시 |
| L-025 | UI | 카테고리 탭 | 탭 형태로 카테고리 선택 |
| L-026 | 기능 | URL 반영 | 카테고리 선택 시 URL 파라미터 변경 |
### 1.4 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 제목 검색 | 제목에 검색어 포함 게시글만 표시 |
| L-031 | 기능 | 내용 검색 | 본문에 검색어 포함 게시글만 표시 |
| L-032 | 기능 | 제목+내용 검색 | 제목 또는 내용에 포함 게시글 표시 |
| L-033 | 기능 | 작성자 검색 | 작성자명으로 검색 |
| L-034 | 기능 | 검색 조건 선택 | 제목/내용/작성자/전체 선택 |
| L-035 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-036 | 경계 | 빈 검색어 | 전체 목록 표시 |
| L-037 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "검색 결과 없음" 메시지 |
| L-038 | 기능 | 검색어 하이라이트 | 검색 결과에서 검색어 강조 표시 |
### 1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-040 | 기능 | 최신순 | 등록일 내림차순 |
| L-041 | 기능 | 등록순 | 등록일 오름차순 |
| L-042 | 기능 | 조회수순 | 조회수 내림차순 |
| L-043 | 기능 | 댓글많은순 | 댓글 수 내림차순 |
### 1.6 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-050 | 기능 | 기본 페이지 크기 | 한 페이지 20건 표시 |
| L-051 | 기능 | 페이지 번호 표시 | 페이지 번호 네비게이션 |
| L-052 | 기능 | 다음 페이지 이동 | 다음 페이지로 이동 |
| L-053 | 기능 | 이전 페이지 이동 | 이전 페이지로 복귀 |
| L-054 | 기능 | 첫 페이지 이동 | ≪ 버튼으로 첫 페이지 |
| L-055 | 기능 | 마지막 페이지 이동 | ≫ 버튼으로 마지막 페이지 |
| L-056 | 경계 | 마지막 페이지 | "다음" 버튼 비활성화 |
| L-057 | 경계 | 첫 페이지 | "이전" 버튼 비활성화 |
### 1.7 행 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-060 | 기능 | 제목 클릭 | 상세 페이지로 이동 |
| L-061 | 기능 | 조회수 증가 | 상세 페이지 이동 시 조회수 +1 |
| L-062 | 비즈 | 비밀글 클릭 | 작성자/관리자만 접근 가능 |
### 1.8 글쓰기 버튼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-070 | 기능 | 글쓰기 버튼 표시 | 권한 있는 사용자만 버튼 표시 |
| L-071 | 기능 | 글쓰기 버튼 클릭 | 작성 페이지로 이동 |
| L-072 | 비즈 | 권한 없는 사용자 | 글쓰기 버튼 미표시 또는 비활성화 |
---
## 2. 상세 페이지 (Detail View)
### 2.1 게시글 조회
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기본 | 페이지 로딩 | 게시글 내용 정상 표시 |
| D-002 | 기본 | 헤더 정보 | 제목, 작성자, 등록일, 조회수 표시 |
| D-003 | 기본 | 본문 내용 | HTML 콘텐츠 정상 렌더링 |
| D-004 | UI | 카테고리 뱃지 | 게시글 카테고리 표시 |
| D-005 | 기능 | 수정일 표시 | 수정된 경우 수정일 표시 |
| D-006 | 기능 | 이전/다음 글 | 이전글/다음글 네비게이션 |
| D-007 | 기능 | 목록 버튼 | 목록 페이지로 복귀 |
### 2.2 첨부파일
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 기능 | 첨부파일 목록 | 첨부된 파일 목록 표시 |
| D-011 | 기능 | 파일 다운로드 | 클릭 시 파일 다운로드 |
| D-012 | UI | 파일 아이콘 | 파일 유형별 아이콘 표시 |
| D-013 | 기능 | 이미지 미리보기 | 이미지 파일 썸네일 표시 |
| D-014 | 기능 | 일괄 다운로드 | 전체 파일 ZIP 다운로드 |
### 2.3 수정/삭제
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 수정 버튼 표시 | 작성자/관리자만 수정 버튼 표시 |
| D-021 | 기능 | 수정 버튼 클릭 | 수정 페이지로 이동 |
| D-022 | 기능 | 삭제 버튼 표시 | 작성자/관리자만 삭제 버튼 표시 |
| D-023 | 기능 | 삭제 확인 | 삭제 확인 다이얼로그 표시 |
| D-024 | 기능 | 삭제 실행 | 삭제 후 목록 페이지로 이동 |
| D-025 | 비즈 | 타인 글 수정 시도 | 권한 없음 에러 또는 버튼 미표시 |
### 2.4 댓글 기능
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-030 | 기능 | 댓글 목록 표시 | 게시글 하단에 댓글 목록 |
| D-031 | UI | 댓글 정보 | 작성자, 내용, 작성일 표시 |
| D-032 | 기능 | 댓글 작성 | 댓글 입력 후 등록 버튼 클릭 |
| D-033 | 기능 | 댓글 작성 후 반영 | 작성한 댓글 즉시 목록에 표시 |
| D-034 | 기능 | 댓글 수정 | 자신의 댓글 수정 가능 |
| D-035 | 기능 | 댓글 삭제 | 자신의 댓글 삭제 가능 |
| D-036 | 기능 | 대댓글 작성 | 댓글에 답글 작성 |
| D-037 | UI | 대댓글 들여쓰기 | 대댓글 시각적 구분 |
| D-038 | 경계 | 빈 댓글 등록 | 빈 내용 등록 불가 |
| D-039 | 경계 | 댓글 최대 길이 | 최대 1000자 제한 |
| D-040 | 비즈 | 로그인 필요 | 비로그인 시 댓글 작성 불가 |
### 2.5 좋아요/공유
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-050 | 기능 | 좋아요 버튼 | 좋아요 버튼 클릭 시 카운트 증가 |
| D-051 | 기능 | 좋아요 취소 | 다시 클릭 시 좋아요 취소 |
| D-052 | UI | 좋아요 상태 | 내가 누른 좋아요 표시 |
| D-053 | 기능 | 공유 버튼 | 공유 옵션 표시 (링크 복사, SNS 등) |
| D-054 | 기능 | 링크 복사 | 게시글 URL 클립보드 복사 |
---
## 3. 작성/수정 페이지
### 3.1 게시글 작성 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-001 | 기본 | 페이지 로딩 | 빈 작성 폼 표시 |
| W-002 | 기본 | 기본값 확인 | 카테고리 기본값 설정 |
#### 3.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-010 | 검증 | 제목 미입력 | 저장 시 필수값 에러 메시지 |
| W-011 | 검증 | 내용 미입력 | 저장 시 필수값 에러 메시지 |
| W-012 | 검증 | 카테고리 미선택 | 저장 시 필수값 에러 메시지 |
#### 3.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-020 | 기능 | 카테고리 선택 | 드롭다운에서 카테고리 선택 |
| W-021 | 기능 | 제목 입력 | 최대 200자 제목 입력 |
| W-022 | 기능 | 에디터 로딩 | WYSIWYG 에디터 정상 로딩 |
| W-023 | 기능 | 내용 입력 | 에디터에서 본문 작성 |
| W-024 | 경계 | 제목 최대 길이 | 200자 초과 시 제한 |
#### 3.1.3 에디터 기능
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-030 | 기능 | 텍스트 서식 | 굵게, 기울임, 밑줄 적용 |
| W-031 | 기능 | 글자 크기 | 글자 크기 변경 |
| W-032 | 기능 | 글자 색상 | 글자 색상 변경 |
| W-033 | 기능 | 정렬 | 좌측/중앙/우측 정렬 |
| W-034 | 기능 | 목록 | 번호/글머리 목록 |
| W-035 | 기능 | 표 삽입 | 표 생성 및 편집 |
| W-036 | 기능 | 이미지 삽입 | 본문에 이미지 삽입 |
| W-037 | 기능 | 링크 삽입 | 하이퍼링크 삽입 |
| W-038 | 기능 | 동영상 삽입 | 유튜브 등 동영상 임베드 |
| W-039 | 기능 | 코드 블록 | 코드 블록 삽입 |
| W-040 | 기능 | 인용 | 인용문 스타일 적용 |
#### 3.1.4 첨부파일
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-050 | 기능 | 파일 첨부 | 파일 선택 및 업로드 |
| W-051 | 기능 | 다중 파일 첨부 | 최대 10개 파일 첨부 |
| W-052 | 기능 | 드래그앤드롭 | 드래그앤드롭으로 파일 추가 |
| W-053 | 기능 | 첨부파일 삭제 | 업로드된 파일 삭제 |
| W-054 | 기능 | 업로드 진행률 | 업로드 진행 상태 표시 |
| W-055 | 경계 | 파일 용량 초과 | 단일 파일 20MB 초과 시 에러 |
| W-056 | 경계 | 총 용량 초과 | 전체 100MB 초과 시 에러 |
| W-057 | 경계 | 지원하지 않는 형식 | 허용되지 않은 확장자 에러 |
#### 3.1.5 옵션 설정
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-060 | 기능 | 상단 고정 | 관리자 권한 시 상단 고정 옵션 |
| W-061 | 기능 | 비밀글 설정 | 비밀글 체크박스 |
| W-062 | 기능 | 댓글 허용 | 댓글 허용/비허용 설정 |
| W-063 | 기능 | 공개 기간 설정 | 시작일~종료일 설정 |
| W-064 | 기능 | 알림 발송 | 등록 시 알림 발송 옵션 |
#### 3.1.6 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-070 | 기능 | 임시저장 | 임시저장 버튼 클릭 |
| W-071 | 기능 | 임시저장 목록 | 임시저장 글 불러오기 |
| W-072 | 기능 | 정상 등록 | 등록 후 상세 페이지로 이동 |
| W-073 | 기능 | 취소 버튼 | 작성 취소 확인 후 목록 복귀 |
| W-074 | 경계 | 네트워크 오류 | 에러 메시지, 데이터 유지 |
| W-075 | 기능 | 미리보기 | 작성 중 미리보기 |
### 3.2 게시글 수정 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| W-100 | 기본 | 페이지 로딩 | 기존 데이터 채워진 폼 |
| W-101 | 기능 | 제목 수정 | 제목 변경 가능 |
| W-102 | 기능 | 내용 수정 | 본문 내용 수정 가능 |
| W-103 | 기능 | 카테고리 변경 | 카테고리 변경 가능 |
| W-104 | 기능 | 첨부파일 추가/삭제 | 기존 파일 삭제, 새 파일 추가 |
| W-105 | 기능 | 수정 저장 | 수정 후 상세 페이지로 이동 |
| W-106 | UI | 수정일 갱신 | 수정 시 수정일 업데이트 |
---
## 4. 관리자 기능
### 4.1 게시글 관리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-001 | 기능 | 전체 글 관리 | 모든 사용자 글 관리 가능 |
| A-002 | 기능 | 일괄 삭제 | 다중 선택 후 일괄 삭제 |
| A-003 | 기능 | 일괄 이동 | 다중 선택 후 카테고리 이동 |
| A-004 | 기능 | 상단 고정 관리 | 상단 고정 설정/해제 |
| A-005 | 기능 | 공지 설정 | 일반글 → 공지로 변경 |
| A-006 | 비즈 | 블라인드 처리 | 부적절한 글 블라인드 |
### 4.2 댓글 관리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-010 | 기능 | 댓글 삭제 | 부적절한 댓글 삭제 |
| A-011 | 기능 | 댓글 블라인드 | 댓글 블라인드 처리 |
### 4.3 카테고리 관리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-020 | 기능 | 카테고리 추가 | 신규 카테고리 생성 |
| A-021 | 기능 | 카테고리 수정 | 카테고리명 변경 |
| A-022 | 기능 | 카테고리 순서 | 카테고리 표시 순서 변경 |
| A-023 | 기능 | 카테고리 삭제 | 빈 카테고리만 삭제 가능 |
| A-024 | 비즈 | 글 있는 카테고리 삭제 | 삭제 불가 또는 글 이동 필요 |
---
## 5. 알림 기능
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| N-001 | 기능 | 새 공지 알림 | 새 공지 등록 시 알림 |
| N-002 | 기능 | 댓글 알림 | 내 글에 댓글 시 알림 |
| N-003 | 기능 | 대댓글 알림 | 내 댓글에 답글 시 알림 |
| N-004 | 기능 | 알림 클릭 | 알림 클릭 시 해당 글로 이동 |
| N-005 | 기능 | 알림 설정 | 알림 종류별 ON/OFF 설정 |
---
## 6. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 목록 모바일 뷰 | 카드 형태로 게시글 표시 |
| M-002 | UI | 카드 핵심 정보 | 제목, 작성자, 날짜, 조회수 |
| M-003 | UI | 상세 페이지 | 모바일에서 본문 읽기 편의 |
| M-004 | UI | 에디터 모바일 | 모바일용 간소화 에디터 |
| M-005 | UI | 댓글 모바일 | 모바일에서 댓글 입력 편의 |
| M-006 | UI | 검색 모바일 | 모바일 검색 UI |
---
## 7. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /notices 응답 | `{ success: true, data: { data: [...], total } }` |
| API-002 | API | GET /notices/{id} 응답 | 게시글 상세 + 작성자 정보 |
| API-003 | API | POST /notices 응답 | 신규 게시글 ID 반환 |
| API-004 | API | GET /notices/{id}/comments 응답 | 댓글 목록 |
| API-005 | API | POST /notices/{id}/comments 응답 | 신규 댓글 ID 반환 |
| API-006 | API | 조회수 증가 API | 조회 시 조회수 +1 |
| API-007 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 8. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 조회수 정확성 | 새로고침 시 조회수 중복 증가 방지 |
| I-002 | 비즈 | 댓글 수 일치 | 목록 댓글 수 = 실제 댓글 수 |
| I-003 | 비즈 | 좋아요 수 일치 | 중복 좋아요 방지 |
| I-004 | 비즈 | 상단 고정 순서 | 고정 글 > 일반 글 순서 |
| I-005 | 비즈 | 삭제된 댓글 표시 | "삭제된 댓글입니다" 표시 |
| I-006 | 비즈 | XSS 방지 | 스크립트 삽입 방지 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 목록 페이지 | 50건 |
| 상세 페이지 | 30건 |
| 작성/수정 페이지 | 38건 |
| 관리자 기능 | 13건 |
| 알림 기능 | 5건 |
| 모바일 반응형 | 6건 |
| API 응답 검증 | 7건 |
| 데이터 정합성 | 6건 |
| **합계** | **155건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 뱃지 등 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (권한, 조회수, XSS 등)
- **API**: API 레벨 검증

View File

@@ -0,0 +1,415 @@
# TC - 입출금관리 (Payment Management)
> **페이지**: https://dev.sam.kr/accounting/payments
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **입출금 등록 테스트**: 신규 입출금(D-080~D-095) 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **데이터 삭제 테스트**: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 1. 목록 페이지 (List View)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/accounting/payments` 정상 로딩, 테이블 표시 |
| 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 | 잔액 변동 | 각 거래 후 잔액 표시 |
| L-015 | UI | 미확인 거래 표시 | 미확인 거래 노란 뱃지 표시 |
### 1.3 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 거래처명 검색 | 거래처명 입력 시 해당 거래만 필터링 |
| L-021 | 기능 | 적요 검색 | 적요 내용으로 검색 |
| L-022 | 기능 | 금액 검색 | 특정 금액으로 검색 |
| L-023 | 기능 | 계좌번호 검색 | 계좌번호로 검색 |
| L-024 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-025 | 경계 | 빈 검색어 | 전체 목록 표시 |
| L-026 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "검색 결과 없음" 메시지 |
### 1.4 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 구분 필터 - 입금 | 입금 거래만 표시 |
| L-031 | 기능 | 구분 필터 - 출금 | 출금 거래만 표시 |
| L-032 | 기능 | 구분 필터 - 이체 | 계좌 이체만 표시 |
| L-033 | 기능 | 기간 필터 | 거래일 시작~종료 범위 내 표시 |
| L-034 | 기능 | 기간 단축 필터 | 오늘/이번 주/이번 달/지난 달/직접입력 |
| L-035 | 기능 | 계좌 필터 | 특정 계좌 거래만 표시 |
| L-036 | 기능 | 거래처 필터 | 특정 거래처 거래만 표시 |
| L-037 | 기능 | 금액 범위 필터 | 설정한 금액 범위 내 거래만 표시 |
| L-038 | 기능 | 확인 상태 필터 | 확인/미확인 거래 필터 |
| L-039 | 기능 | 필터 복합 적용 | 구분 + 기간 + 계좌 동시 적용 시 AND 조건 |
| L-040 | 기능 | 필터 해제 | 필터 해제 시 전체 목록 복원 |
| L-041 | 경계 | 필터 결과 0건 | 빈 상태 메시지 표시, 에러 없음 |
### 1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-050 | 기능 | 최신순 | 거래일 내림차순 |
| L-051 | 기능 | 등록순 | 거래일 오름차순 |
| L-052 | 기능 | 금액 높은순 | 거래금액 내림차순 |
| L-053 | 기능 | 금액 낮은순 | 거래금액 오름차순 |
| L-054 | 기능 | 거래처명순 | 거래처명 가나다순 |
### 1.6 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-060 | 기능 | 기본 페이지 크기 | 한 페이지 50건 표시 (거래 특성상 많은 건수) |
| L-061 | 기능 | 페이지 크기 변경 | 20/50/100/200건 선택 가능 |
| 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 | 비즈 | 연결된 전표 있는 거래 | 삭제 시 경고 메시지 |
### 1.8 일괄 처리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-080 | 기능 | 일괄 확인 | 다중 선택 → 일괄 확인 처리 |
| L-081 | 기능 | 일괄 삭제 | 다중 선택 → 일괄 삭제 |
| L-082 | 기능 | Excel 내보내기 | 거래 목록 Excel 다운로드 |
| L-083 | 기능 | Excel 가져오기 | Excel 파일로 거래 일괄 등록 |
| L-084 | 기능 | 은행 자동수집 | 은행 거래내역 자동 수집 (연동 시) |
### 1.9 신규 등록 버튼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-090 | 기능 | 입금 등록 버튼 | 클릭 시 입금 등록 페이지로 이동 |
| L-091 | 기능 | 출금 등록 버튼 | 클릭 시 출금 등록 페이지로 이동 |
| L-092 | 기능 | 이체 등록 버튼 | 클릭 시 이체 등록 페이지로 이동 |
---
## 2. 입금 등록 페이지
### 2.1 입금 등록 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기본 | 페이지 로딩 | 빈 폼 표시, 저장/취소 버튼 |
| D-002 | 기본 | 기본값 확인 | 거래일=오늘, 구분=입금 |
| D-003 | 기본 | 계좌 선택 기본값 | 기본 계좌 자동 선택 |
#### 2.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 검증 | 거래일 미입력 | 저장 시 필수값 에러 메시지 |
| D-011 | 검증 | 계좌 미선택 | 저장 시 필수값 에러 메시지 |
| D-012 | 검증 | 금액 미입력 | 저장 시 필수값 에러 메시지 |
| D-013 | 검증 | 금액 0원 입력 | 에러 메시지 |
#### 2.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 거래일 선택 | 달력에서 날짜 선택 |
| D-021 | 기능 | 계좌 선택 | 등록된 계좌 목록에서 선택 |
| D-022 | 기능 | 거래처 선택 | 거래처 검색 및 선택 |
| D-023 | 기능 | 입금액 입력 | 숫자만 입력, 천단위 자동 콤마 |
| D-024 | 기능 | 적요 입력 | 거래 내용 입력 (최대 100자) |
| D-025 | 경계 | 미래 날짜 입력 | 미래 날짜 허용 또는 경고 |
| D-026 | 경계 | 음수 금액 | 에러 메시지 또는 입력 제한 |
#### 2.1.3 입금 유형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-030 | 기능 | 매출입금 선택 | 매출 관련 입금 유형 |
| D-031 | 기능 | 미수금 입금 선택 | 미수금 회수 입금 유형 |
| D-032 | 기능 | 기타입금 선택 | 기타 입금 유형 |
| D-033 | 기능 | 주문 연결 | 특정 주문과 입금 연결 |
| D-034 | 기능 | 미수금 연결 | 미수금 채권과 입금 연결 |
#### 2.1.4 추가 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-040 | 기능 | 비고 입력 | 추가 메모 (최대 500자) |
| D-041 | 기능 | 영수증 첨부 | 영수증 이미지/PDF 첨부 |
| D-042 | 기능 | 전표 자동 생성 | 회계 전표 자동 생성 옵션 |
#### 2.1.5 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-050 | 기능 | 정상 저장 | 성공 메시지 + 목록 페이지로 이동 |
| D-051 | 기능 | 저장 후 계속 등록 | 저장 후 새 입금 등록 화면 |
| D-052 | 기능 | 취소 버튼 | 목록 페이지로 복귀 |
| D-053 | 비즈 | 계좌 잔액 갱신 | 입금 후 계좌 잔액 증가 확인 |
| D-054 | 비즈 | 미수금 차감 | 미수금 연결 시 미수금 잔액 차감 |
---
## 3. 출금 등록 페이지
### 3.1 출금 등록 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-001 | 기본 | 페이지 로딩 | 빈 폼 표시, 저장/취소 버튼 |
| E-002 | 기본 | 기본값 확인 | 거래일=오늘, 구분=출금 |
#### 3.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-010 | 검증 | 거래일 미입력 | 저장 시 필수값 에러 메시지 |
| E-011 | 검증 | 계좌 미선택 | 저장 시 필수값 에러 메시지 |
| E-012 | 검증 | 금액 미입력 | 저장 시 필수값 에러 메시지 |
| E-013 | 비즈 | 잔액 초과 출금 | 잔액 부족 에러 메시지 |
#### 3.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-020 | 기능 | 거래일 선택 | 달력에서 날짜 선택 |
| E-021 | 기능 | 계좌 선택 | 등록된 계좌 목록에서 선택, 잔액 표시 |
| E-022 | 기능 | 거래처 선택 | 거래처 검색 및 선택 |
| E-023 | 기능 | 출금액 입력 | 숫자만 입력, 천단위 자동 콤마 |
| E-024 | 기능 | 적요 입력 | 거래 내용 입력 |
| E-025 | 비즈 | 잔액 표시 | 출금 가능 잔액 실시간 표시 |
#### 3.1.3 출금 유형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-030 | 기능 | 매입대금 선택 | 매입 관련 출금 유형 |
| E-031 | 기능 | 경비 선택 | 경비 지출 유형 |
| E-032 | 기능 | 급여 선택 | 급여 지급 유형 |
| E-033 | 기능 | 세금 선택 | 세금 납부 유형 |
| E-034 | 기능 | 기타출금 선택 | 기타 출금 유형 |
| E-035 | 기능 | 발주 연결 | 특정 발주와 출금 연결 |
| E-036 | 기능 | 미지급금 연결 | 미지급금 채무와 출금 연결 |
#### 3.1.4 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| E-050 | 기능 | 정상 저장 | 성공 메시지 + 목록 페이지로 이동 |
| E-051 | 비즈 | 계좌 잔액 갱신 | 출금 후 계좌 잔액 감소 확인 |
| E-052 | 비즈 | 미지급금 차감 | 미지급금 연결 시 미지급금 잔액 차감 |
---
## 4. 계좌 이체 등록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-001 | 기본 | 페이지 로딩 | 출금계좌, 입금계좌, 금액 폼 |
| T-002 | 기능 | 출금계좌 선택 | 출금할 계좌 선택 + 잔액 표시 |
| T-003 | 기능 | 입금계좌 선택 | 입금받을 계좌 선택 |
| T-004 | 기능 | 이체금액 입력 | 이체할 금액 입력 |
| T-005 | 비즈 | 동일 계좌 이체 | 같은 계좌로 이체 불가 |
| T-006 | 비즈 | 잔액 초과 이체 | 잔액 부족 에러 메시지 |
| T-007 | 기능 | 이체 저장 | 출금/입금 2건 거래 생성 |
| T-008 | 비즈 | 잔액 동시 갱신 | 출금계좌 감소, 입금계좌 증가 |
---
## 5. 계좌 관리
### 5.1 계좌 목록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-001 | 기능 | 계좌 목록 조회 | 등록된 계좌 목록 표시 |
| A-002 | UI | 계좌 정보 표시 | 은행명, 계좌번호, 예금주, 잔액 |
| A-003 | 기능 | 기본 계좌 표시 | 기본 계좌 표시 뱃지 |
| A-004 | 기능 | 계좌 추가 | 신규 계좌 등록 |
| A-005 | 기능 | 계좌 수정 | 계좌 정보 수정 |
| A-006 | 기능 | 계좌 비활성화 | 계좌 사용 중지 (삭제 대신) |
| A-007 | 비즈 | 거래 있는 계좌 삭제 | 삭제 불가, 비활성화만 가능 |
### 5.2 계좌 등록
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-010 | 기능 | 은행 선택 | 은행 드롭다운에서 선택 |
| A-011 | 기능 | 계좌번호 입력 | 계좌번호 포맷팅 |
| A-012 | 기능 | 예금주 입력 | 예금주명 입력 |
| A-013 | 기능 | 계좌별칭 입력 | 구분용 별칭 입력 |
| A-014 | 기능 | 초기잔액 입력 | 시작 잔액 설정 |
| A-015 | 기능 | 기본계좌 설정 | 기본 계좌로 지정 |
| A-016 | 경계 | 계좌번호 중복 | 중복 에러 메시지 |
---
## 6. 조회/수정 페이지
### 6.1 조회 모드 (mode=view)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| V-001 | 기본 | 페이지 로딩 | 저장된 데이터 표시, 읽기전용 |
| V-002 | UI | 거래 정보 표시 | 구분, 일자, 계좌, 금액, 거래처, 적요 |
| V-003 | UI | 연결 정보 표시 | 연결된 주문/발주/채권/채무 표시 |
| V-004 | 기능 | 영수증 보기 | 첨부된 영수증 조회 |
| V-005 | 기능 | 전표 보기 | 생성된 전표 조회 링크 |
### 6.2 수정 모드 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| V-010 | 기본 | 페이지 로딩 | 기존 데이터 편집 가능 폼 |
| V-011 | 기능 | 금액 수정 | 거래 금액 수정 |
| V-012 | 기능 | 적요 수정 | 적요 내용 수정 |
| V-013 | 기능 | 거래처 변경 | 다른 거래처로 변경 |
| V-014 | 비즈 | 마감 후 수정 | 마감된 거래 수정 불가 |
| V-015 | 비즈 | 전표 연결 후 수정 | 전표 연결 시 금액 수정 제한 |
### 6.3 삭제
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| V-020 | 기능 | 삭제 버튼 | 삭제 확인 다이얼로그 |
| V-021 | 기능 | 삭제 확인 | 거래 삭제 + 목록으로 이동 |
| V-022 | 비즈 | 삭제 후 잔액 | 잔액 역산 처리 |
| V-023 | 비즈 | 마감 거래 삭제 | 삭제 불가 에러 |
---
## 7. 보고서
### 7.1 입출금 보고서
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-001 | 기능 | 일별 보고서 | 일자별 입출금 집계 |
| R-002 | 기능 | 주별 보고서 | 주간 입출금 집계 |
| R-003 | 기능 | 월별 보고서 | 월별 입출금 집계 |
| R-004 | 기능 | 계좌별 보고서 | 계좌별 입출금 내역 |
| R-005 | 기능 | 거래처별 보고서 | 거래처별 입출금 내역 |
| R-006 | 기능 | PDF 출력 | 보고서 PDF 다운로드 |
| R-007 | 기능 | Excel 출력 | 보고서 Excel 다운로드 |
### 7.2 현금흐름표
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-010 | 기능 | 현금흐름표 조회 | 영업/투자/재무활동별 현금흐름 |
| R-011 | 기능 | 기간 설정 | 조회 기간 설정 |
| R-012 | UI | 차트 표시 | 현금흐름 시각화 |
---
## 8. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 목록 모바일 뷰 | 카드 형태로 거래 표시 |
| M-002 | UI | 카드 핵심 정보 | 일자, 구분, 금액, 잔액 표시 |
| M-003 | UI | 빠른 등록 | 모바일에서 간편 입출금 등록 |
| M-004 | UI | 계좌 잔액 | 모바일에서 계좌 잔액 확인 |
| M-005 | UI | 영수증 촬영 | 카메라로 영수증 첨부 |
---
## 9. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /payments 응답 | `{ success: true, data: { data: [...], total } }` |
| API-002 | API | GET /payments/{id} 응답 | 거래 상세 정보 |
| API-003 | API | POST /payments 응답 | 신규 거래 ID 반환 |
| API-004 | API | GET /accounts 응답 | 계좌 목록 + 잔액 |
| API-005 | API | GET /payments/summary 응답 | 입출금 집계 데이터 |
| API-006 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 10. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 잔액 계산 | 초기잔액 + 입금합계 - 출금합계 = 현재잔액 |
| I-002 | 비즈 | 거래별 잔액 | 각 거래 후 잔액 = 이전잔액 ± 거래금액 |
| I-003 | 비즈 | 이체 정합성 | 출금액 = 입금액 (이체 시) |
| I-004 | 비즈 | 채권 연동 | 입금 → 미수금 차감 동기화 |
| I-005 | 비즈 | 채무 연동 | 출금 → 미지급금 차감 동기화 |
| I-006 | 비즈 | 삭제 역산 | 삭제 시 잔액 역산 정확성 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 목록 페이지 | 54건 |
| 입금 등록 | 22건 |
| 출금 등록 | 18건 |
| 계좌 이체 | 8건 |
| 계좌 관리 | 13건 |
| 조회/수정 페이지 | 12건 |
| 보고서 | 9건 |
| 모바일 반응형 | 5건 |
| API 응답 검증 | 6건 |
| 데이터 정합성 | 6건 |
| **합계** | **153건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 뱃지 등 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (잔액 계산, 채권/채무 연동 등)
- **API**: API 레벨 검증

View File

@@ -0,0 +1,389 @@
# TC - 품목관리 (Product Management)
> **페이지**: https://dev.sam.kr/inventory/products
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **품목 등록 테스트**: 신규 등록(D-080~D-090) 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **품목 삭제 테스트**: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다. 기존 시드 데이터는 보존합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 1. 목록 페이지 (List View)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/inventory/products` 정상 로딩, 테이블 표시 |
| 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 | 가격 포맷 | 천단위 콤마 + "원" 표시 |
| L-015 | UI | 마진율 표시 | (판매가-매입가)/판매가 × 100% 계산 표시 |
### 1.3 카테고리 트리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-016 | 기능 | 트리 펼치기/접기 | 하위 카테고리 펼치기/접기 동작 |
| L-017 | 기능 | 카테고리 선택 | 선택한 카테고리 품목만 목록에 표시 |
| L-018 | 기능 | 전체 카테고리 | "전체" 선택 시 모든 품목 표시 |
| L-019 | 기능 | 품목 수 표시 | 각 카테고리 옆에 품목 수 표시 |
### 1.4 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 품목명 검색 | 이름 일부 입력 시 해당 품목만 필터링 |
| L-021 | 기능 | 품목코드 검색 | 코드 입력 시 해당 품목만 필터링 |
| L-022 | 기능 | 바코드 검색 | 바코드 입력 시 해당 품목만 필터링 |
| L-023 | 기능 | 규격/모델 검색 | 규격 또는 모델명으로 검색 |
| L-024 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-025 | 경계 | 빈 검색어 | 전체 목록 표시 |
| L-026 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "검색 결과 없음" 메시지 |
| L-027 | 경계 | 특수문자 검색 | 에러 없이 처리 |
### 1.5 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 상태 필터 - 판매가능 | 판매가능 품목만 표시 |
| L-031 | 기능 | 상태 필터 - 품절 | 품절 품목만 표시 |
| L-032 | 기능 | 상태 필터 - 단종 | 단종 품목만 표시 |
| L-033 | 기능 | 상태 필터 - 비활성 | 비활성 품목만 표시 |
| L-034 | 기능 | 재고 필터 - 재고 있음 | 재고 > 0 품목만 표시 |
| L-035 | 기능 | 재고 필터 - 재고 없음 | 재고 = 0 품목만 표시 |
| L-036 | 기능 | 재고 필터 - 안전재고 미만 | 안전재고 미만 품목만 표시 |
| L-037 | 기능 | 가격대 필터 | 설정한 가격 범위 내 품목만 표시 |
| L-038 | 기능 | 공급업체 필터 | 선택한 공급업체 품목만 표시 |
| L-039 | 기능 | 필터 복합 적용 | 카테고리 + 상태 + 재고 동시 적용 시 AND 조건 |
| L-040 | 기능 | 필터 해제 | 필터 해제 시 전체 목록 복원 |
| L-041 | 경계 | 필터 결과 0건 | 빈 상태 메시지 표시, 에러 없음 |
### 1.6 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-050 | 기능 | 최신순 | 등록일 내림차순 |
| L-051 | 기능 | 등록순 | 등록일 오름차순 |
| L-052 | 기능 | 품목명 오름차순 | 가나다/ABC 순 |
| L-053 | 기능 | 품목명 내림차순 | 역순 |
| L-054 | 기능 | 판매가 높은순 | 판매가 내림차순 |
| L-055 | 기능 | 판매가 낮은순 | 판매가 오름차순 |
| L-056 | 기능 | 재고 많은순 | 재고 내림차순 |
| L-057 | 기능 | 재고 적은순 | 재고 오름차순 |
### 1.7 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-060 | 기능 | 기본 페이지 크기 | 한 페이지 20건 표시 |
| L-061 | 기능 | 페이지 크기 변경 | 20/50/100건 선택 가능 |
| L-062 | 기능 | 다음 페이지 이동 | 다음 페이지로 이동 |
| L-063 | 기능 | 이전 페이지 이동 | 이전 페이지로 복귀 |
| L-064 | 경계 | 마지막 페이지 | "다음" 버튼 비활성화 |
| L-065 | 경계 | 첫 페이지 | "이전" 버튼 비활성화 |
### 1.8 행 선택 및 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-070 | 기능 | 행 클릭 | 상세 페이지(view 모드)로 이동 |
| L-071 | 기능 | 체크박스 개별 선택 | 해당 행 선택 상태 |
| L-072 | 기능 | 전체 선택 체크박스 | 현재 페이지 전체 선택/해제 |
| L-073 | 기능 | 호버 시 작업 버튼 | 행 호버 시 수정/복사/삭제 버튼 표시 |
| L-074 | 기능 | 수정 버튼 클릭 | 상세 페이지(edit 모드)로 이동 |
| L-075 | 기능 | 복사 버튼 클릭 | 신규 등록 페이지에 데이터 복사 |
| L-076 | 기능 | 삭제 버튼 클릭 | 삭제 확인 다이얼로그 표시 |
| L-077 | 기능 | 삭제 확인 | 품목 삭제, 목록 갱신 |
| L-078 | 비즈 | 주문에 사용된 품목 삭제 | 삭제 불가 에러 메시지 |
| L-079 | 비즈 | 재고가 있는 품목 삭제 | 삭제 불가 또는 경고 메시지 |
### 1.9 일괄 처리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-080 | 기능 | 일괄 상태 변경 | 다중 선택 → 상태 일괄 변경 |
| L-081 | 기능 | 일괄 카테고리 변경 | 다중 선택 → 카테고리 일괄 이동 |
| L-082 | 기능 | 일괄 삭제 | 다중 선택 → 일괄 삭제 |
| L-083 | 기능 | Excel 내보내기 | 선택 또는 전체 품목 Excel 다운로드 |
| L-084 | 기능 | Excel 가져오기 | Excel 파일로 품목 일괄 등록 |
### 1.10 신규 등록 버튼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-090 | 기능 | 신규 등록 버튼 | 클릭 시 상세 페이지(new 모드)로 이동 |
---
## 2. 상세/등록 페이지 (Detail View)
### 2.1 품목 등록 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기본 | 페이지 로딩 | 빈 폼 표시, 저장/취소 버튼 |
| D-002 | 기본 | 품목코드 자동 생성 | 코드 필드 읽기전용, 저장 시 자동 생성 |
| D-003 | 기본 | 기본값 확인 | 상태=판매가능, 재고=0, 안전재고=0 |
| D-004 | 기본 | 삭제 버튼 없음 | 신규 모드에서 삭제 버튼 미표시 |
#### 2.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 검증 | 품목명 미입력 | 저장 시 필수값 에러 메시지 |
| D-011 | 검증 | 카테고리 미선택 | 저장 시 필수값 에러 메시지 |
| D-012 | 검증 | 단위 미입력 | 저장 시 필수값 에러 메시지 |
| D-013 | 검증 | 필수값만 입력 저장 | 최소 필수값으로 정상 저장 |
#### 2.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 품목명 입력 | 최대 200자, 정상 입력 |
| D-021 | 기능 | 영문명 입력 | 최대 200자, 영문/숫자/특수문자 |
| D-022 | 기능 | 카테고리 선택 | 드롭다운/트리에서 선택 |
| D-023 | 기능 | 규격/모델 입력 | 최대 100자 |
| D-024 | 기능 | 단위 선택 | EA, BOX, SET, KG, L 등 선택 |
| D-025 | 기능 | 바코드 입력 | 수동 입력 또는 바코드 스캔 |
| D-026 | 경계 | 품목명 중복 | 동일 품목명 등록 시 경고 또는 허용 |
| D-027 | 경계 | 바코드 중복 | 바코드 중복 시 에러 메시지 |
#### 2.1.3 가격 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-030 | 기능 | 매입가 입력 | 숫자만 입력, 천단위 자동 콤마 |
| D-031 | 기능 | 판매가 입력 | 숫자만 입력, 천단위 자동 콤마 |
| D-032 | 기능 | 마진율 자동 계산 | (판매가-매입가)/판매가 × 100% |
| D-033 | 기능 | 부가세 포함 여부 | 토글로 설정 |
| D-034 | 경계 | 음수 가격 입력 | 에러 메시지 또는 입력 제한 |
| D-035 | 경계 | 매입가 > 판매가 | 경고 메시지 (역마진 알림) |
| D-036 | 기능 | 할인가 설정 | 할인가 입력 필드 |
#### 2.1.4 재고 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-040 | 기능 | 현재고 입력 | 초기 재고 수량 입력 |
| D-041 | 기능 | 안전재고 설정 | 알림 기준 재고 수량 |
| D-042 | 기능 | 최대재고 설정 | 최대 보관 수량 |
| D-043 | 기능 | 창고 선택 | 기본 창고 지정 |
| D-044 | 경계 | 음수 재고 입력 | 에러 메시지 또는 입력 제한 |
| D-045 | 비즈 | 재고 관리 여부 | 재고 관리 ON/OFF 토글 |
#### 2.1.5 공급업체 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-050 | 기능 | 공급업체 선택 | 거래처 목록에서 선택 |
| D-051 | 기능 | 공급업체 다중 등록 | 여러 공급업체 추가 가능 |
| D-052 | 기능 | 주 공급업체 지정 | 기본 공급업체 설정 |
| D-053 | 기능 | 공급업체 삭제 | 등록된 공급업체 제거 |
#### 2.1.6 이미지 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-060 | 기능 | 대표 이미지 업로드 | 이미지 파일 선택 및 미리보기 |
| D-061 | 기능 | 추가 이미지 업로드 | 최대 5장 추가 이미지 |
| D-062 | 기능 | 이미지 순서 변경 | 드래그앤드롭으로 순서 변경 |
| D-063 | 기능 | 이미지 삭제 | 업로드된 이미지 삭제 |
| D-064 | 경계 | 이미지 용량 초과 | 5MB 초과 시 에러 메시지 |
| D-065 | 경계 | 지원하지 않는 형식 | jpg/png/gif 외 에러 |
#### 2.1.7 추가 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-070 | 기능 | 상품 설명 입력 | 텍스트 에어리어 (최대 2000자) |
| D-071 | 기능 | 메모 입력 | 내부 메모 (최대 500자) |
| D-072 | 기능 | 세금 유형 선택 | 과세/면세/영세 선택 |
| D-073 | 기능 | 원산지 입력 | 국가/지역 입력 |
| D-074 | 기능 | 제조사 입력 | 제조사명 입력 |
| D-075 | 기능 | 브랜드 입력 | 브랜드명 입력 |
#### 2.1.8 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-080 | 기능 | 정상 저장 | 성공 메시지 + 상세(view) 페이지로 이동 |
| D-081 | 기능 | 저장 후 품목코드 | 자동 생성된 코드 확인 |
| D-082 | 기능 | 취소 버튼 | 목록 페이지로 복귀, 데이터 미저장 |
| D-083 | 경계 | 네트워크 오류 시 저장 | 에러 메시지 표시, 데이터 유지 |
| D-084 | 기능 | 저장 후 계속 등록 | "저장 후 계속" 버튼으로 연속 등록 |
| D-085 | 기능 | 전체 필드 입력 저장 | 모든 필드 정상 저장 및 조회 |
---
### 2.2 조회 모드 (mode=view)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-100 | 기본 | 페이지 로딩 | 저장된 데이터 표시, 모든 필드 읽기전용 |
| D-101 | 기본 | 품목코드 표시 | 자동 생성된 코드 표시 |
| D-102 | UI | 버튼 표시 | 수정/삭제/복사/목록 버튼 |
| D-103 | 기능 | 수정 버튼 클릭 | edit 모드로 전환 |
| D-104 | 기능 | 복사 버튼 클릭 | 데이터 복사된 신규 등록 모드 |
| D-105 | 기능 | 목록 버튼/뒤로가기 | 목록 페이지로 복귀 |
#### 2.2.1 이미지 뷰어
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-110 | 기능 | 대표 이미지 표시 | 메인 영역에 대표 이미지 표시 |
| D-111 | 기능 | 이미지 확대 | 클릭 시 라이트박스로 확대 |
| D-112 | 기능 | 추가 이미지 썸네일 | 하단에 썸네일 목록 |
| D-113 | 기능 | 이미지 전환 | 썸네일 클릭 시 메인 이미지 변경 |
#### 2.2.2 재고 현황
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-120 | 기능 | 재고 현황 표시 | 현재고, 안전재고, 가용재고 표시 |
| D-121 | 기능 | 창고별 재고 | 창고별 재고 분포 표시 |
| D-122 | 기능 | 입출고 이력 | 최근 입출고 내역 요약 |
#### 2.2.3 거래 이력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-130 | 기능 | 주문 이력 | 해당 품목 주문 내역 |
| D-131 | 기능 | 매출 통계 | 기간별 매출 현황 |
| D-132 | 기능 | 발주 이력 | 해당 품목 발주 내역 |
---
### 2.3 수정 모드 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-200 | 기본 | 페이지 로딩 | 기존 데이터 채워진 편집 가능 폼 |
| D-201 | 기본 | 품목코드 읽기전용 | 코드 수정 불가 |
| D-202 | 기능 | 품목명 수정 | 변경 후 저장 정상 동작 |
| D-203 | 기능 | 카테고리 변경 | 다른 카테고리로 이동 |
| D-204 | 기능 | 가격 수정 | 매입가/판매가 수정 |
| D-205 | 기능 | 상태 변경 | 판매가능→단종 등 상태 변경 |
| D-206 | 기능 | 이미지 수정 | 기존 이미지 삭제/교체/추가 |
| D-207 | 비즈 | 재고 직접 수정 | 재고조정 사유 입력 필수 |
#### 2.3.1 저장/취소/삭제
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-210 | 기능 | 수정 저장 | 변경사항 저장 + view 모드 전환 |
| D-211 | 기능 | 수정 취소 | 변경사항 폐기 + view 모드 복귀 |
| D-212 | 기능 | 삭제 버튼 | 삭제 확인 다이얼로그 표시 |
| D-213 | 기능 | 삭제 확인 | 품목 삭제 + 목록 페이지 이동 |
| D-214 | 기능 | 삭제 취소 | 아무 변경 없음 |
| D-215 | 비즈 | 주문에 사용된 품목 삭제 | 삭제 불가, 에러 메시지 |
| D-216 | 비즈 | 재고 있는 품목 삭제 | 삭제 불가 또는 재고 처리 안내 |
---
## 3. 카테고리 관리
### 3.1 카테고리 CRUD
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| C-001 | 기능 | 카테고리 추가 | 루트 또는 하위 카테고리 추가 |
| C-002 | 기능 | 카테고리 수정 | 카테고리명 수정 |
| C-003 | 기능 | 카테고리 삭제 | 빈 카테고리만 삭제 가능 |
| C-004 | 기능 | 카테고리 이동 | 드래그앤드롭으로 위치 변경 |
| C-005 | 비즈 | 품목 있는 카테고리 삭제 | 삭제 불가, 에러 메시지 |
| C-006 | 기능 | 하위 카테고리 계층 | 최대 3단계 계층 지원 |
---
## 4. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 목록 모바일 뷰 | 테이블 → 카드 레이아웃 전환 |
| M-002 | UI | 카드 핵심 정보 | 이미지, 품목명, 가격, 재고 표시 |
| M-003 | UI | 카테고리 트리 | 햄버거 메뉴로 접근 |
| M-004 | UI | 상세 페이지 레이아웃 | 이미지 상단, 정보 하단 배치 |
| M-005 | UI | 검색/필터 모바일 | 검색바, 필터 접근 가능 |
---
## 5. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /products 응답 | `{ success: true, data: { data: [...], total, page, size } }` |
| API-002 | API | GET /products/{id} 응답 | 품목 상세 + 재고 정보 + 이미지 |
| API-003 | API | POST /products 응답 | product_code 자동 생성 |
| API-004 | API | GET /products/categories 응답 | 카테고리 트리 구조 |
| API-005 | API | DELETE - 주문 연결 | 400 에러 + 적절한 에러 메시지 |
| API-006 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 6. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 마진율 계산 | (판매가-매입가)/판매가 × 100% |
| I-002 | 비즈 | 재고 동기화 | 입출고 시 재고 자동 갱신 |
| I-003 | 비즈 | 카테고리 품목 수 | 품목 이동 시 카운트 갱신 |
| I-004 | 비즈 | 등록→조회 일치 | 등록한 데이터 = 조회 데이터 |
| I-005 | 비즈 | 이미지 순서 유지 | 설정한 순서대로 표시 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 목록 페이지 | 58건 |
| 상세/등록 페이지 | 54건 |
| 카테고리 관리 | 6건 |
| 모바일 반응형 | 5건 |
| API 응답 검증 | 6건 |
| 데이터 정합성 | 5건 |
| **합계** | **134건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 뱃지 등 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (재고, 가격 등)
- **API**: API 레벨 검증

View File

@@ -0,0 +1,403 @@
# TC - 견적관리 (Quotation Management)
> **페이지**: https://dev.sam.kr/sales/quotations
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **견적 작성 테스트**: 신규 견적(D-080~D-095) 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **견적 삭제 테스트**: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 1. 목록 페이지 (List View)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/sales/quotations` 정상 로딩, 테이블 표시 |
| L-002 | 기본 | 통계 카드 표시 | "전체", "작성중", "발송완료", "수주전환", "만료" 5개 카드 |
| L-003 | 기본 | 통계 숫자 일치 | 카드 숫자 합 = 테이블 전체 건수 |
| L-004 | 기본 | 기본 정렬 | 최신순(작성일 내림차순) 정렬 |
| L-005 | 기본 | 빈 목록 | 데이터 없을 때 빈 상태 메시지 표시 |
| L-006 | 기본 | 이번 달 견적 현황 | 이번 달 견적 금액/건수 요약 |
### 1.2 테이블 컬럼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-010 | 기본 | 컬럼 구성 | 체크박스, 번호, 견적번호, 거래처, 견적일, 유효기간, 총금액, 상태, 담당자, 작업 |
| L-011 | UI | 상태 뱃지 색상 | 작성중=회색, 발송완료=파랑, 수주전환=초록, 만료=빨강, 취소=주황 |
| L-012 | UI | 금액 포맷 | 천단위 콤마 + "원" 표시 |
| L-013 | UI | 유효기간 경고 | 유효기간 D-3 이내 빨간색 표시 |
| L-014 | UI | 거래처명 링크 | 클릭 시 거래처 상세 페이지 이동 |
| L-015 | UI | 만료 표시 | 유효기간 경과 시 "만료" 뱃지 |
### 1.3 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 견적번호 검색 | 번호 일부 입력 시 해당 견적만 필터링 |
| L-021 | 기능 | 거래처명 검색 | 거래처명 입력 시 해당 견적만 필터링 |
| L-022 | 기능 | 품목명 검색 | 견적 내 품목명으로 검색 |
| L-023 | 기능 | 담당자 검색 | 담당자명으로 검색 |
| L-024 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-025 | 경계 | 빈 검색어 | 전체 목록 표시 |
| L-026 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "검색 결과 없음" 메시지 |
### 1.4 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 상태 필터 - 작성중 | 작성중 견적만 표시 |
| L-031 | 기능 | 상태 필터 - 발송완료 | 발송완료 견적만 표시 |
| L-032 | 기능 | 상태 필터 - 수주전환 | 수주로 전환된 견적만 표시 |
| L-033 | 기능 | 상태 필터 - 만료 | 유효기간 지난 견적만 표시 |
| L-034 | 기능 | 상태 필터 - 취소 | 취소된 견적만 표시 |
| L-035 | 기능 | 기간 필터 | 견적일 시작~종료 범위 내 견적 표시 |
| L-036 | 기능 | 거래처 필터 | 특정 거래처 견적만 표시 |
| L-037 | 기능 | 담당자 필터 | 특정 담당자 견적만 표시 |
| L-038 | 기능 | 금액 범위 필터 | 설정한 금액 범위 내 견적만 표시 |
| L-039 | 기능 | 필터 복합 적용 | 상태 + 기간 + 거래처 동시 적용 시 AND 조건 |
| L-040 | 기능 | 필터 해제 | 필터 해제 시 전체 목록 복원 |
| L-041 | 경계 | 필터 결과 0건 | 빈 상태 메시지 표시, 에러 없음 |
### 1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-050 | 기능 | 최신순 | 견적일 내림차순 |
| L-051 | 기능 | 등록순 | 견적일 오름차순 |
| L-052 | 기능 | 금액 높은순 | 총금액 내림차순 |
| L-053 | 기능 | 금액 낮은순 | 총금액 오름차순 |
| L-054 | 기능 | 유효기간 임박순 | 유효기간 오름차순 |
| L-055 | 기능 | 거래처명순 | 거래처명 가나다순 |
### 1.6 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-060 | 기능 | 기본 페이지 크기 | 한 페이지 20건 표시 |
| L-061 | 기능 | 페이지 크기 변경 | 20/50/100건 선택 가능 |
| L-062 | 기능 | 다음 페이지 이동 | 다음 페이지로 이동 |
| L-063 | 기능 | 이전 페이지 이동 | 이전 페이지로 복귀 |
| L-064 | 경계 | 마지막 페이지 | "다음" 버튼 비활성화 |
| L-065 | 경계 | 첫 페이지 | "이전" 버튼 비활성화 |
### 1.7 행 선택 및 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-070 | 기능 | 행 클릭 | 상세 페이지(view 모드)로 이동 |
| L-071 | 기능 | 체크박스 개별 선택 | 해당 행 선택 상태 |
| L-072 | 기능 | 전체 선택 체크박스 | 현재 페이지 전체 선택/해제 |
| L-073 | 기능 | 호버 시 작업 버튼 | 수정/복사/삭제/PDF/이메일 버튼 표시 |
| L-074 | 기능 | 수정 버튼 클릭 | 상세 페이지(edit 모드)로 이동 |
| L-075 | 기능 | 복사 버튼 클릭 | 견적 복사 생성 |
| L-076 | 기능 | PDF 버튼 클릭 | 견적서 PDF 다운로드 |
| L-077 | 기능 | 이메일 버튼 클릭 | 견적서 이메일 발송 모달 |
| L-078 | 기능 | 삭제 버튼 클릭 | 삭제 확인 다이얼로그 표시 |
| L-079 | 비즈 | 수주 전환된 견적 삭제 | 삭제 불가 에러 메시지 |
### 1.8 일괄 처리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-080 | 기능 | 일괄 PDF 다운로드 | 다중 선택 → ZIP으로 PDF 다운로드 |
| L-081 | 기능 | 일괄 이메일 발송 | 다중 선택 → 일괄 이메일 발송 |
| L-082 | 기능 | 일괄 삭제 | 다중 선택 → 일괄 삭제 |
| L-083 | 기능 | Excel 내보내기 | 견적 목록 Excel 다운로드 |
### 1.9 신규 등록 버튼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-090 | 기능 | 견적 작성 버튼 | 클릭 시 상세 페이지(new 모드)로 이동 |
---
## 2. 상세/등록 페이지 (Detail View)
### 2.1 견적 작성 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기본 | 페이지 로딩 | 빈 폼 표시, 저장/취소 버튼 |
| D-002 | 기본 | 견적번호 자동 생성 | 임시번호 표시, 저장 시 정식 번호 부여 |
| D-003 | 기본 | 기본값 확인 | 견적일=오늘, 유효기간=14일 후, 담당자=로그인 사용자 |
| D-004 | 기본 | 삭제 버튼 없음 | 신규 모드에서 삭제 버튼 미표시 |
#### 2.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 검증 | 거래처 미선택 | 저장 시 필수값 에러 메시지 |
| D-011 | 검증 | 품목 미추가 | 저장 시 필수값 에러 메시지 |
| D-012 | 검증 | 유효기간 미입력 | 저장 시 필수값 에러 메시지 |
| D-013 | 검증 | 필수값만 입력 저장 | 거래처 + 품목으로 정상 저장 |
#### 2.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 거래처 검색/선택 | 검색 후 거래처 선택 |
| D-021 | 기능 | 거래처 정보 자동 채움 | 선택 시 주소, 연락처, 담당자 자동 입력 |
| D-022 | 기능 | 견적일 선택 | 달력에서 날짜 선택 |
| D-023 | 기능 | 유효기간 선택 | 견적일 이후 날짜만 선택 가능 |
| D-024 | 기능 | 유효기간 단축 선택 | 7일/14일/30일/60일/90일 버튼 |
| D-025 | 기능 | 담당자 선택 | 담당자 드롭다운 선택 |
| D-026 | 기능 | 견적 제목 입력 | 선택적 제목 입력 (최대 200자) |
| D-027 | 경계 | 유효기간 < 견적일 | 에러 메시지 또는 자동 보정 |
#### 2.1.3 품목 추가
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-030 | 기능 | 품목 검색 추가 | 품목 검색 선택 견적에 추가 |
| D-031 | 기능 | 품목 직접 추가 | 추가 품목 정보 입력 |
| D-032 | 기능 | 품목 선택 자동 입력 | 품목코드, 품목명, 단가 자동 입력 |
| D-033 | 기능 | 수량 입력 | 수량 입력 금액 자동 계산 |
| D-034 | 기능 | 단가 수정 | 기본 단가 수정 가능 |
| D-035 | 기능 | 할인율 입력 | 품목별 할인율 입력 (%) |
| D-036 | 기능 | 할인금액 입력 | 품목별 할인금액 직접 입력 |
| D-037 | 기능 | 금액 자동 계산 | 수량 × 단가 - 할인 = 금액 |
| D-038 | 기능 | 비고 입력 | 품목별 비고 입력 |
| D-039 | 기능 | 품목 삭제 | 추가된 품목 삭제 |
| D-040 | 기능 | 품목 순서 변경 | 드래그앤드롭으로 순서 변경 |
| D-041 | 경계 | 수량 0 입력 | 에러 또는 자동 1로 설정 |
| D-042 | 경계 | 음수 단가 | 에러 메시지 |
| D-043 | 기능 | 다중 품목 추가 | 품목 검색에서 다중 선택 추가 |
#### 2.1.4 금액 계산
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-050 | 기능 | 공급가액 합계 | 품목별 금액 합계 표시 |
| D-051 | 기능 | 부가세 자동 계산 | 공급가액 × 10% 자동 계산 |
| D-052 | 기능 | 총금액 계산 | 공급가액 + 부가세 = 총금액 |
| D-053 | 기능 | 전체 할인 적용 | 전체 금액에 할인율/할인금액 적용 |
| D-054 | 기능 | 부가세 별도/포함 | 부가세 계산 방식 선택 |
| D-055 | 기능 | 소수점 처리 | 단위 절사/반올림 설정 |
| D-056 | 비즈 | 금액 실시간 반영 | 품목 변경 합계 실시간 갱신 |
#### 2.1.5 추가 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-060 | 기능 | 특기사항 입력 | 텍스트 에어리어 (최대 1000자) |
| D-061 | 기능 | 결제조건 선택 | 현금/카드/계좌이체/외상 선택 |
| D-062 | 기능 | 납기조건 입력 | 납기 일자 또는 기간 입력 |
| D-063 | 기능 | 인도조건 입력 | 배송/픽업/설치 입력 |
| D-064 | 기능 | 담당자 메모 입력 | 내부용 메모 (고객에게 미표시) |
#### 2.1.6 첨부파일
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-070 | 기능 | 파일 첨부 | 이미지/PDF/문서 첨부 |
| D-071 | 기능 | 다중 파일 첨부 | 최대 5개 파일 첨부 |
| D-072 | 기능 | 첨부파일 삭제 | 첨부된 파일 삭제 |
| D-073 | 경계 | 파일 용량 초과 | 10MB 초과 에러 |
| D-074 | 경계 | 지원하지 않는 형식 | 허용되지 않은 확장자 에러 |
#### 2.1.7 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-080 | 기능 | 임시저장 | 작성중 상태로 저장 |
| D-081 | 기능 | 정상 저장 | 성공 메시지 + view 페이지로 이동 |
| D-082 | 기능 | 저장 견적번호 | 정식 견적번호 생성 확인 |
| D-083 | 기능 | 취소 버튼 | 목록 페이지로 복귀, 데이터 미저장 |
| D-084 | 경계 | 네트워크 오류 저장 | 에러 메시지, 데이터 유지 |
| D-085 | 기능 | 저장 발송 | 저장 바로 이메일 발송 옵션 |
---
### 2.2 조회 모드 (mode=view)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-100 | 기본 | 페이지 로딩 | 저장된 데이터 표시, 모든 필드 읽기전용 |
| D-101 | 기본 | 견적번호 표시 | 정식 견적번호 표시 |
| D-102 | UI | 버튼 표시 | 수정/복사/PDF/이메일/수주전환/목록 버튼 |
| D-103 | 기능 | 수정 버튼 클릭 | edit 모드로 전환 |
| D-104 | 기능 | 복사 버튼 클릭 | 견적으로 데이터 복사 |
| D-105 | 기능 | 목록 버튼/뒤로가기 | 목록 페이지로 복귀 |
#### 2.2.1 PDF 출력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-110 | 기능 | PDF 미리보기 | 견적서 PDF 형태로 미리보기 |
| D-111 | 기능 | PDF 다운로드 | 견적서 PDF 파일 다운로드 |
| D-112 | 기능 | 인쇄 | 견적서 직접 인쇄 |
| D-113 | UI | PDF 양식 | 회사 로고, 도장 표시 |
| D-114 | UI | 품목 목록 표시 | 품목 테이블 정확히 표시 |
#### 2.2.2 이메일 발송
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-120 | 기능 | 이메일 발송 모달 | 수신자, 제목, 내용 입력 모달 |
| D-121 | 기능 | 수신자 자동 입력 | 거래처 이메일 자동 입력 |
| D-122 | 기능 | 수신자 추가 | 추가 수신자 입력 가능 |
| D-123 | 기능 | 참조 추가 | CC 수신자 추가 |
| D-124 | 기능 | 이메일 제목 기본값 | "[회사명] 견적서 발송 - 견적번호" |
| D-125 | 기능 | 이메일 본문 편집 | 기본 템플릿 제공, 수정 가능 |
| D-126 | 기능 | PDF 자동 첨부 | 견적서 PDF 자동 첨부 |
| D-127 | 기능 | 추가 첨부파일 | 추가 파일 첨부 가능 |
| D-128 | 기능 | 발송 확인 | 발송 성공 메시지 |
| D-129 | 비즈 | 발송 이력 기록 | 발송 일시, 수신자 이력 저장 |
| D-130 | 경계 | 잘못된 이메일 형식 | 에러 메시지 |
#### 2.2.3 수주 전환
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-140 | 기능 | 수주 전환 버튼 | 견적 수주 전환 확인 다이얼로그 |
| D-141 | 기능 | 전체 품목 전환 | 모든 품목 수주로 전환 |
| D-142 | 기능 | 일부 품목 전환 | 선택한 품목만 수주로 전환 |
| D-143 | 기능 | 수량 조정 전환 | 수량 조정하여 수주 생성 |
| D-144 | 비즈 | 전환 상태 | 견적 상태 "수주전환"으로 변경 |
| D-145 | 비즈 | 수주 페이지 이동 | 전환 생성된 수주 페이지로 이동 |
#### 2.2.4 이력 관리
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-150 | 기능 | 수정 이력 | 견적 수정 이력 표시 |
| D-151 | 기능 | 발송 이력 | 이메일 발송 이력 표시 |
| D-152 | 기능 | 이력 상세 | 변경 / 비교 표시 |
---
### 2.3 수정 모드 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-200 | 기본 | 페이지 로딩 | 기존 데이터 채워진 편집 가능 |
| D-201 | 기본 | 견적번호 읽기전용 | 번호 수정 불가 |
| D-202 | 기능 | 거래처 변경 | 다른 거래처로 변경 가능 |
| D-203 | 기능 | 품목 수정 | 품목 추가/삭제/수정 |
| D-204 | 기능 | 유효기간 연장 | 유효기간 변경 가능 |
| D-205 | 기능 | 금액 수정 | 단가, 할인 수정 |
| D-206 | 비즈 | 발송완료 수정 | 수정 버전 관리 또는 경고 |
| D-207 | 비즈 | 수주전환 수정 | 수정 불가, 읽기전용 |
#### 2.3.1 저장/취소/삭제
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-210 | 기능 | 수정 저장 | 변경사항 저장 + view 모드 전환 |
| D-211 | 기능 | 수정 취소 | 변경사항 폐기 + view 모드 복귀 |
| D-212 | 기능 | 삭제 버튼 | 삭제 확인 다이얼로그 표시 |
| D-213 | 기능 | 삭제 확인 | 견적 삭제 + 목록 페이지 이동 |
| D-214 | 비즈 | 수주전환 삭제 | 삭제 불가, 에러 메시지 |
---
## 3. 견적 복사
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| CP-001 | 기능 | 복사 버튼 클릭 | 견적 작성 페이지로 이동 |
| CP-002 | 기능 | 데이터 복사 | 거래처, 품목, 조건 복사 |
| CP-003 | 기능 | 날짜 초기화 | 견적일=오늘, 유효기간 재설정 |
| CP-004 | 기능 | 견적번호 새로 생성 | 기존 번호와 다른 번호 |
| CP-005 | 비즈 | 가격 최신화 옵션 | 품목 단가 현재가로 업데이트 옵션 |
---
## 4. 견적 템플릿
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| T-001 | 기능 | 템플릿 저장 | 현재 견적을 템플릿으로 저장 |
| T-002 | 기능 | 템플릿 목록 | 저장된 템플릿 목록 표시 |
| T-003 | 기능 | 템플릿 적용 | 템플릿 선택 데이터 채움 |
| T-004 | 기능 | 템플릿 수정 | 기존 템플릿 수정 |
| T-005 | 기능 | 템플릿 삭제 | 템플릿 삭제 |
---
## 5. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 목록 모바일 | 테이블 카드 레이아웃 전환 |
| M-002 | UI | 카드 핵심 정보 | 견적번호, 거래처, 금액, 상태 표시 |
| M-003 | UI | 상세 페이지 레이아웃 | 모바일에서 세로 스크롤 |
| M-004 | UI | 품목 입력 모바일 | 모바일에서 품목 추가/수정 가능 |
| M-005 | UI | PDF 뷰어 모바일 | 모바일에서 PDF 확인 가능 |
---
## 6. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /quotations 응답 | `{ success: true, data: { data: [...], total, page, size } }` |
| API-002 | API | GET /quotations/{id} 응답 | 견적 상세 + 품목 목록 + 이력 |
| API-003 | API | POST /quotations 응답 | quotation_number 자동 생성 |
| API-004 | API | POST /quotations/{id}/send 응답 | 이메일 발송 결과 |
| API-005 | API | POST /quotations/{id}/convert 응답 | 수주 전환 결과 + 수주 ID |
| API-006 | API | GET /quotations/{id}/pdf 응답 | PDF 파일 응답 |
| API-007 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 7. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 금액 계산 정확성 | 수량×단가-할인 = 품목금액 |
| I-002 | 비즈 | 부가세 계산 | 공급가액 × 10% = 부가세 |
| I-003 | 비즈 | 총금액 계산 | 공급가액 + 부가세 = 총금액 |
| I-004 | 비즈 | 수주 전환 데이터 | 견적 데이터 = 수주 데이터 |
| I-005 | 비즈 | PDF 데이터 일치 | 화면 데이터 = PDF 데이터 |
| I-006 | 비즈 | 복사 데이터 일치 | 원본 데이터 = 복사 데이터 (날짜 제외) |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 목록 페이지 | 50건 |
| 상세/등록 페이지 | 70건 |
| 견적 복사 | 5건 |
| 견적 템플릿 | 5건 |
| 모바일 반응형 | 5건 |
| API 응답 검증 | 7건 |
| 데이터 정합성 | 6건 |
| **합계** | **148건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 뱃지 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (금액 계산, 수주 전환 )
- **API**: API 레벨 검증

View File

@@ -0,0 +1,387 @@
# TC - 사용자/권한관리 (User & Permission Management)
> **페이지**: https://dev.sam.kr/settings/users, https://dev.sam.kr/settings/roles
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **사용자/역할 등록 테스트**: 신규 등록 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **삭제 테스트**: 테스트 중 생성한 데이터를 대상으로 실행합니다.
4. **주의**: 시스템 관리자 계정과 기본 역할은 수정/삭제하지 않습니다.
---
## Part A: 사용자 관리
### 1. 사용자 목록 페이지
#### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-001 | 기본 | 페이지 접근 | `/settings/users` 정상 로딩, 사용자 목록 표시 |
| U-002 | 기본 | 통계 카드 | "전체 사용자", "활성", "비활성", "최근 가입" 카드 |
| U-003 | 기본 | 기본 정렬 | 이름 오름차순 또는 최신순 정렬 |
| U-004 | 기본 | 빈 목록 | 사용자 없을 때 빈 상태 메시지 |
#### 1.2 테이블 컬럼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-010 | 기본 | 컬럼 구성 | 체크박스, 프로필, 사용자ID, 이름, 이메일, 부서, 역할, 상태, 마지막로그인, 작업 |
| U-011 | UI | 프로필 이미지 | 프로필 이미지 또는 이니셜 아바타 |
| U-012 | UI | 상태 뱃지 색상 | 활성=초록, 비활성=회색, 잠김=빨강, 대기=노랑 |
| U-013 | UI | 역할 뱃지 | 역할별 다른 색상 뱃지 |
| U-014 | UI | 마지막 로그인 | 상대 시간 표시 (3일 전, 1시간 전 등) |
#### 1.3 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-020 | 기능 | 이름 검색 | 이름 일부 입력 시 해당 사용자 필터링 |
| U-021 | 기능 | 사용자ID 검색 | 사용자ID로 검색 |
| U-022 | 기능 | 이메일 검색 | 이메일로 검색 |
| U-023 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| U-024 | 경계 | 존재하지 않는 검색어 | 빈 결과 + 메시지 표시 |
#### 1.4 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-030 | 기능 | 상태 필터 - 전체 | 모든 사용자 표시 |
| U-031 | 기능 | 상태 필터 - 활성 | 활성 사용자만 표시 |
| U-032 | 기능 | 상태 필터 - 비활성 | 비활성 사용자만 표시 |
| U-033 | 기능 | 상태 필터 - 잠김 | 잠긴 계정만 표시 |
| U-034 | 기능 | 부서 필터 | 특정 부서 사용자만 표시 |
| U-035 | 기능 | 역할 필터 | 특정 역할 사용자만 표시 |
| U-036 | 기능 | 필터 복합 적용 | 상태 + 부서 + 역할 동시 적용 |
| U-037 | 기능 | 필터 해제 | 필터 해제 시 전체 목록 복원 |
#### 1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-040 | 기능 | 이름 오름차순 | 이름 가나다순 |
| U-041 | 기능 | 이름 내림차순 | 이름 역순 |
| U-042 | 기능 | 최근 가입순 | 가입일 내림차순 |
| U-043 | 기능 | 마지막 로그인순 | 로그인일 내림차순 |
#### 1.6 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-050 | 기능 | 기본 페이지 크기 | 한 페이지 20건 표시 |
| U-051 | 기능 | 페이지 크기 변경 | 20/50/100건 선택 가능 |
| U-052 | 기능 | 다음 페이지 이동 | 다음 페이지로 이동 |
| U-053 | 경계 | 마지막 페이지 | "다음" 버튼 비활성화 |
#### 1.7 행 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| U-060 | 기능 | 행 클릭 | 사용자 상세 페이지로 이동 |
| U-061 | 기능 | 호버 시 작업 버튼 | 수정/비활성화/역할변경/비밀번호초기화 버튼 |
| U-062 | 기능 | 수정 버튼 | 사용자 수정 페이지로 이동 |
| U-063 | 기능 | 비활성화 버튼 | 계정 비활성화 확인 다이얼로그 |
| U-064 | 기능 | 비밀번호 초기화 | 임시 비밀번호 발송 확인 |
| U-065 | 비즈 | 자기 자신 비활성화 | 자기 계정 비활성화 불가 |
| U-066 | 비즈 | 시스템 관리자 비활성화 | 마지막 관리자 비활성화 불가 |
---
### 2. 사용자 등록/수정
#### 2.1 사용자 등록 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-001 | 기본 | 페이지 로딩 | 사용자 등록 폼 표시 |
##### 2.1.1 필수값 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-010 | 검증 | 사용자ID 미입력 | 필수값 에러 메시지 |
| UC-011 | 검증 | 이름 미입력 | 필수값 에러 메시지 |
| UC-012 | 검증 | 이메일 미입력 | 필수값 에러 메시지 |
| UC-013 | 검증 | 비밀번호 미입력 | 필수값 에러 메시지 |
| UC-014 | 검증 | 역할 미선택 | 필수값 에러 메시지 |
##### 2.1.2 기본 정보 입력
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-020 | 기능 | 사용자ID 입력 | 영문+숫자, 4~20자 |
| UC-021 | 기능 | 사용자ID 중복 확인 | 중복 시 에러 메시지 |
| UC-022 | 기능 | 이름 입력 | 이름 입력 (최대 50자) |
| UC-023 | 기능 | 이메일 입력 | 유효한 이메일 형식 검증 |
| UC-024 | 기능 | 이메일 중복 확인 | 중복 시 에러 메시지 |
| UC-025 | 기능 | 휴대폰 입력 | 전화번호 포맷팅 |
| UC-026 | 기능 | 부서 선택 | 부서 드롭다운/트리 선택 |
| UC-027 | 기능 | 직급 선택 | 직급 선택 (사원, 대리, 과장 등) |
| UC-028 | 경계 | 잘못된 이메일 형식 | 에러 메시지 |
| UC-029 | 경계 | 잘못된 사용자ID | 특수문자 포함 시 에러 |
##### 2.1.3 비밀번호 설정
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-030 | 기능 | 비밀번호 입력 | 8자 이상, 영문+숫자+특수문자 조합 |
| UC-031 | 기능 | 비밀번호 확인 | 비밀번호 일치 확인 |
| UC-032 | 기능 | 비밀번호 강도 표시 | 약함/보통/강함 표시 |
| UC-033 | 검증 | 비밀번호 불일치 | 에러 메시지 |
| UC-034 | 검증 | 약한 비밀번호 | 정책 미충족 시 에러 |
| UC-035 | 기능 | 임시 비밀번호 발송 | 이메일로 임시 비밀번호 발송 옵션 |
##### 2.1.4 역할/권한 설정
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-040 | 기능 | 역할 선택 | 역할 드롭다운/멀티 선택 |
| UC-041 | 기능 | 다중 역할 부여 | 여러 역할 동시 부여 |
| UC-042 | UI | 역할별 권한 미리보기 | 선택한 역할의 권한 표시 |
| UC-043 | 기능 | 상태 설정 | 활성/비활성 선택 |
##### 2.1.5 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-050 | 기능 | 정상 저장 | 성공 메시지 + 목록 이동 |
| UC-051 | 기능 | 취소 버튼 | 목록 페이지로 복귀 |
| UC-052 | 비즈 | 환영 이메일 발송 | 계정 생성 알림 이메일 발송 (설정에 따라) |
#### 2.2 사용자 수정 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UC-100 | 기본 | 페이지 로딩 | 기존 데이터 채워진 폼 |
| UC-101 | 기본 | 사용자ID 읽기전용 | ID 수정 불가 |
| UC-102 | 기능 | 이름 수정 | 이름 변경 가능 |
| UC-103 | 기능 | 이메일 수정 | 이메일 변경 + 중복 확인 |
| UC-104 | 기능 | 부서 변경 | 다른 부서로 이동 |
| UC-105 | 기능 | 역할 변경 | 역할 추가/삭제 |
| UC-106 | 기능 | 비밀번호 변경 | 새 비밀번호 설정 (선택) |
| UC-107 | 비즈 | 자기 역할 변경 | 자기 역할 축소 경고 |
---
### 3. 사용자 상세 페이지
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| UD-001 | 기본 | 페이지 로딩 | 사용자 상세 정보 표시 |
| UD-002 | UI | 프로필 정보 | 이미지, 이름, ID, 이메일, 연락처 |
| UD-003 | UI | 소속 정보 | 부서, 직급, 역할 |
| UD-004 | 기능 | 로그인 이력 | 최근 로그인 기록 표시 |
| UD-005 | 기능 | 활동 이력 | 최근 활동 로그 표시 |
| UD-006 | 기능 | 권한 목록 | 부여된 권한 목록 표시 |
---
## Part B: 역할 관리
### 4. 역할 목록 페이지
#### 4.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-001 | 기본 | 페이지 접근 | `/settings/roles` 정상 로딩, 역할 목록 표시 |
| R-002 | 기본 | 시스템 역할 | 기본 제공 역할 (관리자, 일반 등) 표시 |
| R-003 | 기본 | 커스텀 역할 | 사용자 정의 역할 표시 |
#### 4.2 테이블 구성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-010 | 기본 | 컬럼 구성 | 번호, 역할명, 설명, 유형, 사용자수, 상태, 작업 |
| R-011 | UI | 유형 뱃지 | 시스템=파랑, 커스텀=초록 |
| R-012 | UI | 상태 표시 | 활성=초록, 비활성=회색 |
| R-013 | UI | 시스템 역할 | 수정/삭제 제한 표시 |
#### 4.3 검색/필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-020 | 기능 | 역할명 검색 | 역할명 검색 |
| R-021 | 기능 | 유형 필터 | 시스템/커스텀 필터 |
| R-022 | 기능 | 상태 필터 | 활성/비활성 필터 |
#### 4.4 행 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| R-030 | 기능 | 행 클릭 | 역할 상세/수정 페이지 이동 |
| R-031 | 기능 | 복사 버튼 | 역할 복사 생성 |
| R-032 | 기능 | 삭제 버튼 | 삭제 확인 다이얼로그 |
| R-033 | 비즈 | 시스템 역할 삭제 | 삭제 불가 |
| R-034 | 비즈 | 사용 중인 역할 삭제 | 사용자 있으면 삭제 불가 또는 경고 |
---
### 5. 역할 등록/수정
#### 5.1 역할 등록 (mode=new)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| RC-001 | 기본 | 페이지 로딩 | 역할 등록 폼 표시 |
##### 5.1.1 기본 정보
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| RC-010 | 검증 | 역할명 미입력 | 필수값 에러 메시지 |
| RC-011 | 기능 | 역할명 입력 | 역할명 입력 (최대 50자) |
| RC-012 | 기능 | 역할코드 입력 | 영문 대문자 + 밑줄 |
| RC-013 | 기능 | 설명 입력 | 역할 설명 (최대 200자) |
| RC-014 | 경계 | 역할명 중복 | 중복 시 에러 메시지 |
| RC-015 | 경계 | 역할코드 중복 | 중복 시 에러 메시지 |
##### 5.1.2 권한 설정
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| RC-020 | 기능 | 권한 트리 표시 | 메뉴/기능별 권한 트리 |
| RC-021 | 기능 | 권한 그룹 펼치기/접기 | 권한 그룹 토글 |
| RC-022 | 기능 | 개별 권한 체크 | 개별 권한 선택/해제 |
| RC-023 | 기능 | 그룹 전체 체크 | 그룹 전체 선택/해제 |
| RC-024 | 기능 | 전체 권한 선택 | 모든 권한 일괄 선택 |
| RC-025 | 기능 | 전체 권한 해제 | 모든 권한 일괄 해제 |
| RC-026 | UI | 선택된 권한 수 표시 | 선택된 권한 카운트 표시 |
##### 5.1.3 권한 유형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| RC-030 | 기능 | 메뉴 접근 권한 | 메뉴 표시/숨김 권한 |
| RC-031 | 기능 | 조회 권한 | 데이터 조회 권한 |
| RC-032 | 기능 | 생성 권한 | 데이터 생성 권한 |
| RC-033 | 기능 | 수정 권한 | 데이터 수정 권한 |
| RC-034 | 기능 | 삭제 권한 | 데이터 삭제 권한 |
| RC-035 | 기능 | 승인 권한 | 결재/승인 권한 |
| RC-036 | 기능 | 내보내기 권한 | Excel/PDF 내보내기 권한 |
| RC-037 | 비즈 | 의존성 권한 | 수정 선택 시 조회 자동 선택 |
##### 5.1.4 저장 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| RC-040 | 기능 | 정상 저장 | 성공 메시지 + 목록 이동 |
| RC-041 | 기능 | 취소 버튼 | 목록 페이지로 복귀 |
| RC-042 | 검증 | 권한 미선택 | 최소 1개 권한 필요 경고 |
#### 5.2 역할 수정 (mode=edit)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| RC-100 | 기본 | 페이지 로딩 | 기존 역할 정보 + 권한 표시 |
| RC-101 | 기능 | 역할명 수정 | 역할명 변경 |
| RC-102 | 기능 | 권한 추가 | 새 권한 추가 |
| RC-103 | 기능 | 권한 제거 | 기존 권한 제거 |
| RC-104 | 비즈 | 시스템 역할 수정 | 시스템 역할 수정 제한 |
| RC-105 | 비즈 | 권한 변경 영향 | 해당 역할 사용자에게 즉시 반영 |
---
## Part C: 권한 적용 테스트
### 6. 권한 동작 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| P-001 | 비즈 | 메뉴 접근 제한 | 권한 없는 메뉴 미표시 |
| P-002 | 비즈 | URL 직접 접근 차단 | 권한 없는 URL 접근 시 403 또는 리다이렉트 |
| P-003 | 비즈 | 버튼 표시 제한 | 권한 없는 버튼 미표시 또는 비활성화 |
| P-004 | 비즈 | 조회 권한 테스트 | 조회만 가능, 수정/삭제 버튼 미표시 |
| P-005 | 비즈 | 생성 권한 테스트 | 생성 가능, 다른 기능 제한 |
| P-006 | 비즈 | 수정 권한 테스트 | 수정 가능, 삭제 제한 |
| P-007 | 비즈 | 삭제 권한 테스트 | 삭제 가능 |
| P-008 | 비즈 | 내보내기 권한 테스트 | Excel/PDF 버튼 표시/미표시 |
| P-009 | 비즈 | 다중 역할 권한 | 여러 역할 권한 합산 |
| P-010 | 비즈 | 권한 변경 즉시 반영 | 역할 수정 후 로그인 없이 반영 |
---
## 7. 모바일 반응형
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 사용자 목록 모바일 | 카드 형태로 사용자 표시 |
| M-002 | UI | 역할 목록 모바일 | 카드 형태로 역할 표시 |
| M-003 | UI | 사용자 등록 모바일 | 모바일 친화적 폼 |
| M-004 | UI | 권한 설정 모바일 | 권한 트리 모바일 최적화 |
| M-005 | UI | 검색/필터 모바일 | 모바일 검색 UI |
---
## 8. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /users 응답 | `{ success: true, data: { data: [...], total } }` |
| API-002 | API | GET /users/{id} 응답 | 사용자 상세 + 역할 + 권한 |
| API-003 | API | POST /users 응답 | 신규 사용자 ID 반환 |
| API-004 | API | GET /roles 응답 | 역할 목록 |
| API-005 | API | GET /roles/{id} 응답 | 역할 상세 + 권한 목록 |
| API-006 | API | POST /roles 응답 | 신규 역할 ID 반환 |
| API-007 | API | GET /permissions 응답 | 전체 권한 트리 |
| API-008 | API | 멀티테넌트 격리 | 다른 tenant 데이터 접근 불가 |
---
## 9. 데이터 정합성
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| I-001 | 비즈 | 사용자-역할 관계 | 사용자의 역할 일치 |
| I-002 | 비즈 | 역할-권한 관계 | 역할의 권한 일치 |
| I-003 | 비즈 | 역할 사용자 수 | 표시된 수 = 실제 사용자 수 |
| I-004 | 비즈 | 삭제 후 연관 | 역할 삭제 시 사용자-역할 관계 정리 |
| I-005 | 비즈 | 권한 상속 | 상위 권한 선택 시 하위 권한 포함 |
| I-006 | 비즈 | 권한 캐시 | 권한 변경 후 캐시 무효화 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 사용자 목록 페이지 | 33건 |
| 사용자 등록/수정 | 28건 |
| 사용자 상세 페이지 | 6건 |
| 역할 목록 페이지 | 14건 |
| 역할 등록/수정 | 28건 |
| 권한 적용 테스트 | 10건 |
| 모바일 반응형 | 5건 |
| API 응답 검증 | 8건 |
| 데이터 정합성 | 6건 |
| **합계** | **138건** |
---
## 참고: 구분 체계
- **기본**: 페이지 로딩, 기본 표시
- **기능**: 사용자 인터랙션, CRUD 동작
- **UI**: 색상, 레이아웃, 뱃지 등 시각 요소
- **검증**: 입력값 유효성 검사
- **경계**: 경계값, 예외 케이스
- **비즈**: 비즈니스 로직 (권한 적용, 시스템 역할 보호 등)
- **API**: API 레벨 검증

View File

@@ -0,0 +1,352 @@
# TC - 휴가관리 (Vacation Management)
> **페이지**: https://dev.sam.kr/hr/vacations
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **휴가 신청 테스트**: 신규 휴가 신청(D-080~D-090) 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **휴가 취소 테스트**: 취소 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다. 기존 시드 데이터는 보존합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
> 💡 **참고**: "SKIP-PROTECT" 사유는 운영 환경이 아닌 경우 적용하지 않습니다. 개발 환경에서는 전체 CRUD 흐름을 테스트해야 합니다.
---
## 1. 목록 페이지 (List View)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/hr/vacations` 정상 로딩, 테이블 표시 |
| 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 레벨 검증