테스트 주도 개발 - 고품질 쾌속개발을 위한 TDD 실천법과 도구
채수원 지음 / 한빛미디어 / 2010년 6월
평점 :
절판


테스트 주도 개발. 이 개발방식이 무슨 의미와 효과를 줄 수 있을까요? 일반적으로 규모가 작은 프로젝트는 시나리오와 요구사항을 정의하고 설계 및 구현을 통해 결과물을 도출한 다음 테스트를 거쳐 배포하게 됩니다. 테스트 유형에 따라 배포된 다음에서야 오류가 발견되는 경우도 종종 있습니다. 또는 테스트 도중에 오류가 발견되어 구현과 테스트 과정을 반복하게 되기도 합니다. 테스트 코드를 먼저 만드는 것부터 시작하는 TDD는 "개발문서 없이도 결과물만 도출하면 되지 않느냐?" 하는 방식의 저를 포함해 일부 개발자들의 통념과 발상을 완전히 뒤집는 것이었습니다. 예외는 발생하면 그때 그때 개선하자는 식의 코딩 스타일을 근본부터 뒤흔들고 있었습니다. 다른 책에서 읽었던 내용인데 개발자들은 동일한 코드지만 에러가 발생할 만한 상황으로의 테스트를 본능적으로(!) 피해간다고 합니다. 정확하게는 반의도적으로 에러가 나는 상황은 발생을 안시켜서 문제가 없다고 넘긴다고 해야할 것 같습니다.
무엇보다 책의 구성과 필체가 마음에 들었습니다. 이론에 해당하는 내용의 설명과 실제적인 예제(물론 전체 소스라기 보다는 조각에 해당하는 예제들이 많은편이긴 하다)를 통한 따라하기 식의 친절한 구성이 돋보입니다.
저자의 필체는 굉장히 자연스럽고 읽기 편한 구어체(거의 이끌어주기식의 대화체에 가깝다)로 되어 있습니다. 따라서 쉽게 읽을 수 있었고 마치 1:1 대화식으로 개인과외를 받는 느낌이었습니다.
IT 개발자 들에게는 너무나 익숙한 용어(전문용어는 아님)를 사용한 표현으로 상황을 예로 들어 필자의 의도를 정확하게 전달하고 있습니다. 정말이지 너무나 가슴에 와닿는 예시들이었습니다. 또한 전문용어 표기시 용어(명령영어)를 표기해 의미를 정확히 전달하고 있습니다.
주제별로 목차가 구성되어 있고 각 장은 초반에는 간단한 예제로 시작하면서 점점 깊이있는 API 활용으로 넘어가도록 구성이 되어 있습니다.
TDD 경험이 없었던지라 독특한 용어가 눈에 띄었습니다. 더미->테스트 스텁->페이크 객체->테스트 더블->테스트 스파이, Mock 객체 등 생소한 용어가 많아 그 의미를 몇번씩 짚어보기도 했습니다.
다른 테스트 프레임워크나 API에 대해서 이전 버전에 대한 비교 설명으로 최신버전에 대한 거부감을 감소시킬 수 있다고 기대합니다. 예를 들면 JUnit3와 JUnit4의 비교설명을 자세히 해 놓았습니다. 프로그램의 구성 단위별로 테스트가 가능한 자동화된 테스트 프레임워크인 JUnit에 대해서는 들어보기만 했었습니다. 저는 JUnit의 사용경험이 없어서 잘 모르지만 기존의 JUnit3 사용자들에게는 비교설명을 통해 JUnit4의 습득이 용이할 것 이라 기대됩니다.
Mock의 개념과 이를 구현한 다양한 프레임워크에 대한 설명으로 각 프레임워크의 장단점을 알 수 있고, 자신에게 맞는 프레임워크의 선택시에 조언으로 활용할 수 있습니다.
개발도구 중 이클립스를 활용해 테스트 프레임워크를 적용하는 방법을 설명하고 있습니다. 이클립스 사용법을 위주로 제시하므로 추가적인 기능을 익힐 수 있다고 본다. 중간 중간의 이클립스 활용팁은 꼭 필요한 정보들이었습니다.
TDD는 부품->조립->전체의 성능테스트가 아닌 부품테스트->조립으로 결함을 감소 시키는 방식을 취하고 있습니다. TDD의 강점은 초기 시간투자로 지연이 될 수는 있지만 일단 완성되면 결함을 60% 이상 감소시킨다는 연구결과도 나와 있습니다.
이러한 TDD의 프로젝트에의 도입결과로 얻는 효과는 엄청날 것이라 생각합니다. 테스트 케이스의 작성, 리팩토링을 통한 정제된 코드로 배포 하는 것이 개발자 입장에서는 더 없이 좋은 도움말이 될 듯 합니다. Javadoc 기능으로 API 문서 작성을 해본적은 있지만 활용예제는 담을 수가 없어서 아쉬울 때가 많았습니다. 테스트 코드의 배포 방식이 단순히 소스코드에 대한 문서화 주석기능을 통한 API 문서보다는 훨씬 나을 것이라고 판단합니다. 정석코스(해당 분야별 바이블)가 있다면 이 TDD 책은 속성코스에 해당한다고 할 수 있습니다. 꼭 필요한 내용들로만 구성이 되어었습니다.
페이지 중간중간의 전문가 인터뷰를 통해 쉬어가는 느낌과 실제 필드에서 TDD가 어떻게 사용되는지 경험담과 현장의 목소리를 간접적으로 들을 수 있었고, 인터뷰에 응한 전문가만의 프로젝트를 통해 얻은 노하우를 얻을 수 있었습니다(개인적으로는 다른 한빛미디어의 책과 비교해서 가장 좋았던 부분입니다).

댓글(0) 먼댓글(0) 좋아요(3)
좋아요
북마크하기찜하기 thankstoThanksTo