Skip to content

[ 5주차 ] 부족한 테스트 코드 추가 및 Jacoco 적용, 보고서 작성#106

Open
futuremaker019 wants to merge 17 commits intohanghae-skillup:futuremaker019from
futuremaker-projects:dev
Open

[ 5주차 ] 부족한 테스트 코드 추가 및 Jacoco 적용, 보고서 작성#106
futuremaker019 wants to merge 17 commits intohanghae-skillup:futuremaker019from
futuremaker-projects:dev

Conversation

@futuremaker019
Copy link

@futuremaker019 futuremaker019 commented Feb 9, 2025

제목(title)

[ 5주차 ] 부족한 테스트 코드 추가 및 Jacoco 적용, 보고서 작성


작업 내용

  • 의존성 문제를 해결하기 위해 movie-application을 추가 하여, facade 패키지를 분리하였습니다.
    • facade에 예약 메서드가 존재하는데, 분산락과 클린 아키텍처 형태의 redisRepository를 사용하기 위해
  • jacoco의 테스트 커버리지를 올리기위해 다양한 테스트 케이스를 작성하여 요구사항에 맞는 각 모듈에서 작성할 테스트 케이스를 추가하였습니다.
  • 보고서 작성을 완성하였습니다.
    • 누락한 분산락 보고서 및 Jacoco 테스트 결과를 추가하였습니다.

발생했던 문제와 해결 과정을 남겨 주세요.

  • facade 클래스를 의존성을 해결하고자 movie-application 모듈을 생성하여 해결했습니다.
  • 각 모듈별 테스트 케이스를 작성하는데 시간을 많이 투자한거 같습니다. 특히, 인터셉터에서 body를 읽으면 정작 controller에서 사라져 request body missing 에러를 수정하느라 고생했습니다. interceptor 보다 먼저 실행되는 filter에서 RequestWrapper를 사용하여 body를 미리 캐시하도록 수정하여 해결했습니다.
  • jacoco 설정이 좀 어려워 build.gradle에 많은 시도를 했던거 같습니다. 테스트에 포함되지 않는 클래스를 예외처리하는 방식이 좀 까다로워 고생했습니다.

이번 주차에서 고민되었던 지점이나, 어려웠던 점을 알려 주세요.

  • movie-application 을 facade를 위해 추가했는데, 단순 facade를 위한 모듈로 사용하기는 아쉬움이 있습니다. application에는 어떤 기능들을 추가해야 할까요?
  • log를 위해 filter나 interceptor에서 body을 읽어들이면 body가 사라지는 현상을 멘토님꼐서는 어떻게 해결하셨는지 궁금합니다.

리뷰 포인트

  • jacoco를 처음 사용해봐서 적용 및 활용에 많은 부족함이 있었습니다. 요구사항에 맞게 Presentation에는 통합테스트, Domain에는 Mock 테스트로, Infra에는 통합테스트로 작성하여 테스트 케이스를 작성했습니다. 확인부탁드립니다. 아래는 README 링크입니다.

README 링크

기타 질문

  • 서비스를 개발하는 회사로 이직을 희망하고 있습니다. 멘토님께서는 서비스 업체로 개발직군을 변경하기 위해서 어떤 사항들이 중요하다고 생각하지는지 궁금합니다.
  • MSA와 쿠버네티스, ELK 스택과 같은 기술들에 대한 공부는 서비스 업체로 가려면 필수로 해야하는지 궁금합니다.

코드 리뷰 너무 감사했습니다. 5주동안 공부하며 많은 인사이트 얻어갑니다. 새해복 많이 받으세요! 👏👏👏👏

@futuremaker019 futuremaker019 changed the title [ 5주차 ] 부족한 테스트 코드 추가 및 Jacoco 적용 및 보고서 작성 [ 5주차 ] 부족한 테스트 코드 추가 및 Jacoco 적용, 보고서 작성 Feb 10, 2025
@DisplayName("스케줄과 여러 좌석을 선택하여, 예약을 등록한다.")
@Test
void given_when_then() throws Exception {
Long scheduleId = 1L;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DisplayName 을 사용하는 대신 함수 이름을 한글로 작성하는게 더 좋을 것 같습니다 :)
현재의 함수명은 수정이 필요해보이네요 !

Reservation.isAlreadyReserved(reservations, seats);
});
assertEquals(ErrorCode.UNABLE_TO_RESERVE, thrown.getErrorCode());
assertTrue(thrown.getMessage().contains("reservation contains already reserved seats:"));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

도메인에 대한 단위 테스트도 잘 작성해주셨네요 👍🏿

assertThat(reservations)
.isNotEmpty()
.hasSize(3)
.extracting("scheduleId", "seatId")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seatIds 의 size 를 가져오면 하드코딩을 없앨 수 있을 것 같습니다.

@BAEKJungHo
Copy link
Contributor

BAEKJungHo commented Feb 10, 2025

@futuremaker019 구현님 안녕하세요 ! 마지막까지 고생많으셨습니다.

전반적으로 다 깔끔하게 테스트를 진행해주셨습니다.

리뷰 포인트 및 추가 질문에 대한 답변

movie-application 을 facade를 위해 추가했는데, 단순 facade를 위한 모듈로 사용하기는 아쉬움이 있습니다. application에는 어떤 기능들을 추가해야 할까요?

  • 그렇다면 지금 상황에서 application 이 꼭 분리되어야 하는 모듈인지를 고민해보시면 좋을 것 같아요.

log를 위해 filter나 interceptor에서 body을 읽어들이면 body가 사라지는 현상을 멘토님꼐서는 어떻게 해결하셨는지 궁금합니다.

지금 하신 것 처럼 캐싱해서 사용하는 방식으로 처리합니다. 실무에서도 body 를 사전에 읽어서 사용하려면 캐싱해두어야 합니다.

서비스를 개발하는 회사로 이직을 희망하고 있습니다. 멘토님께서는 서비스 업체로 개발직군을 변경하기 위해서 어떤 사항들이 중요하다고 생각하지는지 궁금합니다.

  • 커뮤니케이션 능력 (이 능력은 연차가 쌓일 수록 더 중요해지는 것 같습니다.)
  • 내가 선택한 기술, 설계 등에 대해서 남들을 설득 시킬 수 있는 근거를 제시할 수 있는지
  • 깊게 파고드는 능력 (내가 사용한 기술에 대해서 깊이 있게 공부했는지)
  • 장애 대응 능력 (e.g 작은 규모의 에러 등이 발생했을때 원인을 빨리 찾고 해결하는 능력)
  • 도메인에 대한 이해

이 정도가 중요하다고 생각됩니다 !

MSA와 쿠버네티스, ELK 스택과 같은 기술들에 대한 공부는 서비스 업체로 가려면 필수로 해야하는지 궁금합니다.

cloud engineer 라면 위 기술들에 대해서 깊이 있게 알아야 합니다. 반면 service engineer 라면 위 기술이 무엇인지 아는 정도면 충분하다고 생각됩니다.

엔지니어 직군마다 본질적으로 요구되는 능력이 다르다고 생각됩니다. 또한 JD 에 위 기술이 명시되어있으면 면접을 위해서 개념적으로 더 많이 찾아봐야겠죠. 하지만 일반적으로 service engineer 직군으로 가는 경우 위 기술에 대해서 깊이감 있는 질문을 하진 않습니다.


5주간 수고 많으셨습니다 !! 💯 새해복 많이 받으세요 ~

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.

2 participants