Jinnie devlog

WIL - 1주차 (TDD) 본문

교육

WIL - 1주차 (TDD)

Jinnnie 2025. 7. 18. 17:55

TDD(Test-Driven Development)

 

예전에 NEXTSTEP 교육으로 TDD 강의를 들었었는데, 몇 주차 듣다가 진도를 따라가기가 벅차 포기했던 기억이 있다.

실무에서도 사용해보지 못해서 너무 생소하고 어려웠다... 이번 수업은 꼭 완강을 목표로 열심히 해보려 한다 !

 

TDD의 가장 큰 장점은 테스트 코드를 먼저 작성하면서 요구사항을 명확히 정리할 수 있고, 추후 코드 변경에 대한 부담을 줄일 수 있다. 이 외에도 코드 품질 향상, 리팩토링 안전성 확보 등 많은 이점이 있다.

 

1주차 과제는 회원가입, 포인트 관리와 관련하여 단위, 통합, E2E 테스트코드를 작성하고 그에 따른 기능을 구현해야 했다.

 

테스트의 종류

  • 단위 테스트
    • 대상: 가장 작은 단위(클래스, 메서드, 함수)
    • 목적: 개별 컴포넌트가 의도한 동작을 하는지 검증
    • 기술: JUnit, Kotest, AssertJ 등
  • 통합 테스트
    • 대상: 여러 모듈이나 시스템 간의 상호작용
    • 목적: 컴포넌트들이 잘 연동되는지 확인
    • 기술: SpringBootTest + H2 + TestContrainers 등
  • E2E 테스트
    • 대상: 애플리케이션 전체 플로우
    • 목적: 실제 사용 시나리오처럼 시스템 전반의 흐름 검증
    • 기술: SpringBootTest + @AutoConfigureMockMvc, webTestClient

과제를 진행하면서 설계, 예외 처리, 유효성 검사 등 다양한 부분을 신경 쓰다 보니 시간이 오래 걸리고, 코드가 복잡해지는 느낌이 들었다. 

우선은 테스트코드를 작성하고, 테스트 코드가 동작할 수 있을 정도로 간단하게 기능을 구현하려고 노력했다.. 아직은 감이 잘 안와서 뭐부터 공부를 해야하는지도 잘 모르겠지만 하다보면 언젠간 익숙해지길 바라며...