테스트 주도 개발

Posted 2006. 8. 30. 19:11
The case for static types라는 IBM developers@work의 기사를 읽다가 괜찮은 아이디어를 얻었다.

Extreme Programming에서는 코드 작성 이전에 테스트 케이스를 만드는 게 좋다고 권고하는데, 자바처럼 StaticType Check하는 언어의 경우 테스트를 먼저 만들어도 컴파일해 볼 수 없다는 문제가 있다. 최소한 메쏘드의 인자와 리턴타입을 알 수 있는 스텁(stub) 클래스는 존재해야만 컴파일해 볼 수 있다.

하지만 스텁 클래스를 만드는 것 자체가 상당한 디자인을 요한다. 특히 자바 같은 경우 클래스 인터페이스를 만드는 게 코딩의50% 이상이라고 말해도 과언이 아니다. 테스트 케이스 작성을 먼저하는 이유는 인터페이스를 고정하기 전에 클래스의 유스케이스를먼저 보겠다는 뜻인데, 이에 맞춰서 스텁을 제공하는 것은 고역인 셈이다.

이에 대한 대안으로 필자의 제안처럼 테스트 도구가 자동으로 인터페이스(스텁)를 만들어주는 방법이 있다. NextGen에 스텁 생성(Stub-generating) 모드라는 걸 작업하고 있다는데, 이런 종류의 프로젝트를 시작해 보는 것도 괜찮을듯 싶다.