그렇다... 나도 TDD를 한번도 써본 적이 없는 개발자다.
TDD??? Test-Driven Development?? 그게 뭔데?? 그거 쓰면 개발하는데 시간만 오래 걸리고 뭐가 좋은데? 라는 생각을 해온 개발자였다. Loopers에서 배우기 전까진.... 내가 이런 생각이 바뀌게 된 이유를 설명하려고 한다.
TDD는 Test-Driven-Development의 약자로, 테스트를 먼저 작성하고, 그 테스트를 통과하는 최소한의 코드를 작성하며....어쩌고 어쩌꼬.... Red -> Green -> Refactor 3단계 사이클을 ...... Mock...spy.......
난 설명을 아무리 봐도 뭐라는지 모르겠다.... 개념부터 공부하는건 너무 재미가 없다. 우~~~ 노잼~ 재미없는건 딱 질색이다.
우선 이걸 왜 쓰는지 부터 알아야 된다.
개발자가 제일 좋아하는게 뭘까? 높은 월급...? 물론 뭐 맞는 말이지만
난 뭐냐고 물어보면 단연코 평생 야근 없는 삶이다.
👉 난 이거 못참는다.
내가 생각한 예시들이다.
• 버그가 어디서 나는지 모름
• 개발하다 보니 요구사항이 계속 바뀜
• 어제 되던 게 오늘 안 됨
• 리팩토링했더니 엉뚱한 기능이 망가짐
• 테스트가 없어서 QA에서 대량 이슈 발견
→ 결국, 야근은 “예측 불가능한 실패에 대응하느라” 발생한다.
TDD는 “코드보다 테스트가 먼저 나오는 개발 방식”
TDD는 테스트를 먼저 짜기 때문에, “무엇을 만들어야 하는가?“를 개발 전에 명확하게 정의한다.
TDD는 작은 단위로 기능을 점검한다.
→ 실패가 생기더라도, 방금 수정한 부분에만 집중하면 된다.
즉, 버그의 범위를 좁혀준다.
✅ “어디서 실패했는지 바로 보이므로, 디버깅 시간이 획기적으로 감소”
✅ “작은 단위로 검증하니 전체를 무너뜨릴 위험이 줄어듦”
테스트는 코드가 늘어날수록 더 큰 안정망이 된다.
새로운 기능을 추가하거나 리팩토링할 때 기존 기능이 깨지면 즉시 테스트가 실패한다.
🔁 반복적으로 실행되는 자동 회귀 테스트는 “실패를 빠르게 감지하고, 피드백 루프를 단축시킴”
테스트가 없으면, “이거 고쳤다가 망가지면 어떡하지?”라는 불안감으로 기존 코드에 손대기를 꺼리게 된다.
하지만 테스트가 있다면???
✔️ “기능은 이미 보장되니까, 구조를 바꿔도 안심”
→ 결과적으로 더 좋은 코드 품질, 더 적은 버그
결국 TDD는 실패를 막는 것이 아니라, 실패를 빠르게, 명확하게 발견하도록 설계된 전략이다. 그래서 결국 예측 가능한 개발 흐름을 만들어주며, 안정적인 코드를 유지하는 데 큰 도움이 된다. 그럼 자연스럽게 야근할 확률도 줄어 들 것이다.
이걸 보고도 TDD를 안 한다....? 난 배우고 야근 안 할거다. 그럼 이만.
테스트를 짜면 야근 해방이라고? 이건 못 참지~