- 이전 테스트 결과 파일 정리 (Fail-*, OK-* 삭제) - testcase 11개 문서 업데이트 - 시나리오 품질 현황 문서 수정 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 KiB
20 KiB
TC - 품목관리 (Product Management)
페이지: https://dev.codebridge-x.com/production/screen-production 작성일: 2026-01-29 대상: QC Playwright AI 테스트용
⚠️ 테스트 환경 안내
| 항목 | 내용 |
|---|---|
| 환경 유형 | 개발/테스트 환경 (Development Environment) |
| 운영 환경 여부 | ❌ 아니오 - 운영 환경이 아닙니다 |
| 데이터 특성 | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| 테스트 정책 | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
테스트 실행 지침
-
CRUD 테스트 허용: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
-
품목 등록 테스트: 신규 등록(D-080~D-090) 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
-
품목 삭제 테스트: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다. 기존 시드 데이터는 보존합니다.
-
테스트 데이터 정리: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
0. 사이드바 메뉴 탐색 (공통 전제 조건)
0.1 메뉴 펼치기
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| NAV-001 | 전제 | 사이드바 최상단 스크롤 | 사이드바가 최상단으로 스크롤 |
| NAV-002 | 전제 | "모두 펼치기" 버튼 클릭 | 사이드바의 모든 메뉴가 펼쳐짐 |
| NAV-003 | 전제 | 메뉴 펼침 대기 | 2초 대기 후 모든 메뉴 펼침 완료 |
| NAV-004 | 기능 | 1차 메뉴 찾기 | 스크롤 없이 1차 메뉴(생산관리) 클릭 가능 |
| NAV-005 | 기능 | 2차 메뉴 클릭 | 펼쳐진 서브메뉴에서 품목관리 클릭 |
| NAV-006 | 기능 | 페이지 로드 확인 | 404 없이 정상 페이지 로드 |
💡 참고: "모두 펼치기" 버튼으로 전체 메뉴를 펼친 후 메뉴를 탐색하면 1차 메뉴를 누르지 못해 찾지 못하는 문제를 방지할 수 있습니다.
1. 목록 페이지 (List View)
1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|---|---|---|---|
| L-001 | 기본 | 페이지 접근 | /production/screen-production 정상 로딩, 테이블 표시 |
| 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 레벨 검증