Skip to content

Conversation

@kju1018
Copy link

@kju1018 kju1018 commented Oct 31, 2025

과제 체크포인트

필수 스펙

    1. 반복 유형 선택
    • 일정 생성 또는 수정 시 반복 유형을 선택할 수 있다.
    • 반복 유형은 다음과 같다: 매일, 매주, 매월, 매년
      • 31일에 매월을 선택한다면 → 매월 마지막이 아닌, 31일에만 생성하세요.
      • 윤년 29일에 매년을 선택한다면 → 29일에만 생성하세요!
    • 반복일정은 일정 겹침을 고려하지 않는다.
  1. 반복 일정 표시
    • 캘린더 뷰에서 반복 일정을 아이콘을 넣어 구분하여 표시한다.
  2. 반복 종료
    • 반복 종료 조건을 지정할 수 있다.
    • 옵션: 특정 날짜까지
      • 예제 특성상, 2025-12-31까지 최대 일자를 만들어 주세요.
  3. 반복 일정 수정
    1. ‘해당 일정만 수정하시겠어요?’ 라는 텍스트에서 ‘예’라고 누르는 경우 단일 수정
      • 반복일정을 수정하면 단일 일정으로 변경됩니다.
      • 반복일정 아이콘도 사라집니다.
    2. ‘해당 일정만 수정하시겠어요?’ 라는 텍스트에서 ‘아니오’라고 누르는 경우 전체 수정
      • 이 경우 반복 일정은 유지됩니다.
      • 반복일정 아이콘도 유지됩니다.
  4. 반복 일정 삭제
    1. ‘해당 일정만 삭제하시겠어요?’ 라는 텍스트에서 ‘예’라고 누르는 경우 단일 수정
      1. 해당 일정만 삭제합니다.
    2. ‘해당 일정만 삭제하시겠어요?’ 라는 텍스트에서 ‘아니오’라고 누르는 경우 전체 수정
      1. 반복 일정의 모든 일정을 삭제할 수 있다.

기본 과제

공통 제출

  • 테스트를 잘 작성할 수 있는 규칙 명세
  • 명세에 있는 기능을 구현하기 위한 테스트를 모두 작성하고 올바르게 구현했는지
  • 명세에 있는 기능을 모두 올바르게 구현하고 잘 동작하는지

기본 과제(Easy)

  • AI 코드를 잘 작성하기 위해 추가로 작성했던 지침
  • 커밋별 올바르게 단계에 대한 작업
  • AI 도구 활용을 개선하기 위해 노력한 점 PR에 작성

기본 과제(Hard)

  • Agent 구현 명세 문서 또는 코드
  • 커밋별 올바르게 단계에 대한 작업
  • 결과를 올바로 얻기위한 history 또는 log
  • AI 도구 활용을 개선하기 위해 노력한 점 PR에 작성

심화 과제

- [ ] 모든 질문에 대해 꼼꼼하게 정리했는지

## 사용하는 도구를 선택한 이유가 있을까요? 각 도구의 특징에 대해 조사해본적이 있나요?

저는 Cursor와 ChatGPT를 중심으로 개발을 진행했습니다.
Cursor는 코드 기반 AI툴로, 프로젝트 파일을 직접 분석해 코드 제안과 수정이 가능하며,
ChatGPT는 테스트 설계나 명세서 작성, 어떤 개념에 대한 지식을 얻기에 좋다고 판단하여 사용했습니다.
또한 Vitest + React Testing Library를 사용해 빠르고 직관적인 단위 테스트 환경을 구축했습니다.
이 조합은 “AI가 생성한 코드 → 테스트 검증 → 리팩토링”의 순환 구조를 만들기에 적합했습니다.


## 테스트를 기반으로 하는 AI를 통한 기능 개발과 없을 때의 기능개발은 차이가 있었나요? 
테스트 없이 개발할 때는 ‘동작은 하지만 의도는 모호한 코드?’가 많았지만,
AI가 테스트 설계부터 도와주면서 ‘기대되는 행동’ 중심의 개발이 가능해졌습니다.
특히 TDD(Red → Green → Refactor) 흐름을 적용하니, 기능 추가 시 기존 코드의 안정성이 높아졌습니다.

