본문 바로가기
Memo/BootCamp : TIL

[Day 89] 기술 면접, Section 3 회고

by 달의 조각 2022. 9. 19.

학습 주제

 

기술 면접
테스팅 복습

 


 

새롭게 배운 내용

 

2022.09.18 - [Back-End/Spring MVC] - Spring Boot | Testing을 공부하며 사용한 클래스

 

Spring Boot | Testing을 공부하며 사용한 클래스

📗: 인터페이스, 📄: 클래스 helper ㄴ 📗 ControllerTestHelper : HttpMethod에 따라 요청 메서드 생성, URI 반환 ㄴ 📗 MemberControllerTestHelper : Member 컨트롤러에 대한 URI를 호출할 수 있도록 연결 ㄴ..

cookiee.tistory.com

 

 

보강할 내용

 

  • API 문서화 복습
  • PageImpl의 정확한 용도, Pageable과의 차이
  • @Mock과 @MockBean의 차이

 

 

회고

 

Section 3에서 학습한 내용

API 계층
서비스 계층
예외 처리
JDBC 기반 데이터 액세스 계층
JPA 기반 데이터 액세스
트랜잭션
테스팅
API 문서화
애플리케이션 빌드 / 실행 / 배포

 

API 계층과 서비스 계층까지는 클라이언트의 요청을 컨트롤러의 핸들러 메서드가 받고, 각 요청에 따른 서비스 로직을 실행시킨 후 클라이언트에게 응답을 반환한다는 단순한 과정만 이해하면 실습을 쉽게 진행할 수가 있었다.

예외 처리 이후 과정부터는 처음 학습하는 내용들이어서 공부를 하면서도 이게 맞나? 싶은 생각을 많이 했었다. 학습을 진행하면서 조금이라도 의문이 드는 점이 생기면 노션에 키워드에 정리를 해 뒀는데, 하루 학습량을 급하게 따라가다 보니, 그리고 복습보다는 예습 위주로 공부를 했기에 쌓아 둔 부족한 점들을 채우는 시간이 적었다는 게 문제였다.

이번 Section에서 어려웠던 부분은 데이터 액세스 계층과 테스팅 부분이다.

데이터 액세스에서는 연관 관계를 매핑하는 부분이 어려웠다. mappenBy와 @JoinColumn을 어느 방향에 붙여야 하는지와 단방향과 양방향의 전체적인 개념이 잘 잡히지 않아서 강의를 들으며 정리했다.

2022.09.10 - [Back-End/Spring Boot & JPA] - 연관관계 매핑

 

연관관계 매핑

이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 객체와 테이블 연관 관계의 차이 객체의 참조와 테이블의 외래키 매핑 방향, 다중성, 연관관계의

cookiee.tistory.com

아래는 테스팅 유닛에서 어려웠던 부분에 대해 지난 회고에 작성했던 내용이다.

김영한 님의 스프링 강의에서 테스팅 과정이 비즈니스 로직을 작성하는 시간보다 길고, 중요하다는 얘기를 들었었다. 테스트 코드에 대한 설명을 들으며 라이브 코딩을 할 때에는 복잡한 로직이 아니었기 때문에 쉽게 이해했었다. 이번 Section의 코드들도 기본적인 로직들이 해당하지만 테스트 코드를 작성하는 것은 마냥 추상적이게만 받아들여져서 흰 도화지에 아무런 주제도 없이 그림을 그려 가야 하는 것처럼 느껴졌다.

 

금요일에 Section 3의 학습이 끝나고, 월요일인 오늘 모의 기술 면접과 회고 블로깅 시간이 주어졌기 때문에 주말과 오늘 부족한 테스팅 유닛을 복습했다. 아래는 테스팅이 어렵게 느껴졌던 이유와 보강한 내용이다.

  1. 테스트 코드를 작성하는 게 추상적이게 느껴졌다. → 레퍼런스 코드를 보고 given - when - then 코드 파악하기
  2. Mockito에 대해 제대로 이해하지 못했다.
  3. 중복되는 코드를 정리하기 위해 수행한 리팩토링 코드를 파악하지 못했다.
     Spring Boot | Testing을 공부하며 사용한 클래스
 

Spring Boot | Testing을 공부하며 사용한 클래스

📗: 인터페이스, 📄: 클래스 helper ㄴ 📗 ControllerTestHelper : HttpMethod에 따라 요청 메서드 생성, URI 반환 ㄴ 📗 MemberControllerTestHelper : Member 컨트롤러에 대한 URI를 호출할 수 있도록 연결 ㄴ..

cookiee.tistory.com

given - when - then 구조로 테스트 코드를 작성할 때, 어디에 무엇을 만들고 수행해야 할지 모호하게 느껴졌는데, 이 구조로 나누어 사용되는 인터페이스와 클래스를 정리했다. 테스팅이 어려웠던 이유 중에 잘 모르는 인터페이스와 클래스들이 마구 등장해서도 있었다. 테스팅에서 사용하는 것들은 다 목적이 뚜렷했기 때문에 어떤 구조로 테스트를 작성해야 하는지 감이 잡혔다. 리팩토링에 대해서는 디렉토리 구조로 나누어 목적을 정리했다. 처음에는 왜 이렇게 인터페이스와 클래스를 생성해서 호출하는지 각 목적이 파악이 안 됐었는데 이제는 파악이 된다. Mocktio의 given()을 사용하는 이유 또한 잘못 알아서 이 자체가 검증인 줄 알았는데 슬라이스 테스트 중 다른 계층과의 연결을 막고 대신해 준다는 것을 제대로 공부했다.

아직 낯선 부분도 있기에 정리한 포스팅을 읽어 보는 과정이 더 필요할 것 같고, API 문서화에 대한 복습도 진행해야겠다. 그래도 낯설게 느껴졌던 테스팅에 대해 잘 정리하고 이해했다고 느껴서 뿌듯하다.

다음 Section에서는 시간을 잘 활용하는 방법에 대해 고민해 보고, 이해가 잘 안 되는 부분이 생겼을 때 미루지 않고 당일 코드 분석을 하는 시간을 가지며 온전한 이해로 채워 나가고 싶다.

 

 

★★★★★

 

댓글