로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
서평보기
테스트 주도 개발 : Test-Driven Development[재출간판]
켄트 벡 | Insight (인사이트) | 번역서 | 2005-01-02
종합평점
도서수준
테스트 주도 개발 2006-03-02 오후 12:21:40 
평점
도서수준
조회수 (2114)
공감 (0)
정한기 님의 블로그
켄트 벡 아저씨의 유명한 "테스트 주도 개발"을 이제서야 보게 되었다.
켄트 벡 아저씨의 재치있는 입담이 일품이었다.

이 책은 나에게 매우 큰 충격으로 다가왔다. "테스트 주도 개발"이란 말 자체는 예전부터 들어왔고 또 실용주의 프로그래머에서 본 것 처럼 단위 테스트의 중요성 및 효용성에 대해서는 (문자로는) 익히 알고 있었던지라 별로 새로운 내용은 없겠거니 라는 생각을 가지고 책을 보았다. 그러나 읽어가면 읽어갈수록, 내 머리속에 전구가 켜지기 시작했다. "테스트 주도 개발"이란 말은 단지 그대로 풀어서 "테스트를 중심으로 하는 개발" 이라는 것으로는 부족함이 있다. 개발 방법 자체를 논하고 있는 것이었다.
 
테스트를 중심으로 개발하는 것은 물론이요, 단지 요구사항을 테스트로 표현해서 거꾸로 문제에 접근하는 것 뿐만이 아니라 (저자의 말을 빌어) 테스트를 통해서 정원을 가꾸듯이 미시적인 관점(단위 테스트)에서 코드를 키워가는 것, 설계해 나가는 것을 의미한다.
 
이것의 절묘함은 무엇이냐면, 일단 테스트 목록을 요구사항에 맞게 정확히 뽑아내고(이것이 제일 중요한 것 같다.) 그것을 그대로 테스트 코드로 표현하고, 구현하며, 테스트가 통과하면 그때부턴 테스트 코드 작성을 중단하고 실제 모델 코드를 리팩토링하며 정리하는 방식이다. 이런 과정에서 요구사항을 파악할때는 아무것도 생각 안하고 지금 하려고 하는 것이 무엇인지만 정확히 파악하여 테스팅 코드를 작성하고, 리팩토링 할때는 아무것도 생각 안하고 리팩토링만 하면 된다. 단지 리팩토링한 결과가 테스팅을 통과하기만 하면된다.
 
여기서도 묻어나오는 절묘함. 이런 테스트 주도 개발을 실행하기 위해서는 각각의 단위 테스트 모델 코드들이 결합이 될래야 될 수가 없다. 각 단위마다 직교성이 유지되고 문제는 그 곳에서 더 이상 퍼져나가지 않으며 각각의 단위에 대해 집중할 수 있다. 나오는 결과물은 깔끔 그 자체.

또한, 테스트를 한다테스트를 가지고 있다 를 이 책에서는 구분을 하는데, 테스트 주도 개발을 실행하면서 쌓인 신뢰할 수 있는 수천가지 테스트들은 곧바로 실행 가능하며, 이 테스트들의 성공 및 실패 여부가 실제 어플리케이션의 오류와 대응되기 때문에 나중에 어떤 변경사항이 있을 경우에도 변경을 가한 후에 자동화된 테스트들을 돌려보면 곧바로 결과를 알아볼 수 있다는 점 또한 획기적이다.

실천해 보아야겠다는 생각이 강하게 드는 중인데, 역시 이 TDD도 수련이 필요한지라 익숙해지기란 쉽지 않은 것 같다. 그리고 무엇보다도
 
게임 개발에 있어서 과연 이 TDD가 얼마나 효용성을 거둘 수 있을지 의문이 든다.
 
일반 어플리케이션이라면 모르겠는데, 게임 어플리케이션 같은 경우는 실시간으로 돌아가는 데다가 네트웍, 그래픽, 사운드, 인터페이스 등등 온갖 것들이 맞물려 돌아가는 복잡한 시스템이다.
 
저자가 말하는 것은 아무리 복잡하고 큰 시스템이라 할 지라도 TDD가 가능하다는 입장이며, 이는 시간이 지나면서 어느정도 검증이 된 모양인데 일단 게임 개발용 툴과 내부적으로 쓰이는 모듈들에 대해서는 TDD로 개발이 가능할 것 같다.
 
시작할 수 있는 조그만 것부터 적용시켜 보기로 했다. 전혀 손해볼 것이 없다는 생각이 든다.
나는 집중의 힘을 잘 알고 있다.


 
코멘트 0   공감 0
코멘트작성
 
이메일주소수집거부