TDD란?
TDD는 Test Driven Development의 약자입니다.
테스트 주도 개발 즉, 테스트를 통한 기능의 구현이라 표현 할 수 있습니다.
우리가 이번 시간에 학습하게될 테크닉은 Unit Test(단위테스트) 입니다.
Unit Test란?
- 특정 조건에서 함수(Unit)가 어떻게 작동해야 하는지 정의하고, 그러한 정의대로 함수가 잘 작동하는지 확인하는 방법론입니다.
우리가 사용할 TDD 라이브러리는 Jasmine 입니다 (https://jasmine.github.io/)
TDD 의 단계
TDD 에서는 코딩을 할때 기능을 바로 개발하지 않고 TDD 라는 말 그대로 테스트 코드를 먼저 작성합니다. 이때 테스트 코드는 다음과 같은 단계를 먼저 거치게 됩니다.
- 적색 단계 : 성공하기 위해 테스트에 실패하는 단계
- 녹색 단계 : 테스트에 성공한 단계
- 리팩터 단계 : 테스트에 성공한 코드를 기반으로 코드의 품질을 높이는 단계 (refactoring)

TDD는 이 세 가지 단계의 끊임없는 반복이라고 할 수 있습니다.
TDD 실습
- 환경 구성은 간단하게 스탠드얼론 방식을 이용합니다. (https://github.com/jasmine/jasmine/releases )
- 간단한 함수를 테스트 해봅니다.
- 객체지향적 코드를 구현하여 TDD 해봅니다.
결론
TDD의 장점
- 자바스크립트는 인터프리터 언어. 컴파일러의 역할을 테스트를 통해 대신 수행하여 기능의 구동을 보장합니다. 이는 곧 코드를 안정적이고 견고하게 만들어 줍니다.
- 구현해야 하는 기능에 대한 높은 분석을 요구하기 때문에 서비스에 대한 이해도가 상승하고 품질을 우선하는 사고를 하게됩니다.
TDD를 사용할 때 주의해야할 점
- 테스트 코드를 따로 작성해야 하기 때문에 시간이 더 들어가고 이는 곧 업무에 대한 부담으로 다가옵니다. 때문에 프로젝트가 급박하다면 TDD 를 사용하지 않는 편이 좋습니다. 프로젝트의 성격에 따라 신중히 판단해야합니다.
- TDD 가 모든 예외 상황을 해결해주지는 않습니다. 결국 테스트 코드를 작성하는 사람이 고려하지 않은 상황은 테스트 코드도 놓칠 수 있기 때문에 테스트 코드를 작성했다고 해서 방심할 수는 없습니다. 테스트 코드는 견고하고 안정적인 코드를 지향하는 것이지 결코 완벽하진 않습니다.