2009년 08월 13일 |
개인 프로젝트에 유닛 테스트를 붙여봤습니다. 프레임웍은 Google Test를 사용했습니다. 진작에 써보고 싶었었는데 조금 늦은 감이 없지 않지만 이제서라도 해봤다는게 의의랄까요.
유닛 테스트라는 것에 대해서 처음 알게 되었을때는 프로젝트의 오류를 다 잡아주는 무언가 엄청나게 거창한 테스트 프레임웍을 생각했었습니다만, 실상은? 이름 그대로 작은 단위의 테스트를 위한 것이라는 사실을 알고 조금 실망을 하기도 했었습니다.
마땅히 붙여서 테스트 해볼만한 곳이 없어서 최근 개인적으로 작업하는 프로젝트에 붙여서 간단하게 테스트를 해봤습니다. 뭐랄까 역시나 첫 느낌은
보통 코드를 작성 할때 어느정도의 예외처리는 신경을 쓰고 작업하게 되고, 간단하게 테스트 코드를 작성해서 테스트 해 본 후에 본격적으로 해당 코드를 사용하게 되는데, 굳이 또 시간과 노력을 들여서 이런 유닛 테스트를 사용해야하나 하는 생각이 들더군요.
리팩토링 책을 볼 때마다 느끼는 것이, 책을 보면서 고개를 끄덕이면서 수긍을 하고 감탄을 하면서도 막상 현재 작업중인 프로젝트나 리팩토링이 필요한 프로젝트의 소스를 훑어보면 리팩토링이 정말 가능은 한것인가? 리팩토링이 가능한 소스는 소설속에서나 존재하는 것은 아닌가? 하는 생각이 떠오르고는 합니다. 물론 제 실력이 부족한 것도 한 몫을 하겠지만, 실제로 엉망인 코드를 보면 리팩토링은 커녕 완전히 새로 작성해도 될지 안될지 모르는 경우가 허다하다는 것이죠.
그래서 내린 결론은, 리팩토링 책은 사실은
유닛 테스트도 마찮가지 인 것 같습니다. 1+1=2 라는 것은 누구나 다 알고 있습니다. 알면서도 테스트 코드를 작성하면서 그것을 한번 더 인지하고 코딩을 하는 습관 자체가 좋은 코드를 생산해 낼 수 있게 하는 것이 아닌가 합니다. 사실 프로그래밍이라는게 1+1=3 이 되는 경우가 있지 않습니까? 그것도 자주.. 아주 많이 말이죠.
뭐 덕분에 요즘은 재미있게 코딩하는 것 같습니다.
마지막으로 리팩토링 이야기 한번 더 하자면, 리팩토링이 가능한 코드는 사실은 잘 짠 코드입니다(..)
유닛 테스트라는 것에 대해서 처음 알게 되었을때는 프로젝트의 오류를 다 잡아주는 무언가 엄청나게 거창한 테스트 프레임웍을 생각했었습니다만, 실상은? 이름 그대로 작은 단위의 테스트를 위한 것이라는 사실을 알고 조금 실망을 하기도 했었습니다.
마땅히 붙여서 테스트 해볼만한 곳이 없어서 최근 개인적으로 작업하는 프로젝트에 붙여서 간단하게 테스트를 해봤습니다. 뭐랄까 역시나 첫 느낌은
1+1=2 라는 사실을 다시한번 확인한다라는 느낌이 강했습니다. 허무하죠?
보통 코드를 작성 할때 어느정도의 예외처리는 신경을 쓰고 작업하게 되고, 간단하게 테스트 코드를 작성해서 테스트 해 본 후에 본격적으로 해당 코드를 사용하게 되는데, 굳이 또 시간과 노력을 들여서 이런 유닛 테스트를 사용해야하나 하는 생각이 들더군요.
리팩토링 책을 볼 때마다 느끼는 것이, 책을 보면서 고개를 끄덕이면서 수긍을 하고 감탄을 하면서도 막상 현재 작업중인 프로젝트나 리팩토링이 필요한 프로젝트의 소스를 훑어보면 리팩토링이 정말 가능은 한것인가? 리팩토링이 가능한 소스는 소설속에서나 존재하는 것은 아닌가? 하는 생각이 떠오르고는 합니다. 물론 제 실력이 부족한 것도 한 몫을 하겠지만, 실제로 엉망인 코드를 보면 리팩토링은 커녕 완전히 새로 작성해도 될지 안될지 모르는 경우가 허다하다는 것이죠.
그래서 내린 결론은, 리팩토링 책은 사실은
이 책보고 기존 코드를 리팩토링을 하라는 것이 아니고 처음부터 삽질하지 말고 코딩을 잘 하라.라는 교훈을 담고 있다라는 것 입니다.
유닛 테스트도 마찮가지 인 것 같습니다. 1+1=2 라는 것은 누구나 다 알고 있습니다. 알면서도 테스트 코드를 작성하면서 그것을 한번 더 인지하고 코딩을 하는 습관 자체가 좋은 코드를 생산해 낼 수 있게 하는 것이 아닌가 합니다. 사실 프로그래밍이라는게 1+1=3 이 되는 경우가 있지 않습니까? 그것도 자주.. 아주 많이 말이죠.
뭐 덕분에 요즘은 재미있게 코딩하는 것 같습니다.
마지막으로 리팩토링 이야기 한번 더 하자면, 리팩토링이 가능한 코드는 사실은 잘 짠 코드입니다(..)