## AI의 응답을 개선하기 위해 추가했던 여러 정보(context)는 무엇인가요? 
- 프로젝트 구조 및 주요 파일(App.tsx, hooks, utils 등)

- 컴포넌트 접근 규칙(MUI 컴포넌트 쿼리 정책, within() 스코프 규칙 등)

- 테스트 설계 가이드라인(Given/When/Then 주석 형식, AAA 패턴 등)

- 기능 명세(spec/prd.md) 및 에이전트 역할 정의(TestDesignerAgent, TestImplementerAgent)

이런 컨텍스트를 주입해 AI가 단순 코드 작성이 아닌 “의도에 맞는 테스트”를 생성하도록 했습니다.

## 이 context를 잘 활용하게 하기 위해 했던 노력이 있나요?
AI가 불필요한 범위까지 탐색하지 않도록 명세 파일 중심으로 컨텍스트를 구조화했습니다.
예를 들어 .cursor/agents 폴더에 페르소나별 MD 파일을 나눠 저장해,
AI가 “설계만 하는 Agent”와 “테스트만 작성하는 Agent”를 구분하도록 했습니다.

## 생성된 여러 결과는 만족스러웠나요? AI의 응답을 어떤 기준을 갖고 '평가(evaluation)'했나요?
만족스러운 경우가 많았지만, 테스트 시나리오가 불분명하거나 과하게 포괄적일 때는 품질이 떨어졌습니다.
그래서 평가 기준을 다음처럼 세웠습니다:

명세 일치도 – 기능 요구사항과 테스트의 일치 정도

가독성 – 코드 내 주석, 쿼리 구조의 명확성

## AI에게 어떻게 질문하는것이 더 나은 결과를 얻을 수 있었나요? 시도했던 여러 경험을 알려주세요. 
가장 효과적이었던 방법은 “구체적 행동을 기준으로 한 질문”이었습니다.
예를 들어
 “반복 기능 추가해줘” 보다는 “일정 생성 시 ‘매주 반복’을 선택하면 다음 주에도 동일한 일정이 표시되도록 테스트 설계해줘” 라고 질문하는것이 더 나은 결과를 얻을 수 있었습니다.

## AI에게 지시하는 작업의 범위를 어떻게 잡았나요? 범위를 좁게, 넓게 해보고 결과를 적어주세요. 그리고 내가 생각하는 적절한 단위를 말해보세요.
처음에는 한 번에 여러 기능을 요청했지만, AI가 컨텍스트를 잃어 테스트 중복이나 불필요한 코드 생성이 발생했습니다.
이후 “단일 사용자 행동 단위” — 예: “반복 유형 선택”, “일정추카 버튼 클릭 시 검증” — 로 범위를 좁히니
결과가 훨씬 명확해졌습니다.
따라서 적절한 단위는 ‘한 테스트 시나리오(한 it 블록)’ 수준의 요청이라 생각합니다.

## 동기들에게 공유하고 싶은 좋은 참고자료나 문구가 있었나요? 마음껏 자랑해주세요.

## AI가 잘하는 것과 못하는 것에 대해 고민한 적이 있나요? 내가 생각하는 지점에 대해 작성해주세요.
명세를 기반으로 한 테스트 설계나, 구체적이고 단위를 작게 나누어 요청하는 부분에서는 AI가 뛰어난 모습을 보였습니다.
반면, 모호한 지시나 한 번에 많은 작업을 맡길 때는 기대에 미치지 못하는 경우가 있었습니다.

## 마지막으로 느낀점에 대해 적어주세요!

과제 셀프회고

