좋은 글을 발견하면 깜찍하게 인용,정리하고 폼나는 자기 의견까지 버무려서 글을 쓰는데 탁월한, 위자드닷컴 2008추천블로거 영회가 단골메뉴 단위테스트에 대한 글을 올렸다. 마침 애자일 스프링 책의 테스트관련 챕터를 쓰고 있어서 관심이 더 가서 글을 읽어봤다.

결론은 이렇다.

읽고 보니 그렇다. 테스트를 하지 않고 머리속으로 테스트 하기 좋은 코드를 작성하거나, 작성한 뒤에 테스트를 하면서 수정하기 보다는 당연히 먼저 테스트를 할 때 테스트 하기 좋은 코드를 작성하기가 수월할 것이다. :)

정답이다.

개발자가  작성하는 테스트코드의 함정은 이미 만들면서 설계해놓고, 이상적으로 동작할 것이라고 가정한 방식을 따라 교묘하게 안전하기만 한 테스트를 만들기 쉽다는 것이다. 전문 테스팅 훈련을 받거나, 자신의 코드에 대해서조차 까탈스러운 개발자가 아니라면 이미 머리로 설계해가면서 다 만든 코드에 대해서 꼼꼼한 테스트코드를 작성하기 힘들다. 게다가 테스트를 나중에 작성하는 건 정말 지루하다. 또 영회가 인용한 글에 나오는 것처럼 테스트하기가 어렵거나 단위테스트가 아닌 통합/기능테스트가 막 짬뽕되어 만들어지기가 쉽다. 테스트를 먼저 작성해야 테스터블한 코드기 때문이기도 하다.

 

그럼 이런 비슷한 얘기를 지금까지 여러번 블로그에 올리면서 단위테스트 또는 TDD 또는 테스트우선방식에 대해서 강조했던 영회는 과연 그렇게 하고 있을까? 했다면 "읽고보니 그렇더라"보다는  "해보니 그렇더라"라는 글을 올리지 않았을까라고 살짝 의심이 가지만, 그간의 영회의 테스트에 대한 뜨거운 열정과 폭발적인 관심을 생각해보면… 흠?

비단 테스트우선이나 TDD가 아니라 자동화된 테스트코드 작성에 대해서도 마찬가지이다.

 

사실 좋다고 알고 있고, 좋다고 이야기하고 떠들어댈 수 있는 것과 실제로 좋기 때문에 꼭 실천하고 하는 것에는 많은 차이가 있다. 나도 TDD가 거의 대부분의 경우에 최고의 개발전략이라고 생각하고 열심히 실천하려고 하고 있지만, 어느 순간 보면 습관적으로 테스트없이 정신없이 코드를 만들고 있는 내 모습을 보고 놀랄 때가 있다. TDD만큼 많은 사람의 입에 오르내리고 인정받는 것도 없지만, 내가 관찰한 결과는 정말 극도로 사용되지 않는 기술이기도 하다.

물론 "나중에라도 JUnit테스트를 만들면 TDD 아니에요?" 하는 사람은 일단 제외하고.

TDD에 대해서 교육까지 시키고, 글도 쓰고, 인정하는 사람들 조차도 왜 실천하지 않을까? 제일 종종 듣는 답변은 "일정상 테스트 작성할 시간이 없어서.."인데, 그 역시나 "TDD가 결국엔 개발시간을 단축시켜준다"라고도 본인 입으로 얘기했던 사람들의 말이라 변명으로 들리지도 않는다.

 

좋은 걸 알면서도 실천 안하는 이유는 뭘까?

여러가지 이유가 있겠지만 나는 가장 큰 이유는 "사실은 정말 좋은 줄 알지 못해서"라고 생각한다. 사람이 말하는 것과 행동하는 것이 다른 큰 이유는 그 말이 진심이 아니거나, 마음 속에선 부정하는 부분이 있기 때문이다. 말로는 인정하지만 몸으로는 부정하는 것 아닐까?

