테스트 시나리오
버전 0.1 (2026-08-12) · 상태 개발 착수용 초안
위험 기반으로 쓴다. 정상 경로("휴가 하나가 캘린더에 생긴다")보다 아래가 훨씬 중요하다 — 이 연동에서 사고는 지우는 쪽과 권한 경계에서 난다.
기대값의 근거는 사이트의 인수 기준점(/baseline)에서 내려받는다. 같은 기간·같은 설정으로 뽑은 JSON과 API 응답을 대조하는 것이 판정의 기본이다.
0. 표 읽는 법
| 칸 | 뜻 |
|---|---|
| 위험 | 실패했을 때 무슨 일이 벌어지나 |
| 전제 | 시험 전에 만들어 둘 상태 |
| 기대 | 이것과 다르면 실패 |
우선순위 P1은 이것이 깨지면 운영에 올릴 수 없다는 뜻이다.
1. 권한 경계 — P1
T-A-01 · 권한 밖 직원은 나오지 않는다
- 위험 권한 밖 조직의 인사정보 유출
- 전제 연동 계정의 조직조회권한을 일부 조직으로 제한. 권한 밖 조직에 휴가 데이터 존재
- 절차 범위를 「전사」로 두고 조회
- 기대 권한 밖 직원의 건이 0건. 화면에서 전사를 골라도 마찬가지
T-A-02 · 요청 조직은 좁히기만 한다
- 전제 권한이 A조직. 요청
orgCd에 권한 밖 B조직을 넣는다 - 기대 B조직 건이 나오지 않는다. 오류가 아니라 빈 결과여도 된다
T-A-03 · 하위조직은 포함하지 않는다
- 위험 의도보다 넓은 범위가 조용히 나감
- 전제 상위조직 X 아래 하위조직 Y. 양쪽에 휴가 데이터
- 절차
orgCd = X로 조회 - 기대 X에 직접 속한 직원만. Y 소속은 없다
T-A-04 · inclOrgYn을 보내도 무시된다
- 절차 요청에
inclOrgYn: "Y"를 임의로 넣어 호출 - 기대 T-A-03과 동일한 결과. 파라미터가 존재하지 않으므로 범위가 넓어지지 않는다
2. 상태 필터 — P1
T-B-01 · 기본은 결재완료만
- 절차
reqStatusCds생략하고 호출 - 기대 상태 30만. 20이 섞여 나오면 실패
T-B-02 · 결재중 포함은 켰을 때만
- 절차
reqStatusCds = "20,30" - 기대 20·30이 나오고, 20의 제목에
[진행중]이 붙는다
T-B-03 · 임시저장·반려는 어떤 경우에도 안 나온다
- 절차
reqStatusCds = "10,20,30,40"을 억지로 넣어 호출 - 기대 10·40 건은 나오지 않거나, 나온다면 연동이 걸러 캘린더에 만들지 않는다
(어느 쪽으로 막을지는 구현 선택이나, 결과는 같아야 한다)
3. 취소 — P1
T-C-01 · 취소승인되면 캘린더에서 사라진다
- 전제 결재완료 휴가가 캘린더에 있다. 그 건에 대한 취소신청을 승인한다
- 기대 원건 상태가 40이 되어 응답에서 빠지고, 다음 동기화에서 이벤트가 삭제된다
T-C-02 · 취소신청이 결재중이면 그대로 남는다
- 전제 취소신청을 냈으나 아직 결재중(20)
- 기대 원건은 30 그대로이므로 이벤트가 남아 있다. 별도 표시를 붙이지 않는다
- 비고 담당자 문의가 예상되는 지점이라 안내에 적어 두었다
T-C-03 · 취소신청 자체가 새 일정이 되지 않는다
- 위험 "취소했더니 일정이 하나 더 생겼다"
- 전제 취소신청이 결재를 도는 중
- 기대 캘린더에 새 이벤트가 생기지 않는다(취소는
EAPT_CANCL_REQ에 따로 쌓인다)
T-C-04 · 취소 후 재신청은 별개 이벤트
- 전제 취소승인 후 같은 날짜로 새로 신청·승인
- 기대 새 신청번호의 새 이벤트가 생긴다. 옛 이벤트는 삭제되어 있다
4. 옵션 1426 — P1
T-D-01 · 미표시 코드는 응답에 아예 없다
- 전제
CNFG_VAL01에 코드 X 포함. X 종류 휴가 데이터 존재 - 기대 응답에 X 건이 없다. 연동이 거를 기회조차 없어야 한다
T-D-02 · 마스킹은 표시명으로 바뀐다
- 전제
CNFG_VAL02에 코드 Y,CNFG_VAL03에 표시명 지정 - 기대
MASK_YN='Y',MASK_NM이 응답에 실려 오고, 이벤트 제목이 표시명으로 나간다.
원래 종류 이름이 제목에 남아 있으면 실패
T-D-03 · 나중에 미표시로 바꾸면 이미 나간 일정도 사라진다
- 전제 코드 Z 휴가가 이미 캘린더에 있다. 이후
CNFG_VAL01에 Z 추가 - 기대 다음 동기화에서 Z 이벤트가 삭제된다(따로 찾아 지우는 코드 없이 대조로 정리)
T-D-04 · 표시명이 비었을 때
- 전제
CNFG_VAL02에 코드는 있으나CNFG_VAL03이 비어 있다 - 기대 O-01에서 정한 대체 문구로 나간다. 빈 제목·
undefined·원래 종류명이면 실패
5. 기간 — P1
T-E-01 · 달을 걸친 휴가가 빠지지 않는다
- 위험 가장 흔한 누락
- 전제 7/29~8/3 휴가. 조회 기간 8/1~8/31
- 기대 이 건이 포함된다(시작일만 보면 빠진다)
T-E-02 · 종일 이벤트의 끝날짜
- 전제 8/10 하루 휴가
- 기대
start.date=2026-08-10,end.date=2026-08-11. 캘린더 화면에 8/10 하루로 보인다
T-E-03 · 기간 상한
- 절차 401일 범위로 호출
- 기대 오류로 거절(
retCode ≠ 0)
6. 대조 안전장치 — P1
T-F-01 · 정상 응답 0건에 전건 삭제하지 않는다
- 위험 전 직원 일정 일괄 삭제. 이 문서에서 가장 중요한 항목
- 전제 캘린더에 이벤트 100건. 연동 계정의 조직조회권한을 회수해 응답이 정상 0건이 되게 한다
- 기대 아무것도 지우지 않고 중단하고 담당자에게 통지한다. 한 건이라도 지워지면 실패
T-F-02 · 조회 실패 시 무동작
- 절차 API가
retCode ≠ 0또는 타임아웃 - 기대 생성·수정·삭제 0건. 캘린더 상태가 그대로
T-F-03 · 표식 없는 이벤트는 건드리지 않는다
- 전제 같은 캘린더에 사람이 손으로 만든 일정 존재
- 기대 동기화 후에도 그 일정이 그대로 있다
T-F-04 · 기간 창 밖은 건드리지 않는다
- 위험 창이 하루 움직이며 과거 일정을 지운다
- 전제 과거 창 경계 직전에 이벤트가 있다. 날짜를 하루 넘겨 재실행
- 기대 창 밖으로 빠진 과거 이벤트가 삭제되지 않는다
T-F-05 · 삭제 임계 초과 시 중단
- 전제 삭제 예정이 전체의 임계(기본 30%)를 넘도록 데이터를 만든다
- 기대 중단·통지. 부분 삭제도 하지 않는다
7. 멱등과 갱신 — P2
T-G-01 · 두 번 돌려도 중복이 없다
- 절차 같은 조건으로 동기화 2회 연속
- 기대 2회차 생성 0건. 이벤트 총수 변화 없음
T-G-02 · 결재중 → 완료 시 제목만 바뀐다
- 전제 20 상태로 만든 이벤트. 이후 승인되어 30
- 기대 같은 이벤트가 수정되어
[진행중]이 사라진다. 삭제 후 재생성이면 실패
(직원이 건 알림이 사라진다)
T-G-03 · 회차가 겹쳐 돌지 않는다
- 절차 동기화 실행 중 같은 연동함으로 한 번 더 실행
- 기대 두 번째는 잠금에 막혀 대기하거나 건너뛴다
8. 갈래 — P2
T-H-01 · 조퇴/외출·경조휴가도 나간다
- 전제 조퇴/외출(1122)·경조휴가(1123) 데이터 존재
- 기대 둘 다 캘린더에 나간다(1426 미표시 대상이 아닌 한)
T-H-02 · 근무일정은 나가지 않는다
- 전제 근무일정 데이터 존재
- 기대 응답과 캘린더 어디에도 없다
T-H-03 · 교육 두 갈래가 모두 나온다
- 전제
EDUT_REQ·EDUT_HST2양쪽에 데이터 - 기대 둘 다 나오고 과정명이 제목에 제대로 들어간다(공통코드가 아니라 자유 문자열)
T-H-04 · 교육계획신청은 나오지 않는다
- 전제
EDUT_PLAN_REQ데이터 존재 - 기대 나오지 않는다(날짜가 없다)
9. 온보딩 화면 — P3
T-I-01 · 개인 지메일이면 도메인 위임을 고를 수 없다
T-I-02 · 계정 종류를 바꾸면 불가능해진 방식이 비워진다
T-I-03 · 공유 방법 미선택이면 「막는 것」에 뜬다
T-I-04 · 공유 방법에 따라 4단계 안내와 공지문이 바뀐다
10. 회귀 — 인수 판정
T-Z-01 · 기준점 대조
- 절차 사이트
/baseline에서 기대값 JSON을 받고, 같은 날·같은 설정으로 API를 호출 - 기대 건수·
title·masked·기간이 모두 일치 - 비고 기간 창이 오늘 기준으로 다시 계산되므로 같은 날 뽑은 것끼리 비교한다.
이 시험이 통과하면 1~5장 대부분이 함께 검증된다