사실 저는 테스트를 별로 좋아하지 않습니다.
테스터 분들이 보시면 기분나빠하실지도 모르지만, 개발보다 지루한 작업이기 때문이죠.
하지만 테스트는 언젠가 해야하고, 프로그램의 품질에 지대한 영향을 끼칩니다.
프로그래머는 모든 상황을 생각할 수 없습니다. 현재의 코드가 미칠 여파를 모두 생각해내는건 사실상 불가능하죠.
프로그래머의 논리적 빈틈은 테스트를 통해서 해결해야합니다.
그런 코드의 빈틈을 테스터에게만 맡길 수 있을까요?
그 프로그램을 작성한 사람보다 빈틈을 더 잘 찾을 수 있을까요?
프로그래머가 하는 테스트가 꼼꼼하다면 프로그램이 공개 되고 나서 발생할 문제를 상당수 방지 하거나 해결 할 수 있습니다.
테스트 주도 개발은 기본적으로 리팩토링을 기반으로 이루어집니다.
테스트를 통해 개발을 하며, 리팩토링을 통해 같은 기능을 하지만 좀 더 좋은 코드를 자연스레 갖춰나갈 수 있게 됩니다.
개발자 선에서 이루어지는 테스트 도중 더 좋은 아이디어를 떠올릴 수도 있고, 빈틈 하나 하나를 채워가며 높이는 완성도는 프로그램의 가치를 높여줄 것이라고 확신합니다.