TireO2O
QA 테스트 체크리스트
← 개발 가이드
기준: 2026-05-24 · Phase 0~5 ·
0 / 72
QA 테스트 체크리스트
타이어 장착점 O2O 플랫폼 전체 기능 검증 — 소비자 / 셀러 / 사장님 / 관리자 4개 역할 기반
소비자 18항목
셀러 14항목
사장님 18항목
관리자 22항목
미테스트
통과
실패
역할별 진행률
🚗
소비자
비회원 예약 플로우
0
/ 18
0%
실패 0
🏪
셀러
위젯 · 빌링
0
/ 14
0%
실패 0
🔧
사장님
예약 관리 · 정산
0
/ 18
0%
실패 0
🛡️
관리자
승인 · 빌링 제어
0
/ 22
0%
실패 0
소비자 테스트 —
18개 항목
🗺️
장착점 검색 (T013)
0/4
▼
홈 → 장착점 검색 페이지 진입
GPS 권한 요청 팝업 표시 · 허용 시 현재 위치 기반 지도 로드
Critical
GET /shops
실패
반경 슬라이더 조절 → 마커 업데이트
반경 변경 시 지도 마커 · 사이드패널 목록 실시간 갱신
High
GET /api/shops?lat&lng&radius
실패
GPS 거부 시 주소 검색 폴백
GPS 권한 거부 → 키워드 검색 입력창 표시 → 검색 결과 마커 표시
High
실패
지도 마커 클릭 → 사이드패널 연동
마커 클릭 시 해당 장착점 정보 하이라이트 · 리스트 항목 클릭 시 지도 이동
Medium
실패
🏪
장착점 상세 · 공임비 (T014)
0/3
▼
장착점 상세 페이지 로드
영업시간 · 리프트 수 · 평점 · 주소 · 미니맵 정상 표시
Critical
GET /api/shops/[id]
실패
공임비 테이블 차종 × 인치 매트릭스
국산/수입 탭 전환 · 14~19인치 공임 가격 정확성 확인
Critical
GET /api/shops/[id]
실패
예약 진행 CTA 버튼 동작
차종 선택 후 "예약하기" 클릭 → 예약 폼으로 이동 (선택 정보 유지)
High
실패
📱
SMS OTP 인증 (T015)
0/4
▼
OTP 발송 → 수신 → 인증 성공
휴대전화 입력 → 6자리 OTP 발송 → 입력 → 인증 완료
Critical
POST /api/sms/send
실패
OTP 재발송 동작
재전송 버튼 클릭 → 새 OTP 발급 · 이전 OTP 무효화
High
POST /api/sms/send
실패
잘못된 OTP 5회 입력 → 차단
5회 실패 시 "시도 횟수 초과" 메시지 · 재발송 필요
High
POST /api/sms/verify
실패
Rate Limiting 동작
동일 번호 분당 3회 초과 → 429 응답
Medium
실패
📋
예약 플로우 (T016)
0/4
▼
예약 폼 입력 → Zod 유효성 검증
차량번호/차종/인치/일시/연락처 필수 입력 · 잘못된 형식 에러 표시
Critical
실패
가용 슬롯 조회 → 날짜/시간 선택
영업시간 기반 가용 슬롯 표시 · 이미 예약된 슬롯 비활성화
Critical
GET /api/bookings/slots
실패
예약 확정 → 예약번호 발급
예약 제출 → 확정 페이지 · 예약번호(BOOK-YYYYMMDD-XXXXX) 표시
Critical
POST /api/bookings
실패
동시 예약 충돌 처리
같은 슬롯 동시 예약 시 한 명만 성공 · 다른 사용자에게 에러 표시
High
실패
💬
알림톡 · 모바일 (T017~T018)
0/3
▼
예약 확정 → 카카오 알림톡 수신
예약 확정 즉시 BOOKING_CONFIRM 템플릿 발송 · SMS 폴백
Critical
실패
모바일 뷰포트 (360~414px) 전체 플로우
검색 → 상세 → 예약 → 확정 모바일 UI 정상 표시
High
실패
카카오맵 터치 제스처
모바일에서 핀치 줌/드래그 정상 동작 · 페이지 스크롤과 충돌 없음
Medium
실패
셀러 테스트 —
14개 항목
🔑
로그인 · 인증 (T009)
0/3
▼
셀러 로그인 → /seller/widget 리다이렉트
이메일/비밀번호 입력 → 위젯 관리 페이지로 자동 이동
Critical
POST /api/auth/[...nextauth]
실패
잘못된 비밀번호 → 에러 메시지
틀린 비밀번호 입력 시 "이메일 또는 비밀번호가 일치하지 않습니다" 표시
High
실패
셀러가 /admin, /partner 접근 시 차단
RBAC 가드 → 셀러 대시보드로 리다이렉트
Critical
실패
🔗
위젯 발급 · 관리 (T019)
0/4
▼
위젯 URL · QR 코드 표시
widgetId 기반 URL 생성 · QR 코드 렌더링 · URL 복사 버튼
Critical
실패
위젯 URL 접속 → 소비자 예약 플로우
/widget/[widgetId] 접속 → 장착점 검색/예약 가능
Critical
GET /widget/[widgetId]
실패
이미지링크 모드 (mode=link)
스마트스토어 상세 이미지에서 외부링크 진입 정상 동작
High
실패
구매완료 알림톡 진입 (mode=purchase)
orderId 파라미터 포함 진입 · 위젯 접속 이벤트 Redis 카운터 증가
High
실패
💳
빌링키 · 정기결제 (T020~T021)
0/4
▼
빌링키 발급 (카드 등록)
토스페이먼츠 카드 인증 → 빌링키 저장 → 구독 상태 활성화
Critical
POST /api/billing/callback
실패
최초 결제 즉시 차감
빌링키 발급 직후 첫 결제 실행 · 영수증 정보 표시
Critical
POST /api/billing/charge
실패
구독 상태 · 다음 결제일 표시
구독 활성/연체/차단 상태 배지 · 다음 결제 예정일 표시
High
실패
결제 실패 → 연체 상태 전이
결제 실패 시 연체 상태 · 3회 실패 후 차단 · 위젯 비활성화
Critical
실패
⏰
BillingScheduler (T021)
0/3
▼
매일 자정 cron → 당일 결제 대상 처리
billing-scheduler PM2 프로세스 → Subscription 조회 → 결제 호출
Critical
실패
분산락 (Redis SETNX) 중복 방지
동시 실행 시 한 인스턴스만 결제 처리
High
실패
재시도 로직 (1h/6h/24h)
BillingAttempt 기록 · 실패 시 간격 재시도 · 3회 초과 차단
High
실패
사장님(파트너) 테스트 —
18개 항목
🔑
로그인 · 대시보드 (T009, T012)
0/3
▼
파트너 로그인 → /partner/dashboard 리다이렉트
partner@tire.habyapps.com / partner1234!
Critical
실패
대시보드 KPI 카드 표시
오늘 예약 수 · 입고 대기 · 이번달 정산 금액 정상 표시
High
실패
사이드바 네비게이션
예약 캘린더 · 예약 목록 · 정산 내역 · 로그아웃 링크 정상 동작
Medium
실패
📅
예약 캘린더 (T022)
0/4
▼
월별/주별/일별 캘린더 뷰 전환
탭 전환 시 예약 건 정상 표시 · 날짜 이동 정상 동작
High
실패
예약 상세 Sheet 표시
예약 클릭 → 차량번호/연락처/시간/상태 정보 표시
Critical
실패
상태 변경: 접수 → 입고 → 완료
각 단계 버튼 클릭 → 상태 즉시 반영 · 알림톡 자동 발송
Critical
PATCH /api/bookings/[id]/status
실패
예약 취소 처리
취소 사유 입력 → 상태 CANCELLED · 취소 알림톡 발송
High
PATCH /api/bookings/[id]/status
실패
🔔
SSE 실시간 알림 (T023)
0/4
▼
SSE 연결 수립
/api/notifications/stream 연결 · EventSource 활성 상태 확인
Critical
GET /api/notifications/stream
실패
신규 예약 → 토스트 알림 수신
소비자 예약 확정 → 파트너 화면에 실시간 토스트 표시
Critical
실패
연결 끊김 → 자동 재연결
네트워크 중단 후 복구 시 자동 재연결 · 이벤트 누락 없음
High
실패
사운드 알림 옵션
알림음 ON/OFF 토글 · 설정 유지
Low
실패
💰
정산 내역 (T024)
0/4
▼
기간별 정산 테이블 조회
날짜 필터 → 해당 기간 공임비 정산 내역 표시
Critical
GET /api/settlements
실패
월별 합계 계산 정확성
개별 건 합계 = 월별 합계 일치 확인
High
실패
CSV 다운로드
다운로드 버튼 → CSV 파일 생성 · 데이터 정확성
Medium
실패
예약 완료 → Settlement 자동 생성
예약 상태 COMPLETED 전환 시 정산 레코드 자동 생성
Critical
실패
🛡️
세션 · 보안 (T009)
0/3
▼
30분 세션 만료 → 로그인 리다이렉트
비활동 30분 후 API 호출 시 로그인 페이지로 이동
High
실패
슬라이딩 세션 갱신
활동 중 15분마다 세션 자동 갱신 · 끊김 없이 사용 가능
Medium
실패
로그아웃 → 세션 완전 삭제
로그아웃 후 뒤로가기 → 보호된 페이지 접근 불가
High
실패
관리자 테스트 —
22개 항목
🔑
로그인 · RBAC (T009)
0/3
▼
관리자 로그인 → /admin/shops 리다이렉트
admin@tire.habyapps.com / admin1234!
Critical
실패
비인증 사용자 /admin 접근 → 로그인 리다이렉트
쿠키 없이 /admin/shops 접근 → /admin/login 이동
Critical
실패
PARTNER/SELLER 역할로 /admin 접근 → 차단
다른 역할 로그인 상태에서 /admin 접근 → 본인 대시보드 리다이렉트
Critical
실패
🏢
가맹점 승인 (T010)
0/5
▼
가맹점 신청 목록 로드
전체/신청중/승인 탭 필터 · 페이지네이션 동작
Critical
GET /api/admin/shops
실패
가맹점 상세 모달
상세 버튼 → 사업자등록번호/연락처/위치 정보 표시
High
실패
가맹점 승인 처리
승인 버튼 → 상태 변경 → 목록 갱신
Critical
PATCH /api/admin/shops/[id]
실패
가맹점 반려 (사유 입력)
반려 버튼 → 사유 입력 모달 → 상태 변경
High
PATCH /api/admin/shops/[id]
실패
공임비 테이블 편집
승인된 가맹점 → 영업시간/리프트 수/공임표 수정 · 저장
High
PUT /api/admin/shops/[id]/fee-table
실패
🏪
셀러 승인 · 빌링 제어 (T011)
0/5
▼
셀러 신청 목록 로드
전체/신청중/승인/차단 탭 · 페이지네이션
Critical
GET /api/admin/sellers
실패
셀러 승인/반려 처리
승인 → 위젯 발급 가능 · 반려 → 사유 입력
Critical
PATCH /api/admin/sellers/[id]
실패
구독 상태 카드 (활성/연체/차단)
셀러별 구독 상태 배지 · 다음 결제일 · 빌링키 등록 여부
High
GET /api/admin/sellers/[id]/subscription
실패
구독 수동 토글 (활성↔차단)
수동 차단 → 위젯 비활성화 · 수동 활성화 → 위젯 복구
Critical
PATCH /api/admin/sellers/[id]/subscription
실패
BillingAttempt 이력 조회
결제 시도 이력 테이블 · 성공/실패/에러코드 표시
High
GET /api/admin/sellers/[id]/billing-attempts
실패
💰
정산 관리 (T024)
0/3
▼
정산 확정 마킹
미확정 정산 선택 → 확정 처리 · 상태 CONFIRMED
Critical
실패
지급완료 마킹
확정된 정산 → 지급완료 처리 · 상태 PAID
High
실패
정산 필터 · 검색
장착점별/기간별/상태별 필터 정상 동작
Medium
실패
🖥️
인프라 · 모니터링 (T030~T032)
0/6
▼
헬스체크 API 정상 응답
GET /api/health → 200 OK · DB/Redis 연결 상태 포함
Critical
GET /api/health
실패
Sentry 에러 리포팅 동작
의도적 에러 발생 → Sentry 대시보드에 이벤트 수신 확인
High
실패
PM2 프로세스 안정성
pm2 status → tire-web online · restart 횟수 비정상 증가 없음
High
실패
SSL 인증서 유효성
HTTPS 접속 정상 · 인증서 만료 30일 이상 잔여
Critical
실패
MariaDB 자동 백업 확인
cron 백업 정상 실행 · 최근 백업 파일 존재 · 7일 보관 정책
High
실패
보안 헤더 검증
X-Content-Type-Options · X-Frame-Options · X-XSS-Protection · Referrer-Policy
Medium
실패
전체 진행:
0 / 72
전체 초기화