왜 이 글을 쓰게 되었는가?
이전에 TDD라는 걸 우연히 접하였지만 너무 어렵고 이걸 어떻게 회사에 적용해? 라는 생각에 접었던 경험이 있다.
항상 손가락의 가시처럼 한켠에 남아있던 TDD.
TDD를 공부할 수 있는 기회가 생겨서, 이참에 다시 TDD를 도전해보고 있다.
TDD를 공부하자! 라며 호기롭게 예제가 들어 있는 프로젝트를 실행시킨 순간!
아뿔사, 스프링도 많이 바뀌었지..
이 글은 맨처음 TDD를 하면서 시작부터 어려웠던 점을 공유해보고자 하였다
그래서 무엇이 문제인고?
내가 당장 해야 했던 기능은 '회원가입'.
기획도 단순하다.
<<회원가입>>
- 필요 정보 : { 로그인 ID, 비밀번호, 이름, 생년월일, 이메일 }
- 이미 가입된 로그인 ID 로는 가입이 불가능함
- 각 정보는 포맷에 맞는 검증 필요 (이름, 이메일, 생년월일)
- 비밀번호는 암호화해 저장하며, 아래와 같은 규칙을 따름
1. 8~16자의 영문 대소문자, 숫자, 특수문자만 가능합니다.
2. 생년월일은 비밀번호 내에 포함될 수 없습니다.
프로젝트를 하면서 매번 처음 하는게 회원가입, 로그인, 내정보조회, 비번찾기 등등등..
그런데 막상 프로젝트를 열고 회원가입 기능 구현을 하려니 뭔가 턱! 하고 막혔다.

뭘 어떻게 해야 한단 말인가....
하여 저는 이렇게 하였습니다.
아니 내가 개발 한두번 한 사람이 아닌데, 회원가입에서 막힌다고??
여기서 멈추기에는 너무 한발자국도 길에 찍지 않았으니... 곰곰히 생각해보았다.
나는 어떻게 개발을 이제껏 했었지?
내가 왜 여기서 막히는 것 일까?
내린 결론은 항상 나는 프론트부터 하나씩 만들어서 백엔드로 넘어가는 개발방식을 했었기에
내가 생각하던 개발순서의 0번이 사라지고 순서 5번에 해당하는 스탭을 바로 하려하니 선뜻 나아가지 못한 게 첫번째 원인.
두번째로는 TDD도 하기전에, 내가 가지고 있는 프로젝트의 샘플이 어떻게 되어 있는 지도 확인하지 않았던 것.
첫번째 원인의 문제 해결
프론트를 개발하면 좋겠으나, 스터디의 기간상 프론트를 만들 수는 없고 그 또한, 지금 하는 회원가입기능 구현에서 많이 달라지는 부분이기에, 다음과 같은 그림을 그리고 우선순위를 파악하였다
그리고 회원가입을 위해 엔티티를 작성하고 단위 테스트를 작성을 하였다. (TLD방식)

두번째, 프로젝트 구조 파악하기
API를 통해 들어왔을 때, 서비스를 통해 DB까지 어떻게 저장되는 지 확인하는 테스트를 하기위해선 기존의 샘플 예제를 보면서 어떤 파일들이 필요한지 알아볼 필요가 있었다. 이때 사용한 것이 클로드.
항상 WEB만 써보다가 이번에 CLAUDE CLI를 사용하여 구조를 좀 더 쉽게 파악할 수 있었다. 중간중간 내가 모르던 애노테이션이나, Facade에 대해서도 알 수 있었다.

그래서 무엇을 배웠는 고?
함께 하는 파트너를 얻었다. 그리고 TDD 맛보기
예전에 테스트 코드를 짠다고 했을 때, 너무 막연했던 게 ModelTest는 뭐고, ServiceIntegrationTest는 뭔데.. 그리고 또 E2E테스트는 뭔데?
- 왜 Model에 비즈니스 로직을 넣고,
- 그럼 서비스에는 뭘 넣어야 하는 지,
- facade라는 건 왜 필요한가,
- 도메인 테스트에서 디비로의 연결은 필요하지 않다 따라서 비즈니스 로직에는 디비로의 연결또한 없다
등을 알 수 있었다.
또한, 클로드를 통해서 바로바로 막히는 부분을 해결하고, 개발 플랜을 짰던 것이 예전에 혼자 공부했을 때보다 더 어려움없이 시작할 수 있게 도와주었던 것 같다
'개발 > 개발' 카테고리의 다른 글
| [스크랩 기능] 스크랩 삭제 API 설계 – scrapId만으로 충분할까? (0) | 2026.02.26 |
|---|---|
| [스크랩 기능]폴더 하나 만들면서 UX와 설계를 같이 고민해본 이야기_1 (1) | 2026.02.11 |
| [알림] 알림톡 일괄 전송 개발기 (0) | 2026.01.27 |
| Python 워커 와 Django 워커의 차이 (0) | 2026.01.17 |
| [알림] 서비스 알림 설정 유도 페이지 기획 (1) | 2026.01.10 |