피드로 돌아가기
올리브영 테크블로그Frontend
원문 읽기
W CARE 서비스 프론트엔드를 TDD로 개발해본 후기
올리브영 프론트엔드팀이 TDD 방식으로 월경 이벤트 판별 알고리즘을 개발해 QA 단계에서 알고리즘 버그를 1% 이하로 감소
AI 요약
Context
여성의 월경 주기는 신체적·정신적 요인에 따라 크게 변화하며, 월경 이벤트가 겹치는 복잡한 경우의 수가 발생한다. 월경 시작일부터 다음 월경 시작 예정일까지 기간이 15일로 짧아지면 가임기와 월경 이벤트가 겹칠 수 있고, PMS 기간 중 가임기가 시작되기도 하는 등 23개의 월경 이벤트 조합을 정확히 판별해야 했다.
Technical Solution
- 월경 이벤트 판별 알고리즘을 순수 함수로 설계: 정해진 입력에 정해진 출력을 만들도록 사이드 이펙트가 없는 함수 단위로 구성
- 경계값 분석 기법으로 테스트 케이스 작성: 월경 시작일/종료일의 경계값(전날, 시작일, 종료일, 다음날)을 포함한 테스트 케이스로 누락 범위 방지
- Red-Green-Refactor 사이클 반복: 실패하는 테스트 작성 → 테스트를 통과하는 코드 작성 → 코드 개선 과정을 일반적 케이스부터 예외적 케이스까지 점진적으로 진행
- 관심사 분리를 통한 모듈화: 일반케이스체커, 계산기, 프롭스산출기 등 역할별로 코드를 분리하고 정의된 인터페이스로 모듈 간 메시지 교환
- 커스텀 훅으로 알고리즘 래핑: 검증된 알고리즘 구현체를 React 커스텀 훅으로 감싸 컴포넌트에서 테스트된 로직만 사용
Impact
월경 이벤트 판별 알고리즘에 발생한 버그가 전체 서비스 버그 중 1% 미만 기록. 테스트 미적용 코드 버그 수정 대비 테스트 적용 코드 버그 수정이 더 빠르고 안전하게 진행.
Key Takeaway
복잡한 도메인 로직을 TDD로 개발할 때 테스트 코드 작성이 알고리즘 구체화와 초기 설계에 직접 도움되며, 경계값 분석 같은 체계적 테스트 전략과 순수 함수 설계의 조합이 높은 코드 품질과 빠른 변경 감지를 동시에 달성할 수 있다.
실천 포인트
복합 비즈니스 로직을 다루는 프론트엔드 개발에서 TDD와 경계값 분석을 함께 적용하면, 테스트 케이스 누락을 방지하면서 알고리즘 명세를 구체화할 수 있고, 이는 도메인 전문가(PO)와의 협업 시 모호한 부분을 사전에 발견해 요구사항 변경에 따른 협업 비효율을 최소화할 수 있다.