-
Notifications
You must be signed in to change notification settings - Fork 53
[2팀 이정민] Chapter 1-2. AI와 테스트를 활용한 안정적인 기능 개발 #78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
LEE-jm96
wants to merge
45
commits into
hanghae-plus:main
Choose a base branch
from
LEE-jm96:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
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.
과제 체크포인트
필수 스펙
기본 과제
공통 제출
기본 과제(Easy)
기본 과제(Hard)
단일 agent 3개를 생성하였습니다.
진성 (테스트 코드 설계 에이전트)
희재 (테스트 코드 작성 에이전트)
---------Red Case---------
다솜 (코드 작성 에이전트)
---------Green Case-------
심화 과제
1️⃣ 사용 도구 선택 이유와 특징
테스트 기반 개발 환경을 위해
React + TypeScript + vitest + MSW + Cursor 조합을 사용했습니다.
cursor/rules와context기능을 통해 AI가 프로젝트 규칙을 이해한 상태에서 테스트를 생성할 수 있습니다.2️⃣ 테스트를 기반으로 하는 AI를 통한 기능 개발과 없을 때의 기능개발은 차이가 있었나요?
AI를 활용한 개발은 코드 중심 사고에서 의도 중심 사고로의 전환을 이끌었습니다.
기존에는 “코드를 작성하고 테스트한다”였다면, AI 기반 개발에서는 “사용자 동작과 기대 결과를 정의한 후 구현한다”로 접근이 바뀌었습니다.
TDD에 대해서도 자세하게 알 수 있었습니다.
3️⃣ 이 context를 잘 활용하게 하기 위해 했던 노력이 있나요?
4️⃣ 생성된 여러 결과는 만족스러웠나요? AI의 응답을 어떤 기준을 갖고 '평가(evaluation)'했나요?
5️⃣ AI에게 어떻게 질문하는것이 더 나은 결과를 얻을 수 있었나요? 시도했던 여러 경험을 알려주세요.
→ 환경, 라이브러리, 오류 상황까지 함께 설명할수록 실무적인 답변을 얻을 수 있었습니다.
6️⃣ AI에게 지시하는 작업의 범위를 어떻게 잡았나요? 범위를 좁게, 넓게 해보고 결과를 적어주세요. 그리고 내가 생각하는 적절한 단위를 말해보세요.
처음에는 “기능 전체 테스트 작성”처럼 넓은 범위로 요청했지만, 불필요한 가정이 섞인 결과가 자주 나왔습니다.
이후 작업 단위를 좁혀 하나의 컴포넌트, 하나의 동작 단위로 요청하자 결과의 정확도와 품질이 크게 향상되었습니다.
적절한 단위
“하나의 사용자 액션 또는 상태 변화 단위”
(예: Select 열기 → 옵션 선택 → label 변경 확인)
7️⃣ 동기들에게 공유하고 싶은 좋은 참고자료나 문구가 있었나요? 마음껏 자랑해주세요.
테스트는 버그를 찾는 도구가 아니라, 개발 의도를 명문화하는 언어다.
8️⃣ AI가 잘하는 것과 못하는 것에 대해 고민한 적이 있나요? 내가 생각하는 지점에 대해 작성해주세요.
9️⃣ 마지막으로 느낀점에 대해 적어주세요!
ai 에이전트 개발 자체가 처음이라 “오케스트레이션 에이전트(Orchestration Agent)”를 만들고 그 아래 모든 에이전트를 구현하려고
하지 않았다. 단일 에이전트 개발에 집중했고 이렇게 만드는 것이 맞는지 피드백을 받고 싶습니다!
과제 셀프회고
기술적 성장
테스트 주도 개발(TDD) 사이클을 AI와 함께 반복하면서 “기능을 작성하기 전에 테스트를 먼저 설계하는 사고방식”에 대하여 알게 됐습니다.
AI를 통한 테스트 코드 자동화 덕분에 테스트 커버리지 향상과 개발 속도 균형을 함께 달성할 수 있었습니다.
커서(Cursor)의 규칙(cursor/rules)을 정의하고, 켄트 벡(Kent Beck)의 TDD 철학을 에이전트에게 주입시키면서 에이전트 개발 방법과 문맥(context) 관리 중요성을 배웠습니다.
코드 품질
모든 주요 로직(예: 반복 일정, MUI 폼 입력, 상태 전이 등)에 대해 테스트 기반으로 개발했습니다.
테스트가 곧 명세서(Spec) 역할을 하여, 코드가 무엇을 해야 하는지 항상 명확했습니다.
MSW를 활용해 API 통신도 가짜 서버로 시뮬레이션하여 “통합 수준”의 테스트 코드를 작성하였습니다.
커서(Cursor)에서 생성한 테스트를 그대로 쓰지 않고, 테스트의 의도를 검증하는 습관을 들였습니다.
이는 켄트 벡이 말한 “Feedback is the foundation of improvement”을 실천한 과정이었습니다.
학습 효과 분석
켄트 벡이 말한 “Courage to Refactor”는 AI 환경에서도 중요한 가치라고 생각합니다.
AI가 만들어준 코드를 그대로 수용하지 않고,
‘왜 이렇게 했는가’를 분석하며 테스트 설계력을 키웠습니다.
테스트 실패(RED) 상태를 두려워하지 않고,
문제를 정의하고 가설을 세우는 사고력이 향상되었습니다.
반복적인 GREEN 사이클 속에서
기능보다 코드의 명료성과 의도 전달력을 더 중시하게 되었습니다.
과제 피드백
AI의 출력은 빠르지만, 명확한 문맥(context)이 없을 때 테스트가 엉뚱한 방향으로 생성되는 경우가 있었습니다.
이를 보완하기 위해 에이전트.md 파일과 프로젝트 컨텍스트를 설계하여 “AI도 규칙 안에서 생각하도록” 수정했습니다.
리뷰 받고 싶은 내용
ai 에이전트 개발 자체가 처음이라 오케스트레이션 에이전트와 그 아래 모든 에이전트를 구현하려고 하지 않았습니다. 저는 단일 에이전트 하나라도 완벽하게 만들어 보는것에 집중했고 TDD 사이클을 준수하기 위해 테스트 설계 에이전트, 테스트 코드 작성 에이전트, 개발 에이전트 총 3개를 개발하였습니다. 멘토님의 강의에 따라 prd는 간결하게 적으려고 노력했고, 각 에이전트한테 최대한 역할을 주입하고, 해서는 안되는 것들을 md파일에 명시하는 방향으로 개발했습니다. 이렇게 하는 것이 맞는지 궁금합니다.
.cursor 내 폴더 구조 잡는법도 이렇게 하는 것이 맞는지 궁금합니다.
모호한 요청의 예시)
구체적인 요청의 예시)
-->