[1팀 이은지] Chapter 3-2 프론트엔드 테스트 코드 #42
Open
angielxx wants to merge 26 commits intohanghae-plus:mainfrom
Open
Conversation
매일 반복 일정 통합 시나리오: - 폼에서 매일 반복 선택 - 이벤트 리스트에 반복 일정 표시 - 주간/월간 뷰에 매일 단위로 표시 - 반복 아이콘 및 정보 표시
테스트 통과를 위한 최소 구현: - useEventOperations에 createRepeatEvent 함수 추가 - 매일/매주/매월/매년 반복 로직 구현 - UI에 반복 일정 아이콘 및 정보 표시 - Mock 핸들러 개선으로 고유 ID 생성 현재 한계: 실제 반복 로직은 구현되었으나 테스트 시나리오 조정 필요
테스트 통과를 위한 구현 완성: - 반복 일정 생성 로직 최적화 및 안정화 - 테스트 코드 개선으로 더 명확한 검증 - 날짜 및 이벤트 처리 로직 개선
테스트 통과를 위한 유틸 함수 완성: - 이벤트 유틸리티 함수 단위 테스트 추가
매월 반복 일정 엣지 케이스: - 31일의 경우 31일이 없는 달에는 반복 일정 생성되지 않음 - 윤년 2월 29일에 매년 생성 시 평년 2월 마지막 날짜에 반복 일정 생성되지 않음
# Conflicts: # src/__tests__/medium.integration.spec.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
8주차 과제 체크포인트
기본 과제
필수
선택
심화 과제
과제를 시작함에 있어 심화과제에 대한 테스트전략을 합의하기 위해 코어타임에 각자 어떤 테스트 전략을 사용하면 좋을지 논의했습니다. 주로 트로피 전략파와 피마리드 전략파로 나뉘었고, 결론적으로 트로피 전략을 사용하기로 정했습니다.
각 팀원들의 테스트 전략은?
🏆 테스트 트로피 전략 지지자들
🔺 테스트 피라미드 전략 지지자들
합의된 테스트 전략과 그 이유는 무엇인가요?
최종적으로 합의된 테스트 전략은 트로피 전략입니다. 트로피 전략을 선택하게된 가장 큰 이유는 실용적인 관점에서 통합 테스트의 비중을 높이는 것이 사용자 시나리오 위주의 실제 환경과 비슷한 테스트를 수행하기 때문입니다. 그리고 리액트 생태계 특성상 모듈 개별 단위보다 여러 모듈이 통합됐을때 상호작용과 예상치 못한 버그 등이 있을 수 있기 때문에 컴포넌트간 상호작용과 통합에 대한 시나리오가 더 중요하다고 생각했습니다.
추가로 작성된 테스트 코드는 어떤 것들이 있나요?
최소한의 e2e 테스트를 추가적으로 작성하고, 기본적으로 주어진 유닛 테스트 시나리오에서 커버하지 못하고 있는 테스트 케이스들을 추가했습니다.
추가로 작성된 테스트 코드
기본 요구사항 외 추가 테스트 코드 (총 12개 파일)
🔄 반복 일정 관련
📋 이벤트 관리 관련
🔄 반복 일정 생성 테스트
🔢 매월 반복 일정 경계값 테스트
⏰ 반복 종료일 테스트
✏️ 반복 일정 수정 테스트
🗑️ 반복 일정 삭제 테스트
🎯 사용자 시나리오
과제 셀프회고
기술적 성장
TDD를 처음 경험하면서 기존의 개발 방식과는 완전히 반대되는 접근법에 적응하는 것이 가장 큰 어려움이었습니다. 구현된 코드가 전혀 없는 상태에서 테스트 시나리오를 작성하고, 의도적으로 실패하는 테스트를 먼저 작성한 후 점진적으로 코드를 발전시켜나가는 Red-Green-Refactor 사이클이 처음에는 매우 어색했습니다. 특히 초반에는 "무엇을 테스트해야 할지"부터 막막해서 과제 진행 속도가 현저히 느려졌습니다.
하지만 TDD 프로세스에 익숙해지면서 예상치 못한 개인적 성장을 경험했습니다. 평소 "일단 코드부터 작성하고 문제가 생기면 해결하자"는 접근 방식을 선호했던 저에게, TDD는 구현 전에 충분히 고민하도록 강제하는 유익한 제약이 되었습니다.
학습 효과 분석
무엇보다 "머릿속으로 개발 사이클을 미리 돌려보는 능력"이 크게 향상된 것을 체감했습니다. 이는 앞으로의 개발 업무에서도 큰 도움이 될 것 같습니다.
리뷰 받고 싶은 내용
테스트 코드의 유지보수성과 가독성 사이의 균형점에 대한 조언
현재 반복 일정 관련 테스트 코드를 작성하면서 중복되는 코드가 많이 발생하고 있습니다. 예를 들어, 반복 일정 생성 시나리오, 수정 시나리오, 삭제 시나리오에서 공통적으로 사용되는 테스트 데이터 준비나 DOM 조작 코드들이 반복되고 있습니다.
고민사항:
공통화 vs 가독성의 딜레마:
일반 코드처럼 공통 함수로 추출하면 중복은 줄일 수 있지만, 테스트 시나리오를 파악할 때 여러 파일을 오가며 읽어야 해서 오히려 이해하기 어려워질 것 같습니다. 테스트 코드에서는 어느 정도의 중복을 허용해야 하는지 기준이 궁금합니다.
테스트 유틸리티 함수의 적정 범위:
현재 헬퍼 함수들을 만들었는데, 이런 함수들을 어느 수준까지 추상화해야 테스트의 의도는 명확히 유지하면서도 유지보수성을 확보할 수 있을까요?
UI/UX 변경에 따른 테스트 취약성:
현재 React Testing Library를 사용해서 getByText, getByRole 등으로 요소를 찾고 있는데, UI 문구나 구조가 변경될 때마다 테스트가 깨지는 상황이 자주 발생합니다. 이런 변경에 더 유연하게 대처할 수 있는 테스트 작성 방법이 있을까요?