QA 체크리스트

행정사 견적 비교 플랫폼 — 3-Role 기능 테스트 시나리오
의뢰인 · 행정사 · 관리자 MVP v1.0 consult.habyapps.com
전체 항목
0
통과 ✅
0
실패 ❌
0
건너뜀
0
미확인
0
전체 진행률 0%
결과는 브라우저에 자동 저장됩니다.
C1 인증 · 회원가입 · 로그인
0/5
C1-01
CRITICAL
의뢰인 회원가입
/auth/register → 이름·이메일·비밀번호 입력 → 가입 성공 → /client/requests 리다이렉트 확인
C1-02
CRITICAL
의뢰인 로그인 (UAT 계정)
uat-client@test.com / UatPass123! → 로그인 성공 → Sanctum 토큰 발급 → /client/requests 이동 확인
C1-03
HIGH
잘못된 자격증명 처리
존재하지 않는 이메일 또는 틀린 비밀번호 → 422/401 오류 응답 + 에러 메시지 노출 확인
C1-04
HIGH
로그아웃
로그아웃 버튼 클릭 → 토큰 무효화 → /auth/login 리다이렉트 → 인증 필요 페이지 재접근 시 재차 로그인 요구 확인
C1-05
MEDIUM
Role 가드 — 행정사/관리자 경로 접근 차단
의뢰인 로그인 상태에서 /scrivener/... 또는 /admin/... URL 직접 접근 시 403 또는 /client로 리다이렉트 확인
C2 의뢰서 작성 · 카테고리 · 파일 업로드
0/5
C2-01
CRITICAL
카테고리 목록 로드
의뢰서 작성 화면에서 활성 카테고리 목록(음주운전, 인허가, 비자 등)이 드롭다운으로 정상 표시되는지 확인
C2-02
CRITICAL
의뢰서 작성 및 제출 (draft → published)
카테고리 선택 + 제목 + 내용 입력 → 제출 → requests 목록에 published 상태로 표시 확인
C2-03
HIGH
파일 첨부 업로드
의뢰서 작성 시 파일(pdf/jpg/png) 첨부 → 업로드 성공 → storage/app/uploads 저장 → 파일명 표시 확인
C2-04
HIGH
필수 항목 유효성 검사
카테고리 미선택 또는 내용 빈칸 제출 → 422 응답 + 인라인 에러 메시지 표시 확인
C2-05
MEDIUM
의뢰서 목록 조회
/client/requests → 본인 의뢰서 목록 + 상태 배지(published/quoted/matched/completed) 확인
C3 견적 수신 · 비교 · 행정사 선정
0/5
C3-01
CRITICAL
견적 수신 목록 표시
의뢰서에 견적 접수 시 상태가 quoted로 변경되고 견적 목록(금액·처리기간·행정사 별점)이 표시되는지 확인
C3-02
CRITICAL
의뢰인 연락처 블라인드 (matched 이전)
견적 상세에서 의뢰인 연락처(전화·이메일)가 *** 처리되는지 확인. DevTools Network에서 API 응답 JSON도 마스킹인지 검증
C3-03
CRITICAL
행정사 선정 (matched 전환)
견적 중 1개 선택 → "선정" 클릭 → 의뢰 상태 matched로 변경 → 선정된 행정사 연락처 노출 확인
C3-04
HIGH
중복 선정 불가
이미 matched 상태 의뢰에서 다른 견적을 선정 시도 → 409 또는 에러 메시지 확인 (이중 매칭 방지)
C3-05
MEDIUM
타인 의뢰서 접근 차단
타 의뢰인의 request_id로 직접 URL 접근 시 403 또는 404 응답 확인 (소유권 가드)
C4 1:1 메시지 · 채팅
0/3
C4-01
HIGH
메시지 송신
행정사와의 1:1 채팅방에서 메시지 입력 → 전송 → 즉시 채팅 목록에 표시 확인
C4-02
HIGH
메시지 수신 (Adaptive Polling)
행정사 답변 전송 후 5초 이내 의뢰인 화면에 새 메시지 반영 확인 (활성 5s / 백그라운드 30s 전환)
C4-03
MEDIUM
타인 채팅방 접근 차단
다른 의뢰인-행정사 간 채팅방 ID 직접 접근 → 403 응답 확인
C5 리뷰 · 별점
0/3
C5-01
HIGH
리뷰 작성 (completed 상태 전제)
completed 상태 의뢰에서 별점(1~5) + 텍스트 리뷰 작성 → 201 응답 + 행정사 프로필 평점 반영 확인
C5-02
HIGH
리뷰 중복 제출 차단
동일 의뢰에 두 번째 리뷰 제출 시도 → 409 또는 에러 메시지 확인
C5-03
MEDIUM
matched 미만 상태에서 리뷰 차단
published/quoted 상태 의뢰에서 리뷰 작성 시도 → 403 응답 확인
C6 알림 · 보안
0/4
C6-01
HIGH
견적 도착 알림톡 수신
행정사가 견적 제출 시 의뢰인에게 카카오 알림톡 발송 → notifications 테이블 기록 확인
C6-02
CRITICAL
미인증 상태 API 접근 차단
로그아웃 후 /api/v1/requests 등 인증 필요 API 직접 호출 → 401 응답 확인
C6-03
HIGH
인앱 알림 목록
알림 아이콘 클릭 → 견적 수신·메시지 알림 목록 표시 → 읽음 처리 후 뱃지 숫자 감소 확인
C6-04
MEDIUM
페이지 새로고침 후 세션 유지
로그인 후 F5 새로고침 → Pinia + localStorage 토큰으로 인증 상태 복원 → 자동 로그인 유지 확인
S1 행정사 회원가입 · 승인 절차
0/4
S1-01
CRITICAL
행정사 회원가입 (자격증 업로드 포함)
행정사 전용 가입 폼 → 이름·이메일·비밀번호·전문분야 + 자격증/사업자등록증 파일 → 가입 성공 + approval_status: pending 확인
S1-02
CRITICAL
미승인 행정사 — 견적 제출 차단 (3-Layer Guard)
uat-scrivener@test.com (pending) 로그인 후 견적 제출 API 호출 → 403 응답 + "승인 대기 중" 메시지 확인
S1-03
CRITICAL
관리자 승인 후 견적 제출 가능
관리자가 pending → approved 처리 후 행정사 재로그인 → 견적 제출 정상 동작 확인
S1-04
HIGH
자격증 파일 — 관리자 승인 전 공개 URL 미노출
pending 상태 행정사 자격증 파일의 공개 URL 직접 접근 → 401/403 확인 (storage 접근 제어)
S2 의뢰 조회 · 견적 제출
0/5
S2-01
CRITICAL
전문 분야 의뢰 목록 조회
승인된 행정사 로그인 → /scrivener/requests → 본인 전문 카테고리의 published 의뢰만 표시 확인
S2-02
CRITICAL
의뢰인 연락처 블라인드 확인
의뢰 상세에서 의뢰인 전화번호·이메일이 *** 처리되는지 + API 응답 JSON에서도 마스킹 확인 (matched 이전)
S2-03
CRITICAL
견적서 제출
의뢰 상세에서 예상 비용·처리 기간·상세 메시지 입력 → 제출 → quotes 목록에 pending 상태 추가 확인
S2-04
HIGH
중복 견적 제출 차단
동일 의뢰에 같은 행정사가 두 번째 견적 제출 시도 → 409 응답 또는 에러 메시지 확인
S2-05
HIGH
신규 의뢰 알림톡 수신
의뢰인이 전문 분야 의뢰서 게시 시 행정사에게 카카오 알림톡 발송 → notifications 테이블 기록 확인
S3 프로필 관리 · 대시보드
0/4
S3-01
HIGH
프로필 수정 (전문 분야·경력·바이오)
/scrivener/profile → 전문 분야(다중 선택)·경력 연수·바이오 수정 → 저장 → 반영 확인
S3-02
MEDIUM
행정사 대시보드
/scrivener/dashboard → 제출 견적 수·선정 건수·수신 리뷰 평점 요약 카드 표시 확인
S3-03
MEDIUM
리뷰 목록 조회
본인 프로필 페이지에서 의뢰인이 작성한 별점·리뷰 목록이 최신순으로 표시되는지 확인
S3-04
MEDIUM
Role 가드 — 의뢰인/관리자 경로 접근 차단
행정사 로그인 상태에서 /client/... 또는 /admin/... URL 직접 접근 → 403 또는 리다이렉트 확인
S4 1:1 메시지 · 알림
0/3
S4-01
HIGH
의뢰인과 메시지 송수신
행정사 채팅방에서 메시지 입력·전송 → 의뢰인 화면에 폴링으로 반영 확인 (양방향 테스트)
S4-02
MEDIUM
선정 알림
의뢰인이 행정사를 선정하면 해당 행정사에게 알림톡 + 인앱 알림 발송 확인
S4-03
LOW
백그라운드 폴링 전환
채팅창 비활성(탭 전환 또는 5분 경과) 시 폴링 주기가 5s → 30s로 전환되는지 Network 탭에서 확인
A1 인증 · 접근 제어
0/3
A1-01
CRITICAL
관리자 로그인 (UAT 계정)
uat-admin@test.com / UatPass123! → 로그인 성공 → /admin/dashboard 이동 확인
A1-02
CRITICAL
비관리자의 /admin 경로 접근 차단
의뢰인/행정사 계정으로 /admin/... 직접 접근 → 403 응답 확인
A1-03
HIGH
미인증 상태 관리자 API 접근 차단
로그아웃 후 /api/v1/admin/... 직접 호출 → 401 응답 확인
A2 대시보드 통계
0/3
A2-01
HIGH
일간·주간 KPI 카드
/admin/dashboard → 신규 가입자·의뢰 건수·매칭 성공률 카드가 0 이상의 값으로 표시되는지 확인
A2-02
MEDIUM
기간 필터 (일간/주간)
기간 필터 전환 시 KPI 수치가 해당 기간에 맞게 변경되는지 확인
A2-03
MEDIUM
데이터 없는 경우 빈 상태 처리
통계 데이터가 0건일 때 에러 없이 "데이터 없음" 표시 확인 (500 오류 미발생)
A3 행정사 승인 · 반려
0/4
A3-01
CRITICAL
승인 대기 행정사 목록
/admin/scriveners → pending 상태 행정사 목록 표시 + 자격증 파일 뷰어 정상 동작 확인
A3-02
CRITICAL
행정사 승인 처리
pending 행정사 "승인" 클릭 → approval_status: approved → 행정사 로그인 후 견적 제출 가능 상태 확인
A3-03
CRITICAL
행정사 반려 처리 (사유 입력)
pending 행정사 "반려" 클릭 → 사유 입력 모달 → 제출 → approval_status: rejected + 사유 저장 확인
A3-04
HIGH
반려 행정사 — 견적 제출 차단 유지
rejected 상태 행정사 로그인 후 견적 제출 API → 403 응답 확인
A4 회원 관리
0/4
A4-01
HIGH
전체 회원 목록 조회
/admin/users → role 필터(의뢰인/행정사) + 검색 + 페이지네이션 동작 확인
A4-02
HIGH
회원 상세 조회
특정 회원 클릭 → 가입일·역할·의뢰/견적 통계 등 상세 정보 표시 확인
A4-03
MEDIUM
회원 비활성화 / 활성화
회원 계정 비활성화 처리 → 해당 계정 로그인 시 401 또는 "계정 비활성" 응답 확인
A4-04
MEDIUM
자신의 관리자 계정 삭제·강등 차단
현재 로그인된 관리자 계정 비활성화/삭제 시도 시 에러 응답 확인 (자기 잠금 방지)
A5 의뢰 · 견적 모니터링
0/3
A5-01
HIGH
전체 의뢰 목록 조회
/admin/requests → 모든 의뢰 상태(draft~completed) 목록 + 상태 필터·검색 동작 확인
A5-02
MEDIUM
의뢰 상세 (관리자 뷰)
의뢰 상세에서 의뢰인 정보(연락처 포함)·제출된 견적 목록·매칭 이력 전체 열람 가능 확인
A5-03
MEDIUM
견적 목록 모니터링
/admin/quotes → 전체 견적 금액·행정사·상태 목록 + 이상값(0원, 음수) 필터 확인
A6 알림톡 관리
0/3
A6-01
MEDIUM
알림 발송 이력 조회
/admin/notifications → 발송된 알림톡 이력(수신자·템플릿·발송시각·성공여부) 목록 표시 확인
A6-02
MEDIUM
알림톡 발송 실패 처리
카카오 API 오류 시 notifications 테이블에 failure 상태로 기록되고 앱은 500 에러 없이 정상 동작 확인
A6-03
LOW
수동 알림 재전송
실패한 알림 항목에서 "재전송" 버튼 클릭 → API 재호출 → 상태 업데이트 확인
A7 보안 · 환경변수
0/3
A7-01
CRITICAL
.env 파일 공개 접근 차단
https://consult.habyapps.com/.env 직접 접근 → 404 또는 403 응답 확인 (.htaccess DenyAll)
A7-02
CRITICAL
API 에러 응답에 스택 트레이스 미노출
500 에러 발생 시 응답 JSON에 exception/trace/file 정보가 포함되지 않는지 확인 (APP_DEBUG=false)
A7-03
HIGH
CSRF 토큰 검증
Sanctum SPA 모드에서 CSRF 토큰 없이 POST/PUT/DELETE 요청 → 419 CSRF 오류 응답 확인