이번에 네카라쿠배? 중 하나의 회사 면접에 가게 되어 난생 처음으로 판교에 가보았다.
이직 준비를 하면서 서류합격률이 많이 낮았기 때문에 간만에 면접경험을 얻을 수 있는 좋은 기회가 생겨 좋았다.
면접의 내용은 어차피 글로 쓸 수 없지만 면접중 ai를 허용하는 라이브 코딩테스트를 치는게 신기하다는 생각이 들었다.
면접이 끝나고 질의를 주고 받는 시간에 면접관님에게 테스트 코드 작성 시 단위/통합 테스트의 비중에 대해서 여쭤보았다.
면접 전에 쿠팡 출신 개발자 분에게 멘토링을 가지는 시간을 가졌어서 그 때도 유사한 질문을 드렸었는데
이런 질문을 드린 이유는 최근에 여러 프로젝트를 동시에 진행해야 하는 상황이 지속 되면서 테스트 코드 작성의 필요성을 더욱 절실히 느끼고 있는데 (테스트 코드가 없으면 기획 / 코드 흐름을 기억 해내기 힘들거나, 코드에 손대기 무서워지는 경우가 너무 많다)
기존에는 통합 테스트 비중이 늘어날 수록 테스트 돌아가는 시간이 너무 늘어난다고 생각하여
당연히 단위 테스트의 비중을 높게 가져가고, 데이터 흐름을 꼭 봐야하는 상황에만 통합테스트를 진행하려고 하였는데 (사실 거의 단위테스트만 함)
최근에 아래와 같은 포스팅을 보았기 때문이다.
(출처: 이규원님 블로그)
https://gyuwon.github.io/blog/springboottest-performance-issues/
@SpringBootTest 사용 테스트 성능 문제에 대한 답변
Spring 응용프로그램 개발에 TDD를 적용하는 과정에서 테스트 실행 속도와 관련된 질문이 자주 제기된다. 특히, @SpringBootTest를 사용한 테스트의 실행 성능과 관련한 고민을 많이 듣는다. 이와 관련
gyuwon.github.io
반면에 실무에서 테스트 클래스마다 필요한 테스트 대역을 준비하기 위해서 응용프로그램 컨텍스트 구성이 계속 달라지는 경우는 새로운 응용프로그램 컨텍스트를 계속 준비하기 때문에 실행 시간이 길어질 수 있다. 과도한 테스트 대역 사용이 일으킬 수 있는 문제 중 하나다.
..
참고로 나는 그동안 실무에서 Spring Boot 응용프로그램을 개발할 때 @SpringBootTest를 사용한 테스트는 10~20% 정도만 작성하고, 나머지는 Spring 독립적인 순수한 모델 영역의 범위를 크게 만들어서 이 부분을 대상으로 80~90% 정도 테스트를 작성했다.
참고로 면접관님과 멘토님에게 들었던 답변은 위의 포스팅과 상반된, 단위테스트 위주로 작성한다였다. (물론 팀바팀일 수 있다고 하심)
당연히 개발에 있어 정답이 없고 팀의 목적과 상태에 따라 선택지가 바뀔 수 있겠지만,
나의 깜냥(?)으로는 아직은 우리 팀에 적합한 방식이 어떤 것인 지 파악이 어려운 것 같다.
그래도 나름 평소에 궁금했던 내용에 대해서 시니어 개발자분들의 의견을 들을 수 있어서 좋았고 괜찮은 면접 경험이었던 것 같다.