처음 발제 시간에 AI 관련 내용을 설명해주시고 과제까지 안내해주셨지만, 솔직히 그때는 무슨 말인지 잘 이해하지 못했습니다.
AI를 제대로 사용해본 적도 없었고, 관심도 많지 않았기 때문입니다.
그래서 무작정 과제를 시작하기보다는, 먼저 AI의 기본 개념과 용어, 그리고 여러 도구들에 대해 알아보기로 했습니다.
그중 제가 그나마 가장 익숙하게 사용해본 ChatGPT에게 ‘테스트를 잘 작성하기 위한 규칙은 무엇인지’, ‘Cursor rules나 Copilot instructions는 정확히 어떤 역할을 하는지’, ‘테스트 규칙 문서와는 어떻게 다른지’ 등을 하나씩 물어보며 공부를 시작했습니다.
그렇게 하나하나 개념을 정리하고 이해해 나가면서, AI를 어떻게 활용하면 좋을지 감이 잡히기 시작했고, 여러 AI 도구들의 차이점도 어느 정도 구체적으로 알 수 있게 되었습니다.

우선 에이전트들을 개선하기 위해서

  • Kent Beck의 Red/Green/Refactor 사이클을 반영하도록 수정했습니다.
  • **테스트 설계 에이전트(TestDesignerAgent)**는 설계만 담당해야 하는데, 실제 테스트 코드를 작성하려는 경향이 있어서, 원하는 예시를 명확히 보여주는 새로운 MD 파일을 만들어 참고하도록 했습니다.
  • **테스트 작성 에이전트(TestImplementerAgent)**가 설계 의도를 충분히 이해하지 못하는 것 같아, 각 단계에 주석을 추가해 의도를 명확히 전달하도록 했습니다.
  • 또한, 테스트 작성 에이전트가 MUI 컴포넌트의 요소를 정확히 쿼리하지 못하는 문제가 있어, MUI 구조에 맞게 쿼리 로직을 수정했습니다.

기술적 성장

AI를 활용한 TDD 개발을 통해 “구현”보다 “기대되는 행동”을 먼저 설계하는 방법을 배웠습니다.
또한 에이전트를 직접 만들어보며, “AI를 이렇게도 활용할 수 있구나”라는 새로운 가능성을 경험했습니다.

새롭게 학습한 개념으로는, ‘테스트를 잘 작성하기 위한 규칙 문서’가 정확히 어떤 역할을 하는지,
그리고 에이전트가 무엇이며 그 역할·규칙·목표를 문서로 정의한 명세서(spec) 가 어떤 의미를 가지는지 이해할 수 있게 되었습니다.

코드 품질

학습 효과 분석

AI를 활용해 테스트 시나리오를 설계하면서, 기능 요구사항을 자연어로 명확히 표현하는 연습이 되었습니다.
AI는 다양한 테스트 패턴(AAA, Given/When/Then, mock 구조 등)을 예시로 제시해주었기 때문에,
초기에 “테스트를 어떻게 짜야 하는가”를 체계적으로 배울 수 있었습니다.
또한 테스트를 통과시키기 위한 최소한의 코드를 작성하고, 이후 리팩토링을 진행하면서
안전하게 코드 구조를 개선하는 과정을 직접 경험할 수 있었습니다.

과제 피드백

리뷰 받고 싶은 내용

  1. 과제를 진행할 때 모든 에이전트를 다 만드는 것은 현실적으로 어려울 것 같아, 우선 단일 에이전트 두 개만 만들었습니다. 과제에서 제공된 명세서(spec)가 있었기 때문에, 테스트 코드를 설계하는 TestDesignerAgent.md와 그 설계를 바탕으로 실제 코드를 작성하는 TestImplementerAgent.md 두 개만 구현했습니다.
    이처럼 이미 명세서가 주어지고 추가해야 할 기능이 정리되어 있다면, 굳이 기능 설계 에이전트가 필요하지 않을 것 같다고 판단해 테스트 설계 에이전트부터 만들었는데요.
    혹시 과제처럼 명세서가 제공된 경우에도 기능 설계 에이전트부터 만드는 것이 더 적절했는지 궁금합니다.

kju1018 and others added 30 commits October 26, 2025 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant