TDD란?
테스트 주도 개발(test-driven development)
선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식
기존방식의 프로세스
디자인(설계) => 개발 => 테스트 => 디자인(설계) => 개발 => 테스트
TDD
디자인(설계) <=> 테스트 => 개발 => 리팩토링 => 테스트
위와 같은 방식의 프로세스가 TDD의 형태이다.
라고 한다면 무조건 필요하다는 아니다.
테스트 코드를 짜는 시간도 개발 비용에 들어가게 되고 생산성 저하라는 단점이 생기게 되고 납기기한이 빡빡한 프로젝트에서 테스트를 진행하게 되면 기한을 준수하지 못하는 경우가 생기게 된다.
TDD의 목표는 작동하는 깨끗한 코드(Clean code that works)
TDD 아이디어를 주장한 켄트 백(Kent Beck)은
처음 실패한 자동화 코드가 없으면 새로운 코드 행을 작성하지 않는다. 그다음 중복을 제거한다고 정의했다.
클린코드가 되어가는 과정
1. Unit test 코드 작성
2. 테스트를 한다.
3. 테스트 불통과 = 테스트코드 수정, 통과 = 테스트코드 리팩토링
4. 리펙토링한 코드 테스트
6. 리펙토링한 코드가 통과 될때까지 코드를 수정
7. 테스트 통과시 다음 테스트 케이스 작성
클린 코드 책의 저자로 유명한 로버트 C 마틴(엉클 밥)
밥이 제시한 TDD의 세 가지의 규칙은 다음과 같다.
- 먼저 실패하는 테스트 코드를 작성한다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 테스트 코드를 작성한다.
- 현재 실패하는 테스트 코드가 통과된 코드만 실제 코드에 작성한다.
켄트 백과 밥은 세 가지 규칙을 벗어난 개발 스타일을 금기시하고 있다.
참고한 블로그
tdd란-테스트-주도-개발
선택이-아닌-필수-tdd
테스트주도개발