Sep 062010
 

테스트 코드도 계속 관리해야 하는 코드다. 릴리즈 빌드에 포함이 안 된다고 해서 악취가 진동하게 놔뒀다가는 하나만 고쳐도 엄청나게 많은 테스트 코드가 깨지는 등 감당을 못하게 된다. 좋자고 하는 건데, 테스트 코드가 오히려 병목이 될 수도 있다. ‘Invoice를 테스트하려니깐 Customer를 만들어야 하고 이걸 만들려니 Address가 필요하고 또 이걸 만들려니 City가 필요하다. 게다가 지금 테스트하고 싶은 코드는 Customer와 관계가 없다. 어휴~ 테스트하려는 객체를 생성하려다 진이 다 빠지겠다.’ 이런 문제를 한 사람만 겪은 것도 아니고 또한 해결책을 찾지 못한 것도 아니다. 그러면? 당연히 패턴이 나올 수 있다.

이 책은 프로젝트에 테스트 코드가 있는 프로그래머에게 제일 도움이 될 것 같다. 아니면 나처럼 아직 프로젝트에 테스트 코드가 없지만 ‘꼭’ 넣을 예정이고 다른 사람이 겪은 시행착오를 줄이고 싶은 프로그래머에게도 도움이 된다. 레거시 코드에 유닛 테스트를 넣는 방법은 설명하지 않는데, 그런 경우엔 Working Effectively With Legacy Code 책에서 많은 도움을 얻을 수 있다. 책에서도 무지 추천함.

이 책이 테스트 코드에 쓰는 패턴 용어를 확실하게 교통정리를 한다는 목표가 있기 때문인가? 저자가 이름을 명확히 정의하는 게 마음에 든다. 완전 용어덕후. 이름을 왜 이렇게 지었는지도 설명하고 mock, fake, stub, dummy와 같이 막 혼용해서 쓰이고 있는 용어도 교통정리를 확실하게 해준다. 나도 저런 용어를 보면 정말 헷갈렸는데, 나만 그런 게 아니라고 따뜻한 형님처럼 얘기하는 센스도 잊지 않았다.

지금은 테스트 코드를 넣기 전. 한창 진행하고 있을 때, 이 책을 다시 본다면 느낌이 많이 다르겠지?

 

by-nc-sa
Oct 232009
 

처음 읽어보는 The Pragmatic Programmers 시리즈. 두께도 얇고 관심이 있는 유닛 테스트에 관련된 책이라 읽었는데, 만족스럽다. 달리 실용주의 프로그래머를 들먹이는 게 아니구나. 딱 필요한 내용으로 바로 유닛 테스트를 해보면서 어떤 건지 경험하게 해준다. C++을 주로 사용하는데, 쉽게 쓰였고 문법이 비슷해서인지 예제 코드를 읽는데 어려움은 없었다.

유닛 테스트를 시작하는 단계인지라 어떻게 테스트하면 될지. 어떤 것을 테스트하면 될지. 막막하게 느껴지는데, 가이드 라인은 제공해줘서 많은 도움이 됐다. 딱~ 기억하기 좋은 줄임말을 사용했다.

Continue reading »

by-nc-sa
Feb 242009
 

TDD(Test-Driven Development, 테스트 주도 개발)를 처음 접했을 때, 개발 방법이 충격적이었다. 테스트를 먼저 추가하면서 시작되는 TDD의 리듬을 타면 테스트가 바탕이 된 매우 견고한 코드로 갈 수 있을 것 같다. 하지만 낯선 개발 방법에 적용하는 시간과 노력, 그리고 그에 따른 시행착오 때문에 실무에 적용하기는 무척 망설여진다. 하지만 단단한 코드를 짜는데 도움을 주는 Unit Test만큼은 꼭 해야겠다고 생각했다.

만약 이제 시작하는 프로젝트면 작성하는 코드를 다 Unit Test를 하겠건만 이렇게 절묘한 타이밍으로 맞아떨어지는 경우가 거의 없다는 게 문제다. 이미 작성된 엄청난 양의 레거시 코드(Legacy code)를 보며 Unit Test를 하고는 싶은데, 어떻게 해야 할지 감이 안 온다. 뭐~ 속 편하게 다음 프로젝트를 할 때는 시작할 때부터 꼭 Unit Test를 해야지하고 생각하고 미뤄버릴 수도 있다. 아니면 기초 라이브러리부터 Unit Test를 하는 방법도 있다. 모든걸 다 테스트해버리겠어! 뭐~ 하다가 지쳐버리겠지만.

Continue reading »

by-nc-sa