물론 오랜 습관의 문제도 있겠고, 환경 탓을 할 수도 있고, 팀의 문화나 뭐 살인적인 개발일정 등등을 다 얘기할 수도 있겠지만, 개인적인 여유 시간에 작은 코딩을 하나 할 때도 테스트를 안만드는 것을 보면 그런 것들은 다 치사한 변명이었을 것이라는 의심만 든다. 차라리 "TDD해보니 별거 아닌 것 같다"라던가 "TDD는 실력이 아주 뛰어난 사람이 아니면 힘들다"라는 식의 답변이 더 솔직해 보인다. 그런 말을 하는 사람들은 어느 때가 되면 자신의 생각이 잘못됐음을 인정할 가능성이라도 있겠지만, 말로는 항상 좋다고 하지만 막상 현실에선 실천하지 않는 사람은 평생가도 못할지도 모른다.

 

김현국님의 회사 모토가 "개발하다 죽자"라던데, 적어도 TDD를 하려면 "TDD하다 죽자" 정도의 굳은 결심이나, "정말 테스트를 먼저 작성해야 좋은 코드를 작성할 수 있다"라는 진정한 확신과 "좋은 코드를 작성하는 개발자가 되고 싶다"는 열망이 함께 있어야 하지 않을까.

 

참, TDD하다 죽으면 안되니 "TDD하고나서 죽자"로 바꿔야겠다.

Related posts:

  1. 테스트 주도 개발 TDD 실천법과 도구 – 채수원
  2. 모든 개발자는 사실 TDD를 하고 있다
  3. 유쾌한 이슈처리 재촉 메일
  4. TDD와 TLP
  5. 오픈소스 소프트웨어에서 오픈소스 코드가 가지는 의미는?
  6. TDD 안티 패턴

Facebook comments:

to “알면서 왜 안할까? TDD”

  1. although internet websites we backlink to beneath are considerably not connected to ours, we feel they are in fact worth a go through, so possess a look

  2. we prefer to honor a lot of other web web pages on the net, even when they arent linked to us, by linking to them. Below are some webpages worth checking out

  3. The details mentioned inside the article are a number of the most beneficial obtainable

  4. Hello! This is my first visit to your blog! We are a team of volunteers and starting a new project in a
    community in the same niche. Your blog provided us useful information to work on. You have done a extraordinary job!

  5. although sites we backlink to beneath are considerably not associated to ours, we really feel they may be actually worth a go via, so have a look

  6. I need to to thank you for this wonderful read!! I certainly loved every little bit of it. I have got you book marked to look at new stuff you post…

  7. we like to honor a lot of other online websites around the internet, even when they arent linked to us, by linking to them. Below are some webpages worth checking out

  8. very couple of websites that happen to become detailed beneath, from our point of view are undoubtedly nicely really worth checking out

  9. I needed to thank you for this excellent read!! I absolutely loved every little bit of it. I’ve got you book marked to look at new stuff you post…

  10. You ought to be a part of a contest for one of the greatest blogs on the internet. I most certainly will recommend this site!

  11. very couple of web sites that happen to become in depth below, from our point of view are undoubtedly very well really worth checking out

  12. Every once in a while we pick out blogs that we read. Listed below are the newest websites that we choose

  13. Spot on with this write-up, I really believe this website needs a great deal more attention. I’ll probably be returning to see more, thanks for the info.

  14. Great info. Lucky me I recently found your site by accident (stumbleupon). I have book-marked it for later.

  15. Can I simply say what a relief to find somebody who really understands what they’re discussing over the internet. You certainly know how to bring a problem to light and make it important. A lot more people really need to check this out and understand this side of the story. I can’t believe you aren’t more popular because you surely possess the gift.

  16. we prefer to honor several other online internet sites around the internet, even though they arent linked to us, by linking to them. Under are some webpages really worth checking out

  17. usually posts some quite interesting stuff like this. If you are new to this site

  18. An impressive share! I’ve just forwarded this onto a friend who has been conducting a little homework on this. And he actually bought me breakfast simply because I discovered it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending some time to discuss this matter here on your website.

  19. cheap custom term papers http://essaywritersrpl.com/ – term paper custom pay someone to write my term paper cheap term paper writing service term paper help online

  20. Can I simply just say what a comfort to uncover an individual who genuinely knows what they are discussing on the net. You actually understand how to bring an issue to light and make it important. More people should check this out and understand this side of the story. It’s surprising you’re not more popular because you most certainly have the gift.

  21. The data talked about inside the write-up are several of the most effective accessible

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha