테스트(test) 주도적인(driven) 개발(developkment)
'테스트가 개발을 이끌어나간다' 입니다.
일반 개발방식
1단계 : 계획 및 설계
2단계 : 코드 개발
3단계 : 테스트
4단계 : 배포
TDD 개발방식
일반개발방식과 마찬가지로 처음과 끝은(1단계와 4단계) 똑같지만 실패테스트를 작성하고 테스트 코드를 성공하기 위한 코드를 작성한다는 것입니다.
Red 단계에서는 실패하는 테스트 코드를 먼저 작성합니다.
Green 단계에서는 테스트 코드를 성공시키기 위한 실제 코드를 작성합니다. Blue 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행합니다.
좀더 세분화한 도표를 본다면
실패될법한 코드 작성 -> 테스트 -> 실패시 코드수정 or 성공시 리팩토링 진행 -> 실패코드인경우 다시 테스트 or 성공한 코드일경우 중복코드제거 및 일반화 코드생성
TDD는 코드의 재사용성을 보장하게 만들기에 TDD를 통한 소프트웨어 개발 시 기능 별로 철처하게 모듈화가 이루어집니다. 기능별로 모듈화가 되기 때문에 종속성과 의존성이 낮은 모듈로 조합된 소프트웨어 개발이 가능하고 필요에 따라 모듈을 추가하거나 제거해도 소프트웨어 전체 구조에 영향을 주지 않습니다.
추가 기능을 개발한다면 해당 기능이 기존 코드들에 어떠한 영향을 미칠지 모르기 때문에 모든 기능들을 처음부터 테스트 해야 될 것 같지만 TDD는 자동화된 유닛 테스팅을 전재하기에 테스트 기간을 단축시킬 수 있습니다.
TDD를 적용해야할 대표적인 상황들
처음해보는 프로젝트의 주제
고객의 요구조건이 얼마든지 바뀔 수 있는 프로젝트
개발하는 사람과 유지보수하는 사람이 서로 다른 사람일 때
즉, 불확실성이 높을 때 TDD를 진행하면 됩니다
참고: https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/