소개
주말에 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 스크립트의 스크린샷
테스트 커버리지를 확인할 수 있었습니다 (빨간 글씨 범벅)
결과와 배운 점
테스트 커버리지의 개념과 그 세팅
차근차근 해 나가면 잘 된다