토요일, 9월 15, 2012

[독서광] 테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구

지난 주에 약속한 대로 애자일 관련 서평에 돌입하겠다. 1번 타자는 '테스트 주도 개발: 고품질 쾌속개발을 위한 TDD 실천법과 도구'인데 무려 국내서(!)이다. 정말로 오래 전(2005년 1월이다)에 테스트 주도 개발 서평이라는 제목으로 켄트 벡의 '테스트 주도 개발' 독후감을 올렸는데, 거의 8년이 지난 이 시점에서 다시 한번 TDD와 관련된 서평을 쓰려니 감개가 다 무량할 지경이다. 거두절미하고 한 문장으로 느낌을 정리하자면... "기술도 발전했고 도구도 발전했고 무엇보다 개발자들도 발전했다"라고 보면 되겠다.

켄트 벡의 책이 나왔을 당시만 하더라도 TDD를 뒷받침해주는 도구, 책, 프레임워크 등이 부족해 뭔가를 제대로 해보려면 애로사항이 꽃을 피웠는데, 이번 'TDD 실천법과 도구'를 읽으면서 정말 세상 좋아졌다는 생각을 다시 한번 하게 되었다. 물론 여전히 TDD는 모든 분야에 적용 가능한 만능 도구가 아니라는 사실은 변치 않았지만 (마음만 굳게 먹는다면) 예전보다는 실제 개발에 도움을 주는 수준에 이르렀다고 봐도 틀림없겠다. 목(mock)을 만들기 어려운 상황이나 유지 보수의 일환으로 설계/개발 관점의 테스트가 아니라 테스트를 위한 테스트 자체에 집중하는 상황에서는 TDD를 도입하기는 어렵겠지만, 복잡하고 급변하는 비즈니스 논리가 주도하는 분야에서는 TDD가 짧은 호흡으로 모듈화 수준이 높은 고품질 제품 양산에 적합하리라고 본다(라고 쓰고 실제 적용은 끈기와 집념과 노력이 필요하다고 읽는다).

서론이 너무 길었나? 이 책은 초급 개발자의 학습을 고려하면서도 최근에 나온 여러 가지 TDD 관련 도구를 레퍼런스 형태로 정리해 중급 개발자에게도 도움을 줄 수 있도록 설계되어 있다는 점에서 높은 점수를 줄 수 있다. 단순히 예를 위한 예로 끝나지 않고 실제 개발 과정에서 고려해야 하는 각종 패턴을 소개하고 다양한 패턴에 맞춰 사용 가능한 라이브러리의 장단점과 한계를 비교 정리하고 있기에 자료를 찾고 검토하는 시간도 절약해주며 삼천포로 빠지는 시행 착오를 줄이는 효과도 기대할 수 있다.

목차를 보면, 1, 2, 3장까지는 예를 들어가며 TDD를 실습하는 내용이며, 4장은 TDD에 있어서 아주 중요한 Mock 객체와 프레임워크를 설명하면서 기본적인 TDD 설명을 마친다. 5장은 데이터베이스 테스트, 6장은 단위 테스트 지원을 위한 라이브러리를 소개한다. 그리고 7장은 개발 영역에 따른 TDD 작성 패턴을 다루며, 8장과 9장은 TDD에 대한 시각과 FAQ를 정리한다. 마지막으로 10장은 간단한 실습 예제를 제공하며, 11장과 부록 A는 테스트 자동화와 고급 기능 등을 정리해 나머지 공부가 가능하도록 배려하고 있다. 개인적으로는 7장이 가장 흥미로웠다. 일반적인 애플리케이션, 웹 애플리케이션, 데이터베이스라는 세 분야에 대해 TDD를 어떤 식으로 적용할지를 솔직 담백하게 풀어쓰고 있으므로 TDD를 적용할 곳과 적용하지 않을 곳을 판단하기 위한 좋은 기준을 제공한다. (비단 IT뿐만 아니라 다양한 분야에서) 인터넷에 올라온 글이나 책에서 특정 개념을 설명할 때 혼자 up 되어 장점만 마구 나열하는 경우를 종종 보게 되는데 이 책은 문제점이나 단점도 제대로 찍어주기 때문에 중립적인 시각으로 TDD를 바라볼 수 있게 해준다. TDD를 둘러싼 Context 0라는 한계를 얼른 파악하고 싶은 성질 급한 개발자라면 FAQ 부분을 먼저 읽어보면 좋을 것 같다.

이 책은 홈페이지도 구글 코드에 호스팅하고 있으므로 구입 전에 샘플 챕터를 읽어볼 수 있으며, 책을 읽는 도중에 오탈자, 예제, 보너스 내용, 링크 등을 온라인에서 확인할 수도 있다.

백문이 불여일견이라 애자일과 TDD에 관심이 많은 분들이라면 일단 지르고 보시라.

EOB

댓글 없음:

댓글 쓰기