TDD(Test-Driven Development)란?
테스트 코드를 먼저 만들고, 실제 프로덕션 코드를 나중에 만드는 개발 방법.
기존의 개발 프로세스
설계 -> 개발 -> 테스트
TDD 프로세스
테스트 코드를 먼저 작성
TDD 사이클
Red: 실패하는 테스트를 구현한다.
Green: 테스트가 성공하도록 프로덕션 코드를 구현한다.
blue: 프로덕션 코드와 테스트 코드를 리팩토링한다.
TDD는 어떤 상황에서 해야할까
1. 처음해보는 프로그램 주제
나에 대한 불확실성이 높은 경우
고객의 요구조건이 바뀔 수 있는 프로젝트
외부적인 불확실성이 높은 경우
개발하는 중에 코드를 많이 바꿔야 된다고 생각하는 경우
내가 개발하고 나서 이 코드를 누가 유지보수할지 모르는 경우
외부적인 불확실성이 즉, 불확실성이 높을 때 TDD를 하면 된다.
TDD장점
보다 튼튼한 객체 지향적인 코드 생산
재설계 시간의 단축
디버깅 시간의 단축
테스트 문서의 대체 가능
추가 구현의 용이함
TDD 단점
생산성의 저하
TDD 방식의 개발 시간은 일반적인 개발 방식에 비해 대략 10~30% 정도로 늘어남.