더북(TheBook)

1.10.1 TDD는 단위 테스트의 대체재가 아니다

TDD가 프로젝트를 성공으로 이끌거나 다른 테스트의 신뢰성을 높여 준다고 말할 수는 없다. TDD 기술에 너무 몰두하다 보면 단위 테스트에 소홀해질 수 있다. 예를 들어 좋은 이름을 짓거나 유지 보수성과 가독성을 신경 쓰는 등 더 중요한 작업을 놓칠 수 있다. 필자가 이 책을 쓰는 이유도 여기에 있다. 좋은 테스트를 작성하는 것은 TDD와는 별개의 기술이다.

TDD의 기술 자체는 매우 간단하다.

구현하고자 하는 기능에 대한 테스트가 일부러 실패하도록 테스트를 작성하거나 기능 자체를 비워 두어 테스트가 실패하도록 만든다

테스트 코드를 작성할 때, 프로덕션 코드가 문제없이 이미 작동하는 것처럼 작성한다. 따라서 테스트가 실패한다는 것은 프로덕션 코드에 버그가 있다는 의미다. 어떻게 아느냐고? 프로덕션 코드에 버그가 없다면 테스트가 통과하도록 작성했기 때문이다.
자바스크립트가 아닌 다른 언어에서는 코드가 아직 없기 때문에 테스트가 처음에는 컴파일조차 되지 않을 수 있다. 예를 들어 자바나 C# 같은 정적 타입 언어에서는 테스트를 작성할 때 해당 메서드나 클래스가 아직 정의되지 않았기 때문에 컴파일 오류가 발생할 수 있다. 이러한 상황에서 개발자는 필요한 인터페이스나 클래스를 정의하면서 설계를 구체화하게 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.