2021년 8월 26일

김대웅·2021년 8월 25일

TIL

목록 보기
11/33

회고

Facts(사실, 객관)

  • 3-1강 3-2강 수강 및 코드 반영 완료
  • 테스트 코드의 중복을 제거하기 위한 시도 수행

Feelings(느낌, 주관)

  • 유난히 많은 삽질을 했다.
    • 어짜피 겪어야할 삽질이라면 빨리 겪는게 났다고 생각한다.
    • 무의미한 시간낭비가 아니길 바랄뿐이다.
    • 삽질 없이 해결할수만 있다면 더 좋았겠지만 말이다.

Findings(배운 점)

  • 삽질로 시간낭비를 줄이는 방법
    1. 이미 알고 있는 사람에게서 배우는게 더 빠르다.
    2. 구글에 검색하는것보다 공식문서를 확인하는게 더 빠르다.

Affirmation(자기 선언)

  • 나는 시간낭비를 줄여가는 사람이다.

04:30 ~ 05:20

Facts(사실, 객관)

  • 코드리뷰 피드백 반영
  • 3-1강 수강 중
  • javadoc을 장황하게 작성한다는 지적을 받았다.

Feelings(느낌, 주관)

  • 내가 생각해도 장황한 느낌이 있다.

Findings(배운 점)

  • 글을 간결 명료하게 작성해야겠다.

Affirmation(자기 선언)

  • 나는 글을 간결 명료하게 작성하는 사람이다.

05:50 ~ 06:40

Facts(사실, 객관)

  • 3-1강 수강 완료
  • 3-2강 수강 완료

Feelings(느낌, 주관)

  • 혼자서 삽질하면서 터득한 내용들이 모두 강의에 있었다.
  • 강의를 먼저 수강하는 게 더 효율적이었다.

Findings(배운 점)

  • 혼자서 삽질하는 것보다 이미 알고 있는 사람에게서 배우는 게 더 빠르다.

Affirmation(자기 선언)

  • 나는 항상 가장 효율적인 학습방식을 선택하는 사람이다.

06:41 ~ 07:31

Facts(사실, 객관)

  • HelloController e2e 테스트 작성
  • @SpringBootTest와 @WebMvcTest의 차이 정리
  • @SpringBootTest 사용 시 테스트 실행 시간 측정
  • @WebMvcTest 사용 시 테스트 실행 시간 측정

Feelings(느낌, 주관)

  • 어노테이션 사용 여부에 따라 테스트 실행 시간이 달라진다는 사실이 흥미롭다.
    • 성능 측정하는 것도 나름 재미있는 것 같다.
    • 기회가 된다면 성능 측정에 대해 배워보고 싶다.

Findings(배운 점)

  • @WebMvcTest와 @SpringBootTest의 차이(참고)
    • @SpringBootTest
      • 테스트 시 어플리케이션 전체를 실행(=slicing 사용하지 않음)
      • 컴포넌트 스캔을 실행하지 않음
        • @AutoConfigureMockMvc와 같이 사용
    • @WebMvcTest
      • 테스트 시 어플리케이션의 일부분만 실행(=slicing 사용)
        • 더 빠르다(측정 시 4초 정도 더 빠르게 나온다)
      • 오직 컨트롤러만 스캔
        • 테스트하는 컨트롤러가 의존성을 가지고 있는 경우, 따로 설정해주어야 함

Affirmation(자기 선언)

  • 나는 검색 결과를 검증하는 사람이다.

20:00 ~ 20:50

Facts(사실, 객관)

  • 테스트 코드를 재활용 하려는 시도
    • 중복 코드를 추상 클래스로 만들어 상속받기로 결정
    • @Nested와 @DisplayName 재사용 방법 검색
      • @Nested @DisplayName은 상속받을 수 없는 것 확인
    • 테스트 코드를 상속의 문제점 확인(참고)

Feelings(느낌, 주관)

  • 추상 클래스에만 @Nested @DisplayName을 선언하고, 사용하는 방법을 찾기 위해 엄청난 시간을 소모했다.
    • 정말 많은 키워드로 검색을 했지만, 얻을 수 있는 것이 없었다.
    • 결국 공식사이트에서 @Nested, @DisplayName은 상속 받을 수 없다는 사실을 확인하였다.
    • 공식문서가 있는 이유를 처음으로 느꼈다.
      • 나는 왜 공식문서를 보는 것을 주저했을까?
        • 무엇이 문제인지 모르는 상황에서, 무작정 공식문서를 읽어나가는 것이 비효율적이라고 생각하였다.
        • 하지만, 공식문서를 아예 확인하지 않는 것도 문제라고 생각한다.
        • 먼저 공식문서를 확인하고, 내용을 찾을 수 없는 경우 빠르게 탈주하는 것을 전략으로 삼아야겠다.

Findings(배운 점)

  • 테스트 코드 재활용을 위해 상속을 사용하는것의 문제점
    1. 테스트 클래스를 상속받는 것은 성능상의 문제를 발생시킨다.
      • JUnit의 테스트 실행 과정
        1. 메소드에 선언된 모든 @BeforeClass 어노테이션을 찾는 작업을 실행한다.
          • 상속관계에 있는 모든 클래스를 확인하여 @BeforeClass를 가지고 있는지 확인한다.
          • 이러한 작업을 java.lang.Object에 도달할 때까지 반복한다.
        2. 부모 클래스부터 자식 클래스 순서로 모든 @BeforeClass 어노테이션이 선언된 메소드를 실행한다.
        3. 1번 2번 작업을 @Before, @Test, @After, @AfterClass에서 반복한다.
      • 밀리세컨 단위로 일어나는 일이지만, 테스트 케이스가 많아지면 큰 영향을 미친다.
    2. 테스트 코드 가독성을 떨어트린다.
      • 테스트 코드의 목적
        1. 테스트는 코드의 작동 방식을 기록하는 문서이다.
        2. 테스트는 코드가 제대로 작동하는것을 보장한다.
      • 테스트의 가독성이 좋아야하는 이유
        1. 테스트를 통해 코드의 작동 방식을 이해할 수 있다.
        2. 실패한 테스트의 원인을 빠르게 확인할 수 있다.
  • 먼저 공식문서를 확인하자.

Affirmation(자기 선언)

  • 나는 먼저 공식문서를 확인하는 사람이다.
  • 나는 가독성 좋은 테스트를 작성하는 사람이다.
profile
42seoul cadet

0개의 댓글