5240구글 캘린더 연동
관리
← 개발기획문서초안↓ 내려받기

테스트 자동화 전략

버전 0.1 (2026-08-12) · 상태 개발 착수용 초안

핵심은 하나다. 삭제 판단을 순수 함수로 떼어내 단위 테스트로 덮는다. 이 연동의 사고는 전부 거기서 나는데, 그 로직은 DB도 구글 API도 없이 시험할 수 있다.


1. 계층

계층무엇을무엇 없이 도는가비중
단위대조 판단, 제목 조립, 날짜 변환, 임계 판정DB·네트워크·구글 API 전부 없이가장 많이
계약API 요청·응답 형식실제 WAS 없이(골든 파일)중간
통합실제 조회 SQL과 응답데모 서비스영역 필요적게
E2E동기화 한 바퀴구글 API는 가짜로아주 적게

위로 갈수록 빠르고 안정적이다. 아래로 갈수록 느리고 잘 깨진다 — 그래서 아래는 얇게 둔다.


2. 단위 — 여기에 힘을 준다

2.1 대조 로직을 순수 함수로 떼어낸다

reconcile(expected: Event[], existing: CalendarEvent[], opts) -> Plan
Plan = { create: Event[], patch: Patch[], delete: string[], abort?: string }

반드시 덮을 경우

입력기대
expected=[], existing=100건abort — 임계 초과
existing에 표식 없는 이벤트delete에 포함되지 않는다
창 밖 이벤트delete에 포함되지 않는다
같은 reqNo, srcStatus 20 → 30patch 1건, create·delete 0건
두 번 연속 적용2회차 Plan이 비어 있다(멱등)

2.2 그 밖의 순수 함수


3. 계약 — 골든 파일

docs/api-proposal/sample-request.json·sample-response.json을 골든 파일로 고정한다.


4. 통합 — 데모 서비스영역

실제 SQL이 도는지 확인한다. 느리므로 적게 둔다.

제품 프로시저의 동작이라 모의로는 검증되지 않는다


5. E2E — 구글 API는 가짜로

실제 구글 캘린더에 붙이지 않는다. 느리고, 쿼터에 걸리고, 남의 캘린더를 더럽힌다.


6. 회귀 — 기준점 대조

사이트 /baseline의 기대값 JSON과 API 응답을 대조하는 스크립트를 둔다(T-Z-01).

1) GET /api/baseline            → 기대값
2) POST /getTaaCalendarApiList.do (같은 조건) → 실제
3) 건수 · title · masked · 기간 비교 → 다르면 실패

7. CI 배치

시점무엇
매 커밋단위 + 계약 (수 초)
병합 전위 + E2E(가짜 구글)
야간위 + 통합(데모 서비스영역) + 기준점 대조
배포 전전체 + 실제 구글 수동 확인 1회

8. 자동화하지 않는 것

정직하게 밝혀 둔다. 아래는 사람이 본다.

"이 휴가 종류를 감추는 것이 맞는가"는 판단이다


9. 착수 순서

  1. 대조 함수 시그니처부터 고정한다. 실행부보다 먼저다
  2. 그 함수의 단위 테스트를 T-F-01~05로 먼저 쓴다(구현 전에)
  3. 골든 파일 계약 테스트
  4. 통합·E2E는 API가 실제로 도는 뒤에

2번을 먼저 하는 까닭 — 대량 삭제 방어는 나중에 붙이면 반드시 빠진다. 정상 경로가 먼저 돌기 시작하면 "일단 되니까"로 넘어가고, 사고는 운영에서 난다.