[3팀 박준형] Chapter 3-2 프론트엔드 테스트 코드 🦍#24
Open
BBAK-jun wants to merge 53 commits intohanghae-plus:mainfrom
Open
Conversation
…opment-workflow.md, install-manifest.yaml, user-guide.md, working-in-the-brownfield.md, 팀 구성 파일 및 에이전트 문서 포함.
… 스택 정리, 사용자 스토리 및 테스트 요구사항 포함.
… 가이드, 스토리별 테스트 전략 포함.
…/삭제 처리, 기존 API 연동 및 테스트 요구사항 포함.
…련 테스트 케이스 작성. 기존 기능과의 호환성 검증 완료.
…생성된 경우 사용자에게 메시지를 표시하도록 구현. 관련 테스트 케이스 추가 및 기존 기능과의 호환성 검증 완료.
…련 유틸리티 함수 및 테스트 케이스 추가. 기존 기능과의 호환성 검증 완료.
…실패 시 사용자에게 메시지를 표시하도록 수정. TDD 원칙에 따라 테스트 환경 설정 및 기존 기능과의 호환성 검증 완료.
… 결과, 테스트 커버리지 분석, 위험 평가 및 권장 개선사항을 포함하여 종합적인 품질 평가를 수행하였음.
…복 일정 처리 로직을 포함하여 이벤트 관리 기능을 개선함.
… 날짜 제외 및 요일 선택을 통해 효율적으로 일정을 관리할 수 있도록 기능을 확장함. 각 기능에 대한 데이터 구조, UI, 비즈니스 로직 및 테스트 케이스를 포함하여 문서화함.
…하도록 구현하였으며, 모킹 핸들러를 추가하여 에러 케이스도 처리할 수 있도록 하였다. 기존 이벤트 생성 로직을 유지하면서 성능을 최적화하였음.
… 메시지 확인 로직을 유지함. useNotifications 훅에서 checkUpcomingEvents 함수를 useCallback으로 최적화하여 성능 개선.
…삭제 시 에러 메시지 확인 로직을 try-catch 블록으로 감싸 안정성을 높였으며, 알림 시스템에서 이벤트 ID를 문자열로 변경하여 일관성을 유지함. 불필요한 테스트 파일 삭제.
…인트를 통해 반복 일정의 일괄 수정 및 삭제를 지원하며, repeat.id 시스템을 도입하여 관련 일정을 그룹화함. 사용자 인터페이스를 개선하여 일괄 작업의 효율성을 높이고, 성공 및 실패 메시지 표시 기능을 추가함. 관련 문서 및 테스트 케이스를 업데이트함.
…과 일반 일정의 배경색을 다르게 설정하여 사용자 경험을 개선함. 관련 테스트 케이스를 추가하여 기능 검증 완료.
…효율성을 높임. 모킹 핸들러를 통해 테스트 가능성을 강화하고, 관련 로직을 최적화하여 코드 가독성을 향상시킴.
…적인 가이드라인을 제시하여 코드 품질 및 유지보수성을 향상시키기 위한 기준을 마련함. 각 스토리에 대한 리팩터링 절차 및 모니터링 계획도 포함하여 팀의 일관된 개발 프로세스를 지원함.
…태를 업데이트하고, 관련 기능 및 테스트 결과를 문서화하여 사용자 경험을 개선함. 성공적인 통합 및 호환성 검증을 통해 시스템 안정성을 확보함.
…고, UI에서 간격 입력 필드 및 유효성 검사를 구현함. 날짜 계산 로직과 관련된 비즈니스 로직을 통합하고, 새로운 유닛 테스트를 추가하여 기능 검증을 완료함. 문서화 및 기존 기능 회귀 테스트도 수행하여 안정성을 확보함.
…능을 추가하고, 관련 비즈니스 로직 및 유효성 검사를 통합하여 안정성을 높임. 기존 기능 회귀 테스트를 수행하고, 새로운 유닛 테스트를 추가하여 기능 검증을 완료함.
…UI에서 요일 선택 컴포넌트를 구현하여 사용자 경험을 개선함. 요일 선택 유효성 검사 및 날짜 계산 로직을 추가하여 기능 검증을 완료함. 모든 상세 요구사항이 구현되었으며, 테스트를 통과함.
…하기 위한 테스트 케이스를 작성하고, 날짜 계산 로직의 최대 반복 횟수를 조정하여 일관성을 확보함. 모든 테스트가 성공적으로 통과함.
… 호환성 유지, 버전 관리 필드 추가 등 데이터 구조 확장 작업을 수행하였으며, Material-UI ToggleButton을 활용한 요일 선택 컴포넌트를 구현하고, 선택된 요일에 대한 시각적 피드백 및 반복 패턴 미리보기를 추가함. 유효하지 않은 요일 선택 처리 및 최소 1개 요일 선택 강제를 포함한 에러 처리 로직도 구현하여 기능의 안정성을 높임. 모든 테스트가 성공적으로 통과함.
…QA 결과를 정리하고, 각 기능의 통과 여부 및 리스크를 명시하여 향후 개선 사항을 제시함. 전체 테스트가 성공적으로 통과하였으며, 후속 작업에 대한 권장 사항 포함.
…를 동시에 수정하거나 삭제할 수 있도록 UI 및 비즈니스 로직을 구현하였으며, 관련 API 핸들러를 통해 일괄 처리 기능을 지원함. 모든 테스트가 성공적으로 통과하였으며, 문서화 및 UI 회귀 테스트도 완료됨.
… 선택하여 수정할 수 있도록 하였으며, 이에 대한 통합 테스트 및 유닛 테스트를 추가하여 기능 검증을 완료함. QA 결과 문서화 및 성능 모니터링 계획도 포함됨.
…동 및 테스트 케이스 추가. QA 결과 문서화 및 성능 고려 사항 포함.
…테스트 커버리지 분석을 포함하여, 위험 평가 및 권장사항을 명시함. QA 리뷰 결과를 문서화하고, 관련 API 및 테스트 케이스에 대한 검증을 완료함.
… 하며, 플레이키 제거, MSW 구조 정비, Gherkin 패턴 표준화, 커버리지 보강 등의 작업 항목을 포함함. 각 스토리는 공통 테스트 가이드, 빌더/픽스처 도입, MSW 오버라이드, Flaky 테스트 안정화, 스냅샷 정책 정리, 커버리지 보강, CI 최적화에 대한 목표 및 수용 기준을 명시함.
…함하여 테스트의 일관성과 가독성을 높임. 각 스토리에 대한 DoD를 충족하며, 커버리지 목표를 명시함.
- EventItem 컴포넌트 테스트에 빌더 패턴 예시 추가 - setupTests: MUI Select out-of-range 경고 필터링 - story-4-8 문서에 테스트 가이드 링크 추가 Refs: story-4-8 테스트 가이드 적용
- 월/연 반복 경계 규칙 준수 및 종료일 상한 정책 적용에 대한 스토리 문서 추가 - 단일 수정 시 반복 속성 제거 및 UI 표시 관련 테스트 케이스 작성 - 각 스토리에 대한 리그레션 테스트 및 통합 테스트 포함 Refs: 스토리 5.1, 5.2, 5.3 관련 테스트 케이스 추가
- 코드 가독성, 예측 가능성, 일관성, 유지보수성을 향상시키기 위한 리팩터링 규칙 및 목표 정의 - 명명 규칙, 함수 단일 책임화, DRY/KISS/YAGNI 적용을 위한 세부 스토리 추가 - 각 스토리의 수용 기준 및 기술적 노트 포함 Refs: 스토리 6.1, 6.2, 6.3 관련 문서 추가
- 액션 함수에 대한 명명 규칙을 @typescript-eslint/naming-convention으로 설정 - 혼용 용어에 대한 경고 추가: UI 동작, 데이터 조회, 저장 관련 - docs/qa/naming-glossary.md 파일 생성하여 명명 규칙 및 예시 문서화 - 린트 스크립트에 자동 수정 및 복잡도 체크 추가
… (naming, SRP, helpers)\n- Reduce complexity in repeatingEventUtils; split generateDates loop\n- Prettier fixes and lint clean\n- Remove unused deps; quality reports green (depcheck/ts-unused-exports/madge)\n- jscpd at 7.98% (< 12%)\n- Update docs: story-6-3 DoD results summary
…\n- story-7-1 useEventForm refactor\n- story-7-2 computed state UI\n- story-7-3 abstraction levels
…EventListPanel 컴포넌트 추가\n- 상태 관리 및 UI 로직을 컴포넌트로 분리하여 가독성 및 유지보수성 향상\n- 기존의 복잡한 UI 구조를 단순화하고 재사용성을 높임
… API로 전환\n- 기존 상태 관리 방식 제거 및 가독성, 재사용성 향상\n- 관련 스토리 문서에 목표, 이유, 범위 및 수용 기준 포함
…및 모달 관리 개선\n- 테스트 유틸리티를 리팩터링하여 코드 중복 제거 및 가독성 향상\n- 기존 테스트에서 SnackbarProvider를 setup 유틸리티로 통합하여 일관성 유지
…그를 선언적으로 관리하도록 리팩터링\n- 기존 상태 관리 방식 제거 및 코드 가독성 향상\n- BulkEditDialog, DeleteConfirmDialog, OverlapWarningDialog 컴포넌트 추가 및 테스트 케이스 작성\n- App.tsx에서 다이얼로그 관련 상태 제거 및 호출부 단순화
…가 완료\n- 테스트 커버리지 6개로 증가, 모든 테스트 통과 확인\n- 리팩터링 완료 및 헬퍼 함수로 로직 분리\n- 문서화된 커버리지 측정 및 개선 사항 포함
…객체로 통합하여 상태 수 75% 감소\n- 상수를 컴포넌트 외부로 이동하여 재렌더링 시 불필요한 재생성 방지\n- useMemo/useCallback 도입으로 메모이제이션 최적화 및 불필요한 메모이제이션 제거\n- 성능 측정 도구 구현 완료 및 모든 테스트 통과 확인
…방지\n- 선택 관련 상태의 타입 정의를 명확히 하여 가독성 향상
…OverlapWarningDialog 테스트에서 buildEvent 헬퍼 함수 도입으로 코드 가독성 향상\n- 불필요한 타입 캐스팅 제거 및 테스트 케이스 간소화
…아키텍처 개선\n- QA 게이트 문서에 수용 기준 및 아키텍처 분석 추가\n- 모든 테스트 통과 및 품질 리포트 그린 상태 확인
…공학 원칙 적용 사례 및 개발 프로세스 설명\n- 품질 관리 및 테스트 전략, 아키텍처 설계, 기술적 결정 등 다양한 주제 포함\n- 프로젝트 성과 및 향후 발전 방향에 대한 구체적인 내용 추가
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주차 과제 체크포인트
회고
과제를 진행하면서 알게된 사실들을 따로 블로그 글로 포스팅했습니다
기본 과제
필수
선택
심화 과제
각 팀원들의 테스트 전략은?
BMAD Method 기반 멀티에이전트 협업으로 진행하여 팀원별 역할 분담:
합의된 테스트 전략과 그 이유는 무엇인가요?
우리 팀의 공통 테스트 전략
회귀 테스트 중심
단위 테스트 보완
데이터 마이그레이션 스크립트 활용
데이터 마이그레이션 스크립트를 작성하여 테스트 환경과 실제 환경을 일관되게 유지한다.
(필요시 최소한의 통합/E2E 테스트)
한 줄 요약
"회귀 테스트로 안정성을 보장하고, 단위 테스트로 새 기능을 검증하며, 필요시 마이그레이션과 최소한의 통합 테스트로 보완하는 전략."
이 전략을 선택한 이유: 기존 기능 위에 새 기능을 추가하는 브라운필드 개발 특성상, 회귀 테스트로 안정성을 보장하고 단위 테스트로 새 기능의 신뢰성을 확보하는 것이 가장 효과적이라고 판단했다.
추가로 작성된 테스트 코드는 어떤 것들이 있나요?
총 192개 테스트 모두 통과:
주요 테스트 영역:
과제 셀프회고
기술적 성장
코드 품질
특히 만족스러운 구현:
리팩토링이 필요한 부분:
학습 효과 분석
가장 큰 배움:
실무 적용 가능성:
과제 피드백
과제에서 좋았던 부분:
과제에서 모호하거나 애매했던 부분:
컨텍스트 엔지니어링 체험기
시행착오와 깨달음
이번 과제를 진행하면서 BMAD Method의 핵심인 컨텍스트 엔지니어링을 직접 체험했다. 그 과정에서 몇 가지 중요한 시행착오와 깨달음을 얻었다.
시행착오:
그래서 저도 이번 과제에서 목표했던 에픽을 아래와 같이 나누었습니다.
Architect 에이전트, PM 에이전트 그리고 PO 에이전트와 대화할 때에는 명확한 요구사항들이 있었기 때문에 막힘없이 문서화를 진행하여 컨텍스트를 쌓아올렸고, 에픽에 맞는 스토리 문서도 함께 작성했다.
스토리 문서들도 있으니 Dev 에이전트와 일을 해보았다. 그런데 제 기대와는 달리 효율이 나오지 않는 것을 목격했다. 이때 단순히 고민을 해보았다.
이런 고민을 하다가 당장 할 수 있는 일을 고치려고 해보았다.
이는 단순하게 Story를 잘게 쪼개어 Dev 에이전트에게 전달하면 적은 범위의 업무를 수행하니 더 잘하겠지라는 생각에서 개선해보니 더 나아졌다.
하지만 고민이 되어 화요일 평일 Q&A 시간에 오프코치님께 아래와 같은 질문을 드렸다.
코치님께서 알려주신 방법을 요약하자면 아래와 같았는데, 딱 PO Agent와 다시 한번 스토리의 범위를 조정한 것임을 알게 되어서 흡족했다.
BMAD Method의 핵심 발견:
거대한 컨텍스트를 어떻게 물고 가는지에 대한 답을 찾았다. 결국 BMAD Method 같은 AI Native Workflow Framework를 사용하는 이유에 대해 깊이 고민해보게 되었다.
프레임워크의 본질과 BMAD Method
AI 사이버렉카방 - 디코 스레드에서 나눈 대화입니다...
영서님께서 BMAD Method를 왜 쓰느냐고 질문을 주셨다.
3주차 과제 중에서 제가 이런 말을 했더라고요.
라고 했었다. 평소에도 관심을 가지던 주제였고, 좋은 질문을 영서님께서 남겨주셔서 재밌게 답변했던 것 같다.
프레임워크를 왜 쓰는가?:
프레임워크란 정해진 규약 안에서 제품을 만들어내는 것이다. 정해지지 않은 방법을 사용하기 어렵게 만드는 것이 핵심이다.
**여기서 관통하는 것은 "정해진 규약"**이다.
BMAD Method의 강제성:
BMAD Method 같은 AI Native Workflow Framework는 결국 우리 사람들이 일하는 방식에 규약을 걸어서 강제하는 행위다.
사람들의 자유와 규약의 필요성:
사람들은 너무나 자유롭기 때문에 업무를 하는 방법도 천차만별이다. 많은 사람들이 이 자유 때문에 골머리를 썩인다. 그래서 코드 컨벤션이라든가, Jira라든가, 업무에 도움을 주는 규칙들을 정하는 것이다.
BMAD Method가 강제하는 것:
컨텍스트 엔지니어링에서 답을 찾았다. 거대한 컨텍스트를 가져감에 따라 거대한 문서를 작성해가며, 그 문서가 SSOT(Single Source of Truth)가 되도록 만드는 것이다. 개발자뿐만 아니라 비개발 직군까지 이 거대한 컨텍스트 위에서 함께 일하는 방법을 찾아서, 사람들의 자유를 박탈해가며 일하는 방식을 정해주는 것이다.
조직적 관점에서의 가치:
단순히 엔지니어링 관점에서는 머리가 아플 수 있다. 하지만 조직 관점에서 보면 너무 훌륭한 관점으로 볼 수 있다. React를 왜 쓰는가? Jira를 왜 쓰는가? 이런 것들과도 비슷하다.
리뷰 받고 싶은 내용
1. 멀티에이전트 협업 방법론 평가
현재 구현한 BMAD Method(Brownfield Multi-Agent Development)가 실제 업무 환경에서도 적용 가능한지, 그리고 이 방법론을 더욱 발전시킬 수 있는 방향에 대해 조언해주실 수 있나요? 특히 에이전트 간 역할 분담과 품질 게이트 시스템의 효과성에 대한 피드백을 받고 싶습니다.
2. 컨텍스트 엔지니어링 전략 검토
거대한 컨텍스트를 마이크로 태스크로 분해하여 연속 실행하는 방식이 복잡도 관리에 효과적인지 평가해주실 수 있나요? 현재 Story당 2-4시간 단위로 세분화했는데, 이 단위가 적절한지, 그리고 더 효율적인 태스크 분해 기준이 있는지 알고 싶습니다.
3. 테스트 전략의 실무 적합성
팀에서 합의한 "회귀 테스트 중심 + 단위 테스트 보완" 전략이 실제 프로덕션 환경에서도 지속 가능한지 검토해주실 수 있나요? 특히 브라운필드 개발에서 기존 기능을 보호하면서 새 기능을 안전하게 추가하는 방법론으로서의 효과성에 대한 의견을 듣고 싶습니다.
4. 아키텍처 설계의 확장성
현재 구현한 레이어드 아키텍처(types → utils → hooks → components)가 더 복잡한 도메인으로 확장될 때도 유지될 수 있는지, 그리고 SOLID 원칙 적용 수준이 실무 기준에 부합하는지 평가해주실 수 있나요?
5. Zero Hand-Coding 개발의 혁신성
단 한 줄의 코드도 직접 작성하지 않고 AI 멀티에이전트로만 구현한 이 접근 방식이 미래 개발 트렌드로서 어떤 가능성과 한계를 갖는지에 대한 견해를 듣고 싶습니다. 이 방법론이 개발자의 역할을 어떻게 변화시킬 수 있을까요?
6. AI Native Workflow Framework의 조직적 가치
BMAD Method가 강제하는 규약과 컨텍스트 엔지니어링이 조직 차원에서 어떤 가치를 가질 수 있는지, 그리고 이 방법론이 팀 협업과 프로젝트 관리에 미칠 수 있는 영향에 대해 조언해주실 수 있나요?
과제 진행 기간
멘토 피드백 요청
오프코치님의 비밀 지령이 있었으므로 이걸 추가했다...
멘토님께서 AI 활용 개발 시간과 완성도에 대해 궁금해하시는데, 이번 과제는:
ㅎㅎ 다음 기수분들 죄송합니다...