언제부턴가 테스트관련 서적과 refactoring 서적을 많이 읽고 있는 나 자신을 발견한다. 개인적으로 관심이 많기도 하고, 개발자로 먹고살려다 보니 반드시 필요하기때문이다.

테스트를 만드는 것과 refactoring을 하는 것은 많은 관련이 있다. refactoring을 하려면, 테스트를 해서 정상적으로 작동을 하는지에 대한 체크가 필요하다. 부지런한 사람(?)은 아마 코드를 고치고, 사용자 테스트로 직접 어플리케이션에 올려서 테스트를 한다. 반복된 행동을 하면서 짜증만 늘어가는 부지런한 사람이 되는 것이다. 겉으로 보기에는 부지런해보일지 모르지만, 속으로는 썩고 있는 성겨파탄자가 될수도 있다. 그래서, 테스트의 자동화는 매우 중요하다.

코드나 설계한 대해서 실행(Runtime)을 통해서 검증을 하는 것 만큼 확실한 방법은 없다. 나는 내가 할수 있는 한 빠르게 실행을 하려고 온갖 정성을 기울인다. 우리가 refactoring을 넘어서서 신규 코드를 작성을 할때도 가장 빠르게 실행환경을 갖출 수 있는 방법은 단위 테스트를 만드는 것이다.

이미 테스트의 중요성은 이미 여러군데에서 다루었기때문에 생략을 하고, 테스트를 잘 작성을 하려면 어떻게 해야 하는지 고려해보자.

단위 테스트를 만들다보면, 잘 안된다. 왜 잘 안될까? 코드를 테스트하기 어렵게 만들기도 하고, 테스트를 고려하지 않고, 작성을 하기때문이다. 특히 여러가지 환경이나, 책임들이 얽혀있는 경우는 더 어렵다. 그래서, 일부 선배 개발자들은 test first를 추천을 한다. 테스트가 가능한 시점부터 코드작성이 완료될 때까지 테스트가 가능한 상태를 유지하기에는 아주 좋은 방법이다. 코드추가후 테스트를 실행하는 것에 대한 interval만 조절을 잘하면, 그다지 많은 시간이 걸리지도 않는다.

실무 개발을 진행중에 테스트하면서 느끼는 어려움, 경험을 좀더 빠르게 알고, 해결방법을 찾고 싶다면 아래 책을 추천한다. 내가 겪었던 고통들을 이미 저자는 몇 가지 용어로 정의를 해서 도움이 될만한 이야기를 해준다.

Xunit Test Patterns: Refactoring Test Code

Gerard Meszaros / Addison-Wesley Professional

조금더 시야를 넓히고 싶다면, 아래 책도 같이 읽어보면 좋다.

나도 테스트를 작성하면서 내가 만든 것을 볼때 불편함을 느끼는 경우가 많지만, 더 관심을 가질 시간을 가지고, 사랑해준다면, 테스트뿐만 아니라 자신의 코드가 점차 아름다워지는 것을 느낄 수 있을 것이다.

Working Effectively With Legacy Code (Paperback)

Feathers, Michael C. / Prentice Hall

우리의 열정적인 스터디원들이 포스팅을 하고 있어서 트랙백을 걸었다. 앞으로 3-4주정도 남았는데, 서로에게 많은 도움이 되었으면 한다.
 
http://javajigi.tistory.com/86
http://blog.naver.com/django44/40043308830
Posted by ologist

블로그 이미지
ologist

공지사항

Yesterday191
Today136
Total34,708

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 받은 트랙백

글 보관함