내가 TDD를 배우기 전에 개발했던 방식은 다음과 같았다.
위 같은 과정으로 코드를 작성하다보니, 오류가 발생하면 찾는데도 오래 걸렸으며 완성된 코드 조차 깔끔(클린)하지 못했다. 구현 시간이 촉박하다는 핑계로 테스트를 소홀히 하다보니 다양한 케이스에 대한 예외처리도 많이 놓쳤던 것 같다. 무엇보다도 시간이 부족하여 테스트를 작성하지 않았다고 했지만, 테스트를 하지 않아도 개발 시간이 꽤 오래 걸렸다.
요즘 인기를 끌고있는 개발 기법 TDD를 나 역시 이게 뭔지 들었던 기억이 있다.
‘테스트를 먼저 작성하고 구현’ 이라고 해서 독특하다고 생각했는데, 구현 코드가 없는데 어떻게 테스트를 할 수 있는거지? 라는 질문이 나의 호기심을 자극했고, 이것이 내가 TDD를 배우게 된 계기가 되었다.
TDD는 테스트부터 시작한다. 구현을 먼저하고 나중에 테스트 하는 것이 아니라, 먼저 테스트를 하고 그 다음에 구현한다. 여기서 테스트를 먼저 한다는 것은 기능이 올바르게 동작하는지 검증하는 테스트 코드를 작성한다는 것을 의미한다. 기능을 검증하는 테스트 코드를 먼저 작성하고 테스트를 통과하기 위해 개발을 진행한다.