Files
sam-hotfix/skip_scenario_analysis_2026-01-27.md
2026-01-29 11:02:37 +09:00

5.8 KiB

SKIP 시나리오 근본 원인 분석 리포트

분석 일시: 2026-01-27 07:45:00 KST 분석 대상: 3개 SKIP 시나리오 테스트 서버: https://dev.codebridge-x.com


요약

시나리오 테스트 시도 URL 실제 동작 URL 근본 원인
attendance-checkin /hr/attendance-checkin /hr/attendance URL 구성 오류
attendance-reason /hr/attendance-reason /hr/attendance-management URL 구성 오류
attendance-register /hr/attendance-register /hr/attendance-management URL 구성 오류

공통 근본 원인: 테스트 실행 시 시나리오 ID를 URL 경로로 사용함 (JSON에 정의된 URL 무시)


상세 분석

1. attendance-checkin (근태현황 출퇴근 테스트)

시나리오 파일: attendance-checkin.json

JSON 정의 내용:

{
  "id": "attendance-checkin",
  "url": "/ko/hr/attendance",
  "menuNavigation": {
    "level1": "인사관리",
    "level2": "근태현황"
  }
}

실제 동작 확인:

  • 메뉴 경로: 인사관리 > 근태현황
  • 실제 URL: /hr/attendance
  • 페이지 상태: 정상 동작
  • 기능: 출퇴근하기, 현재 위치 기반 출근/퇴근 기록

근본 원인:

  • 테스트 러너가 시나리오 ID attendance-checkin을 URL로 변환하여 /hr/attendance-checkin 접근
  • JSON에 정의된 /ko/hr/attendance URL을 사용하지 않음

해결 방안:

  • 테스트 러너가 JSON의 url 필드 또는 menuNavigation 사용하도록 수정
  • 또는 시나리오 ID를 URL과 일치시킴 (예: attendance/hr/attendance)

2. attendance-reason (근태 사유 등록 테스트)

시나리오 파일: attendance-reason.json

JSON 정의 내용:

{
  "id": "attendance-reason",
  "url": "/ko/hr/attendance-management",
  "menuNavigation": {
    "level1": "인사관리",
    "level2": "근태관리"
  }
}

실제 동작 확인:

  • 메뉴 경로: 인사관리 > 근태관리
  • 실제 URL: /hr/attendance-management
  • 페이지 상태: 정상 동작
  • 기능: 직원 출퇴근 및 근태 정보 관리

근본 원인:

  • 테스트 러너가 시나리오 ID attendance-reason을 URL로 변환하여 /hr/attendance-reason 접근
  • JSON에 정의된 /ko/hr/attendance-management URL을 사용하지 않음

추가 확인 필요:

  • 시나리오는 "사유 등록" 버튼 클릭을 기대하지만, 현재 페이지에는 "근태 등록" 버튼만 확인됨
  • "사유 등록" 기능이 "근태 등록" 모달 내부에 있는지 또는 별도 존재하는지 확인 필요

3. attendance-register (근태 등록 테스트)

시나리오 파일: attendance-register.json

JSON 정의 내용:

{
  "id": "attendance-register",
  "url": "/ko/hr/attendance-management",
  "menuNavigation": {
    "level1": "인사관리",
    "level2": "근태관리"
  }
}

실제 동작 확인:

  • 메뉴 경로: 인사관리 > 근태관리
  • 실제 URL: /hr/attendance-management
  • 페이지 상태: 정상 동작
  • "근태 등록" 버튼: 존재 확인

근본 원인:

  • 테스트 러너가 시나리오 ID attendance-register을 URL로 변환하여 /hr/attendance-register 접근
  • JSON에 정의된 /ko/hr/attendance-management URL을 사용하지 않음

근본 원인 (Root Cause)

문제점

시나리오 ID 기반 URL 생성 로직:
  scenario.id = "attendance-checkin"
  → URL = "/hr/" + scenario.id
  → URL = "/hr/attendance-checkin" ❌ (존재하지 않음)

JSON에 정의된 URL 무시:
  scenario.url = "/ko/hr/attendance"
  → 사용되지 않음 ❌

올바른 동작

JSON URL 또는 메뉴 네비게이션 사용:
  scenario.url = "/ko/hr/attendance"
  → URL = "/hr/attendance" ✅

또는 menuNavigation 사용:
  인사관리 클릭 → 근태현황 클릭
  → 실제 URL로 이동 ✅

권장 해결 방안

방안 1: 테스트 러너 수정 (권장)

테스트 러너가 URL 결정 시 다음 우선순위 적용:

  1. menuNavigation 정의 시: 메뉴 클릭으로 네비게이션
  2. url 필드 정의 시: 해당 URL로 직접 이동
  3. 둘 다 없을 경우에만: 시나리오 ID 기반 URL 생성

방안 2: 시나리오 파일명/ID 수정

시나리오 ID를 실제 URL 경로와 일치시킴:

attendance-checkin.json → attendance.json (id: "attendance")
attendance-reason.json → attendance-management-reason.json
attendance-register.json → attendance-management-register.json

방안 3: fallbackUrls 활용

시나리오 JSON에 이미 정의된 fallbackUrls 활용:

"fallbackUrls": [
  "/ko/hr/attendance",
  "/hr/attendance"
]

실제 메뉴 구조 (확인됨)

인사관리/
├── 사원관리
├── 부서관리
├── 카드관리
├── 근태현황     → /hr/attendance (출퇴근 체크인/아웃)
├── 근태관리     → /hr/attendance-management (근태 등록/관리)
├── 급여관리
└── 휴가관리

참고: "근태체크인", "근태사유", "근태등록"이라는 별도 메뉴는 존재하지 않음. 해당 기능들은 "근태현황"과 "근태관리" 페이지 내에 통합되어 있음.


결론

시나리오 페이지 존재 기능 동작 수정 필요
attendance-checkin /hr/attendance 출퇴근하기 URL 경로만 수정
attendance-reason /hr/attendance-management ⚠️ 확인 필요 URL + 기능 확인
attendance-register /hr/attendance-management 근태 등록 URL 경로만 수정

최종 판정: 3개 시나리오 모두 미구현이 아닌 URL 구성 오류


Generated by Claude Code E2E Test Analyzer