저는 실제로 Test Driven Development(TDD, 테스트 주도 개발)를 적용해 개발해 본 적이 없어서, 제대로 이해하고 있지 못합니다. 하지만 책이나 Web의 자료를 보고 생각해 본 바로는, 이런 개발 방식이 과연 합리적인지 의문입니다. 그런데 어쩌면 제가 잘 모르기 때문에 생긴 오해일 수도 있겠습니다.

Test Driven Development에서는 test를 먼저 만들고 그것에 맞춰 실제 구현을 작성해야 한다고 합니다. 저도 구현보다 요구 사항에 초점을 맞춰서 만드는 것은 옳다고 생각합니다. 하지만 그렇다면 test를 먼저 작성할 게 아니라, 실제 구현을 사용하는 응용 program의 code를 먼저 작성해야 합니다. 다시 말해, 저는 TDD의 Test First Programming에 반대합니다. Test를 먼저 만들고, 그것에 의해 설계가 이루어질 때에 좋은 설계가 나올 것이라는 기대는 지나치게 이상적인 것 같습니다.

Test는 구현이 요구 사항의 다양한 조건을 처리할 수 있는지를 확인하는 용도여야 하며, 그게 설계를 주도해서는 안 됩니다. Test는 실제 응용 program의 상황과 다르기 때문에, 실제 상황에 맞는 설계를 하게 도와 주지 못합니다. 그보다는 실제 응용 program에서 code를 사용해 가면서 feedback을 얻고 구조를 변경해 최종적인 design이 나올 때, 가장 실용적인 design이 나옵니다. 실제적인 요구 사항과 주변 조건을 고려한 설계만큼 좋은 설계는 없습니다.

더 보기...

2007/10/14 02:53 2007/10/14 02:53

트랙백 주소 :: http://www.easyisright.net/trackback/397

댓글을 달아 주세요

  1. jjm 2007/10/14 03:44  댓글주소  수정/삭제  댓글쓰기

    이것또한 개선을 해본다면.
    인터페이스와 구현을 하는 개발자
    그리고 개별 단위 를 코드 테스트로써 검증하는 또한명의
    개발자로 분리되어 일한다면 어떨까 싶어요.

    이런부분을 파악해서 인력구성을 하는 프로그램팀장이 있고
    그런 프로그램팀장을 신뢰해주는 PM이 있다면 더욱좋겠네요.

    물론 개발을 위한 코드작성 최종적으론 결과에
    좋은 영향을 끼쳤다는걸 입증할만한 자료및 근거제시가
    필요하겠죵..

    • 조순현 2007/10/18 19:29  댓글주소  수정/삭제

      그렇게 해도 좋을 것 같아. 자기가 놓치는 부분을 다른 사람은 잘 볼 때가 많으니까.

  2. 벼리 2007/10/15 09:11  댓글주소  수정/삭제  댓글쓰기

    TDD는 나도 책이나 웹을 통해서 보고 있고, 크루즈컨트롤 설치하면서 좀 더 봤지만.. 아직까지는 잘 땡기지 않음.
    개인적으로 느낀 TDD의 목적은 오류가 없는 코드를 만드는데 더 집중하는거 같은데~ 게임 코드를 오류의 문제보다는 얼마나 수정이 용이하냐가 더 중요한데, 이것은 TDD로 해결할 성질은 아니라고 생각함.

    • 조순현 2007/10/18 19:35  댓글주소  수정/삭제

      내가 알기론 TDD의 가장 큰 목적은 설계에 있다고 알고 있어. 얼마나 수정이 용이하냐는 결국 설계의 문제고, 그렇다면 TDD도 관련이 있는 거 같아.