전체 보기
🍀

12일차_기능 별로 구현하며 단위 테스트의 필요성 느끼기 (with [책]자바와 JUnit을 활용한 실용주의 단위 테스트)

작성일자
2023/10/30
태그
DIARY_DEVELOP
프로젝트
PreCourse
책 종류
1 more property

[책] 자바와 JUnit을 활용한 실용주의 단위 테스트를 읽고

부끄럽지만 지금껏 나는 테스트 코드와 정말 안 친한 사람이었다.. 그리고 포스트맨과 친한.. 항상 마음 한 켠엔 테스트 코드를 잘 사용하고 싶단 욕심은 있었지만 그러기엔 포스트맨이 너무 편했다.. 아마 지금까지 해온 프로젝트들이 매번 단발성의 기능 쳐내기식 토이 프로젝트들이었어서 더 테스트 코드의 중요성을 간과해왔던 거 같다. 또 순수 자바로 코딩을 해본 적은 이번이 사실상 처음이었는데 이제는 포스트맨이 없기에 더이상 물러설 곳이 없다. 실무에 가서도 포스트맨을 돌리고 있을 순 없기에 이번 프리코스 4주의 폐관 수련 기간을 틈타 테스트 코드를 제대로 공부해보기로 했다.
요즘 개발 서적 읽는 재미에 빠져서, 테스트 코드도 책을 구매해 학습했다. 정확하겐 학습보단, 읽고 그동안을 돌아보며 생각을 확장시켰다. “자바와 JUnit을 활용한 실용주의 단위 테스트”. 책 이름부터 이번 프리코스 미션에 딱 걸맞는 책이다. 졸프 수업이 끝나고 돌아오는 길에 잡담 겸 친구한테 내가 물었던 부끄러운 질문이 있다. “단위 테스트가 함수마다 짜는 거야? 나 테스트 하나도 몰라”. 동료의 답은 “어.. 설명하기 어려운 데 함수마다 짜는 건 아니야..”라고 답했고 단위 테스트가 무엇인지에 대한 궁금증이 더 커졌었다. 그리고 그 궁금증에 기반해 집에 돌아오자마자 감기 기운을 무시한채 이 책을 폭풍처럼 읽어나갔다. 이렇게 몰입해 빠르게 책을 읽은 것도 정말 오랜만인 거 같다. 거의 초등학생 때 재밌는 소설책을 만나 새벽까지 읽다 부모님한테 혼났던 때처럼 이 책에 빠져들었었다.
책에선 단위 테스트의 중요성을 계속해서 강조했다. 그리고 내가 느낀 단위 테스트의 말도 안되는 장점은 “각각의 테스트들이 독립적”이란 점이었다. 그동안 무지성으로 개발해올 때 매번 클래스들끼리 분명 의존성이 생기고 그 의존성으로 인해 어느 부분이 문제인지 트래킹해간 적이 많았었다. 예를 들면 어떤 api를 개발했는데 원하는 결과가 나오지 않아 컨트롤러부터 서비스, 레포지토리까지 타고 타며 들어가는 것이다. 이게 얼마나 비효율적인 방식이었는지 이 책을 보고 깨달을 수 있었다. 코드끼리 의존성을 없애는 건 사실상 불가능한데 단위 테스트는 이를 가능하게 하기에 말도 안되는 효율성이라 표현하고 싶다.
이 책을 읽고서 프리코스 2주차 구현을 시작하였는데 1주차와 확연히 달라진 내 태도를 느낄 수 있었다. 1주차엔 테스트코드의 필요성을 일말의 피조차 느끼지 못했었는데, 이번엔 미션 공지와 상관 없이 스스로 테스트 코드의 필요성을 느낄 수 있었고 나의 사고가 한 차례 더 확장됐음을 느꼈다. 특히 이번 미션은 기능 별로 커밋하라는 요구 사항이 추가되어 이를 지키기 위해선 꼭 기능 별로 구현을 차례차례 해나가야 했는데 기능을 구현하고서 테스트 코드 없이 다음 기능을 구현하려니 불안한, 처음 느껴보는 사고를 경험했다.

커밋컨벤션 재정리

과거 정했던 커밋컨벤션
feat : 기능과 관련된 것(기능에 변화를 줌).
새로운 기능 추가.
요구사항 변경으로 기존 기능을 추가, 수정, 삭제
fix : 코드 상 에러, 버그 픽스
docs : 문서 추가/수정. 주석 추가/수정
style : 개행, 들여쓰기, 공백 등
refactor : 기능과 관련되지 않은 것(기능에 변화 주지 않음).
기능 변화 아닌 코드 리팩토링
파일 추가/이동/이름 변경/삭제
test : 테스트 코드 추가/변경
chore : 배포, 빌드 작업
우테코 가이드에 나오는 커밋컨벤션 그대로 사용하기로 함
feat (feature)
fix (bug fix)
docs (documentation)
style (formatting, missing semi colons, …)
refactor
test (when adding missing tests)
chore (maintain)

Today in 프리코스

TIL 작성하기
몰입
실용주의 단위 테스트 책 읽기
구현하기
Search
1일차_둘러보기, 환경설정하기
2023/10/19
DIARY_DEVELOP
1일차_둘러보기, 환경설정하기
2023/10/19
DIARY_DEVELOP