[디프만 15기 X 인프런 스터디] Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 스터디 후기

yb__char·2024년 9월 6일
2

디프만 15기

목록 보기
1/1

안녕하세요! 간만에 인사드립니다🙇‍
최근 회사일도 바쁘고.. 디프만 15기에 참가하여 프로젝트도 진행하고 있어서 시간을 할애하기 힘들어 블로그 글을 잠시 멈추고 있었습니다 🥲

사실 14기 CS 스터디가 아직도 갱장히 큰 여운이 남아있었고, 이번 15기에서는 강의가 주어진 것이 아닌 자율적으로 강의를 선택하여 스터디원을 구인하고 구성할 수 있도록 시스템이 되어있어용
그래서 디프만 15기 활동 중 이번엔 내가 스터디장을 해보겠숴~ 하면서 호기롭게 제가 구인을 시작하였습니다!
다행히도 희망자가 많았고 참석해준 도모, 나현, 한음, 은지, 준원, 원채에게 무한의 감사를...🙏

강의 선정은 수강하고 싶었던 강의, 활동 기간 내에 프로젝트 부담이 되지 않도록 강의, 이렇게 기준을 정하여 리스트업하였고 테스트 코드 강의가 유익하고, 활동 중 도움이 되겠다 판단하여 선정하였습니다!

강의 링크: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%98%A4%EB%8B%B5%EB%85%B8%ED%8A%B8#curriculum

스터디 OT를 진행하였는데요, 주말 아침부터 다들 시간을 맞추어서 참가해주시고 너무 감사했습니다!
이번 스터디도 14기 때 하였던 CS 스터디 그라운드 룰을 적용해보았어요

그리고 앞으로도 두고두고 한번씩 생각나면 찾아볼 노션에 우리 스터디원들의 사진첩을 생성해놨습니다

이번엔 강의를 수강하고 직접 코딩을 하며 실행하여 결과를 확인해야 하기에 디프만 Organization에서 Repo를 생성했습니다.
다들 각자 이름으로 된 디렉토리에서 작업을 하고, 실습 또는 테스트 코드에 대한 학습한 내용을 각 주차마다 정리하여 한명이 발표하는 시간을 갖도록 했습니다!

아무래도 앞으로 계속 스터디를 이어나가는데에 있어서 보다 편한 분위기로 형성하려면 첫 만남에는 오프라인으로 진행하였고, 같이 점심을 먹도록 일정을 잡았어요! 그래서 1주차는 스터디룸 예약잡고 발표해보는 시간을 가졌답니다!


1주차에는 우리가 왜 테스트 코드를 작성하는 가에 대한 필요성, 개념, 의존성 역전 법칙에 대한 이론을 학습하고 스터디 시간에 발표하여 이야기는 나누는 형식으로 진행하였습니다!
또한 체크아웃 시간을 통해 스터디 1주차에 대한 좋았던 점, 어려웠고 난해했던 점에 대해 이야기를 나눠 네트워킹을 형성하였답니다.

2주차에는 섹션 2는 직접 테스트 코드를 작성하여 PR up을 통해 기록을 남기는 방식을 가졌고, 섹션 3에서는 앞으로 Testability를 높이기 위해 레이어드 아키텍처의 단점과 문제점을 살펴 지양하는 점에 대해 공부를 해봤어요

3주차는 외부 연동이 필요한 클래스에 대해 인터페이스 생성하여 의존성 역전 법칙에 의거한 Fake, Stub 등을 활용하여 테스트하는 방법에 대해 알게 되었고, 도메인은 도메인, Entity는 영속성 객체별로 분리를 하고나서 도메인에는 비즈니스 로직에 사용되게끔 분리를 하였어요. 개인적으로 더티 체킹을 통한 객체 변동성에 대해서는 완벽히 배제가 되어 명시적으로 수정/삭제 표현되는 것이 좋다 생각했습니다.

4주차는 3주차를 통해 Fake, 의존성 역전 법칙을 활용해 소형 테스트에 대한 실습이 주로 이루어졌고, TestContainer를 통해 미리 생성된 Fake 객체를 테스트해볼 수 있었답니다, (테스트 시간이 빨라지긴 했움 ㅋㅎ)

5주차에는 그간 배웠던 내용들에서 테스트 코드이니만큼 설계에 집중적으로 이론, 실습을 통한 학습이 이루어 졌고 Testability를 높이기 위해 아키텍처의 변화가 이루어졌어요. 바로 대망의 헥사고날 아키텍처인데
서로의 역할에서 침범하지 않고 외부 연동, 또는 모듈에 대한 교체 및 수정이 수월하도록 이론 학습을 하였습니다.

간단하게 보는 헥사고날 아키텍처 장단점

장점

  1. 도메인으로 접근하기까지 방향성이 단방향으로 유지된다는 장점이 존재한다. 도메인은 고립되고 Pure하다.
  2. 스프링과 JPA와 같은 프레임워크에 의존적이지 않고 도메인 개발에 집중적이다.

단점

팀 구성원이 아키텍처에 대한 이해도가 가지고 있어야 한다. 그만큼 러닝커브가 좀 길다....


이렇게 강의에 대한 스터디 섹션은 마무리하게 되었어요:)

전반적으로 강의는 매우 좋았습니다!
막연하게 좋았다기보다는 서론부터 왜 테스트 코드를 잘 작성해야 하는지, 필요성, 의존성 역전 법칙 등 이론 설명부터 수강자가 직접 고민을 할 수 있도록 하고 실습까지 A to Z 깔금했습니다.
앞으로 있을 프로젝트나 현재 진행된 프로젝트가 있다면 Testability에 대해 고민하고, 아키텍처 변동에 따른 코드를 작성하려고 노력을 좀 기울여야 겠다고 느꼈어요

이 강의를 고민하고 있다면 아래 스터디원들의 repo를 참고하시고, 저는 강추한다고 이야기 드리고싶어요

강의 실습 Repository: https://github.com/depromeet/15th-Spring-Test-Study

마지막 6주차에는 그간 친해진 스터디원들과 같이 오프라인으로 모여 같이 디프만 세션에 참여하고, 곱창/막창과 술 한잔 기울이며 강의 후기나 스터디하면서 어땠는지, 취준 얘기, 앞으로 커리어 등등 이런저런 재밌는 이야기를 나눴답니다 👍

14기, 15기 스터디를 하고서 느낀 점은 항상 디프만에서 프로젝트를 중점적으로 하면서 개인적으로 공부할 시간이 부족하였고, 저처럼 프로젝트 뿐만 아니라 스터디를 하고 성장하기 위한 사람들이 많다는 것을 새삼 느껴요. 성장을 위해서 먼저 이야기를 건네고 참여하는 자세가 중요하였고 앞으로도 저의 근황과 개발 지식을 전하도록 하겠습니다:)

소중한 기회를 준 인프런, 디프만 압도적 감사...!

profile
안녕하세요 백엔드 개발자 차윤범입니다 :)

0개의 댓글