개발관련/책 리뷰

[간단-책리뷰]테스트 주도 개발(By Example)

동팡 2023. 5. 21. 12:11

5월에 끝까지 본 기술 서적이 1권이라니... 이것저것 보다가 겨우 하나 다 봤다.. 

독자 정보

  • 5~10년 차 개발자

독서 일자

  • 2022. 05

내용

  • 실제 TDD를 어떻게 하는지 예제와 함께 설명
  • TDD에 대한 기술적인 설명보다 TDD 개념, 더 좋은 TDD 방법 등을 설명 

별점

  • 4.8 이상: 철학이 존재함, 추천++

대상 독자

  • 개발자

선행 도서

  • -

관련 도서(미디어)

  • [서적] 단위 테스트(생산성과 품질을 위한 단위 테스트 원칙과 패턴)
  • [인강] 이규원의 현실 세상의 TDD : 안정감을 주는 코드 설계 방법

느낀 점

 해당 방법론은 1990년 후반 켄트 백의 익스트림 프로그래밍의 일부이다(근데 왜 난 20년이 지나 공부하는가 ㅡㅡ ㅋㅋㅋㅋㅋ). 우리의 프로젝트에 TDD 방법론 적용은 오버 엔지니어링이라고 생각할 수 있지만, 단위 테스트 코드의 작성을 습관화하는 게 좋지 않을까 생각한다. 

 

해당 서적에서도 TDD 인강에서도 TDD는 불안, 두려움을 지루함으로 바꾸는 방법론이라고 다들 얘기한다. 필자 또한 전적으로 동의한다. 서비스 운영 및 배포를 하면 장애가 항상 수반하는데, 배포했을 때 "과연 장애가 없을까..?", "제대로 배포가 됐을까?"와 같은 불안을 최소화 시켜준다. 이와 같은 작업을 반복하면서 안전한 서비스를 만드는 것이다. TDD가 100% 모든 테스트를 대신하는 것이 아니며, 100% 안전한 서비스를 제공하는 수단이 아니지만 많은 비중을 차지하는 것은 서적과 필자의 경험으로 얘기할 수 있다. TDD에 회의감을 가지는 많은 개발자가 있지만 적당선의 타협을 하면 개발 리소스 감축할 수 있는 효과를 볼 수 있다. 

시간에 따른 변경 비용

간략하게 요약하면 기능 변경에 따른 회귀 테스트를 통해 회귀 버그를 최소화할 수 있다. 회귀 버그로 인해 개발 리소스 비용 증가는 모두가 아는 사실이다(저 보라색 비용을 다들 싫어하더라.. 그래프에는 보라색이 작게 표시 되었지만 실제는 더 크다.) 서스테이닝이 없는 단발성 프로젝트는 엄격한 테스트는 굳이 필요 없지만, 서스테이닝 요하는 서비스는 필수라고 생각한다. 현재 프로젝트는 통합 테스트, 기능 테스트만 제대로 적용됐다. 이 두 개의 테스트로도 효과는 많이 보고 있지만 단위 테스트를 "제대로" 적용하면 더할나위 없다고 본다. 몇 개 로직에 단위 테스트를 적용하여 효과를 봤기 때문에 확언할 수 있다. 

 

해당 서적에서 다독 부분은 다음과 같다.

  • 저자의 글
  • 25장 테스트 격리성 설명
  • 27장 테스트 패턴
  • 32장 TDD 마스터(+)