Cursor로 테스트 코드 작성하기

소개

  • 주말에 Cursor와 함께 프로그램 하나를 만들었습니다. 이름은 헬스체커라고 할게요. 기능은 다음과 같습니다

    • 서버 A의 상태 모니터링

      • 헬스체커는 서버 A에 주기적으로 ping을 보내서 응답이 오는지 확인한다

    • HTTP API를 통한 모니터링 제어

      • 헬스체커의 모니터링을 원격에서 껐다 켰다 할 수 있고, 헬스체커의 상태 역시 원격에서 파악 가능하다

    • Slack을 통한 알림 전송

      • 헬스체커가 A에게 문제가 있다고 파악하면 저희 업무용 메신저로 메시지를 보낸다

    • 연속된 오류 발생 시 자동 복구 시도

      • 헬스체커의 판단에 A 서버가 완전히 죽었다고 생각되면, 직접 A 쪽에 접속해 서버 재부팅 시도하고, 모니터링을 일시 중단한다

  • 프로젝트가 복잡해지고 나서 테스트코드를 만들려고 시도하면 항상 실패했었기 때문에 일찍 만들어보자고 생각했습니다

  • 이 과정 전까지 제가 테스트 코드에 대해 알고 있는 지식은 다음과 같았습니다

    • 커버리지 라는 개념이 있는데, 아마 테스트가 얼마나 코드를 잘 반영했는지에 대한 숫자인 것 같고, 높을 수록 좋다더라

    • AI가 테스트 코드를 잘 짜준다더라

진행 방법

  • 기존 코드를 갈아엎기 시작하면 당황스러우니까 우선 Chat으로 갔습니다.

  • 아주 공들여서 프롬프트를 작성했습니다. 테스트 코드 작성과 지식 공유를 동시에 요청했습니다

    한국어 메뉴 스크린샷
  • 엄청 긴 응답이 왔는데, 단위 테스트, 통합 테스트, E2E 테스트 등의 이야기가 반복되어서 다시 질문을 했습니다

    검정색 배경에 흰색 선이 있습니다.
    2 통합 테스트
    • 오 저는 단위 테스트만 진행해야겠다고 생각했습니다

  • 테스트 커버리지에 대해서 추가적으로 물어봤습니다

    한국어 단어가 적힌 검은 화면
    • 오 이 정도면 필요한 정보를 충분히 얻은 것 같습니다

  • 프로젝트를 파악해서 어떤 단위 테스트를 만들어야 한다고 판단했는지 요약해주고, 단위 테스트를 만들기에 어려워보이는 코드들이 무엇인지 알려달라고 했습니다.

    • 너무 긴 내용을 말해주는데 다 읽고 이해하기엔 어려워서, 바로 Composer로 넘어가기로 했습니다.

  • Composer로 왔습니다.

    한국사이트 스크린샷
  • Composer가 제안해준 내용들을 하나하나 수행해보겠습니다.

    웹 브라우저의 코드 편집기 스크린샷
    녹색 배경의 코드 편집기 스크린샷
    • (여담이지만 이 부분이 저는 좋은게, 제가 Cursor Rule에다가 다음과 같은 부분을 정의해뒀거든요)

    • 저 파일은 제가 직접 터미널을 통해 수정해야 하기 때문에 자동으로 바꿔주면 매우 불편한데, 이제 알아서 제가 관심가지지 않아도 되는 별도의 임시 파일에 추천을 해줘서 좋았습니다.

  • Accept all 했습니다만, 에러 하나가 Chat에서 끝까지 수정이 안됐는데, 오히려 Composer에 갖다가 넣으니 의외로 잘 해줘서 좋았습니다.

    한국어 웹사이트 스크린샷
  • 터미널에 가서 시키는 대로 npm run test 수행해봤습니다.

    한국 컴퓨터 화면의 스크린샷
    • 오 통과한 테스트가 있었습니다. 그러면 테스트를 실제로 돌리기 위한 세팅이 제대로 마무리되었다는 것이고, 코드의 오류 혹은 테스트의 오류들만 수정하면 될 것 같습니다.

  • 아까 배운 커버리지를 적용해달라고 해보겠습니다.

    한국 컴퓨터 화면의 스크린샷
    • 오 알아서 부족한 테스트를 추가해준다네요?

  • 이제 마지막으로 npm run test:coverage 해보았습니다

    PHP 스크립트의 스크린샷
    수많은 에러로 출발했지만
    Python 스크립트의 스크린샷
    • 테스트 커버리지를 확인할 수 있었습니다 (빨간 글씨 범벅)

결과와 배운 점

  • 테스트 커버리지의 개념과 그 세팅

  • 차근차근 해 나가면 잘 된다

4
3개의 답글

👉 이 게시글도 읽어보세요