PromleeBlog
sitemap
aboutMe
Menu
Welcome to
✨ Promlee Blog ✨
View 📈
Total: -
Today: -
추천 포스트
개발
스프링 부트
Spring Boot로 시작하는 TDD
Spring Boot TDD 정리 (최종 실습 코드 포함) - Spring Boot로 시작하는 TDD 15편
Spring Boot TDD 정리 (최종 실습 코드 포함) - Spring Boot로 시작하는 TDD 15편
Spring Boot TDD Summary (Final Code Included) - TDD with Spring Boot Part 15
📅
🚀 들어가기 전에
🚀 우리가 걸어온 길
🚀 TDD가 선물하는 유지보수의 힘
🚀 전체 소스 코드
🚀 Your Next Steps
🚀 결론
✅ 참고
🚀
들어가기 전에
🔗
안녕하세요.
1편에서 "TDD가 뭔가요?"라고 묻던 때가 엊그제 같은데, 벌써 마지막 15편에 도착했습니다.
그동안 우리는 텅 빈 프로젝트에서 시작해 상품을 등록하고, 조회하고, 검증하고, 예외를 처리하는 탄탄한 애플리케이션을 함께 만들었습니다.
이번 마지막 시간에는 우리가 학습했던 것들을 되짚어보고, 이
습관
이 앞으로 여러분의 개발 인생에 어떤 무기가 될지 정리해 보겠습니다.
🚀
우리가 걸어온 길 (시리즈 요약)
🔗
우리는 단순히 코드를 짜는 법을 배운 게 아니라,
소프트웨어를 견고하게 만드는 사고방식
을 배웠습니다.
기초 다지기 (1~4편)
TDD의 핵심인 Red-Green-Refactor 사이클을 익히고, JUnit 5와 AssertJ를 이용해 첫 테스트를 작성했습니다.
특히 '어떻게든 통과시키는'
최소 구현
의 중요성을 배웠습니다.
구조 개선과 계층별 테스트 (5~8편)
지저분한 코드를
리팩토링
하여 Service와 Repository로 역할을 나눴습니다.
가짜 메모리 저장소에서
JPA
로 넘어가고,
MockMvc
를 이용해 Controller까지 테스트했습니다.
고급 기법과 문제 해결 (9~13편)
Mockito
를 활용해 의존성을 끊어내는 행위 검증을 배웠습니다.
@Valid
로 유효성을 검사하고,
Clock Bean
을 이용해 테스트하기 어려운(시간 의존성) 코드를 테스트 가능한 구조로 개선했습니다.
마지막으로
단위 테스트
와
통합 테스트
의 균형을 맞추는 법을 익혔습니다.
🚀
TDD가 선물하는 유지보수의 힘
🔗
왜 우리는 이 고생을 하면서 테스트 코드를 짰을까요?
그 진가는 개발이 끝난 뒤에 드러납니다.
두려움 없는 리팩토링
코드를 수정할 때 "이거 건드렸다가 다른 게 망가지면 어쩌지?"라는 공포가 사라집니다.
테스트가
초록 불
을 켜주면, 우리는 안심하고 구조를 개선할 수 있습니다.
살아있는 문서
복잡한 위키(Wiki) 문서보다 테스트 코드가 훨씬 정확합니다.
"이 API는 어떤 값을 넣으면 에러가 나나요?"라는 질문에 테스트 코드는
거짓말하지 않는 대답
을 줍니다.
디버깅 시간 단축
버그가 발생했을 때, 전체를 뒤지는 게 아니라 실패한 테스트 케이스 하나만 보면 됩니다.
범인을 잡는
CCTV
가 코드 구석구석에 설치된 것과 같습니다.
🚀
전체 소스 코드 (GitHub)
🔗
이번 시리즈를 진행하면서 작성한 모든 실습 코드는 아래 저장소에 정리되어 있습니다.
혹시 놓친 부분이 있거나 전체 구조를 보고 싶다면 클론(Clone)해서 확인해 보세요.
실습에 사용된 코드는
GitHub 저장소↗
에서 확인할 수 있습니다.
Terminal
git
clone
https://github.com/PROMLEE/tdd-study.git
🚀
Your Next Steps
🔗
TestContainers
우리는 H2(인메모리) DB를 썼지만, 실무에서는 실제 MySQL이나 Redis 환경과 똑같이 테스트하고 싶을 때가 있습니다.
도커(Docker)를 활용한
TestContainers
를 공부해보세요.
BDD (Behavior Driven Development)
기술적인 용어(
assertEquals
) 대신, 기획서에 가까운 언어(
Given
,
When
,
Then
)로 테스트를 작성하는
Cucumber
나
JGiven
같은 도구들이 있습니다.
성능 테스트
기능이 맞는지 확인했다면, 이제 얼마나 빠른지 확인할 차례입니다.
JMeter
나
nGrinder
를 이용해 부하 테스트에 도전해 보세요.
CI/CD 파이프라인
작성한 테스트가 내 컴퓨터에서만 도는 게 아니라, 깃허브에 코드를 올릴 때마다 자동으로 실행되도록
GitHub Actions
나
Jenkins
를 구축해 보세요.
🚀
결론
🔗
👍
테스트 코드는 개발자가 작성하는 첫 번째 사용자(Client) 코드이다.
제가 가장 좋아하는 말입니다.
내가 만든 코드를 내가 가장 먼저 사용해 보면서(테스트), 불편한 점을 고치고 설계를 다듬는 과정이 바로 TDD입니다.
처음에는 속도가 느리고 답답할 수 있습니다.
하지만 꾸준히 연습하다 보면, 어느샌가 테스트 코드와 함께 자신감 있는 개발을 하는 자신을 발견하게 될 것입니다.
그때가 되면 여러분은 이미
좋은 개발자
가 되어 있을 것입니다.
긴 시리즈를 함께해 주셔서 진심으로 감사합니다.
여러분의 코드에 항상 Green Light만 가득하기를 응원합니다!
감사합니다~
✅
참고
🔗
Clean Code (Robert C. Martin)↗
테스트뿐만 아니라 유지보수하기 좋은 코드를 작성하는 철학이 담긴 필독서입니다.