TDD (Test Driven Development)
TDD
- Test Driven Development의 약자, 영어 뜻대로
테스트 주도 개발
을 의미한다.
반복 테스트
를 이용한 소프트웨어 개발 방법론이다.
- 작은 단위의 테스트들을 작성하고, 이 테스트들을 통과하는 코드를 추가하는 과정을 반복해 짧은 개발 주기를 반복해 소프트웨어를 개발한다.
- 실제 코드를 작성하고, 코드가 잘 동작하는지 검증하기 위해 테스트 코드를 작성하는 것이 아니라 그 반대로 개발을 진행한다.
- TDD를 사용해 구현할 기능에 대해 반복적으로 테스트하고, 코드를 수정하여 고품질의 소프트웨어를 만들 수 있다.
TDD 개발 방법
- 단위 테스트를 먼저 작성한다.
- 테스트를 통과하기 위해 코드를 작성한다.
- 다음 테스트 코드를 작성한다.
- 테스트를 통과하기 위해 코드를 작성하거나 수정한다.
- 1~4 단계를 반복하며 모든 실패, 성공 테스트 케이스를 작성한다.
- 중복 코드를 제거하고 리팩토링한다.
TDD 장점
1️⃣ 튼튼한 객체지향 코드
- 소프트웨어 개발 시 기능 별로 철저하게 모듈화한다.
- 이를 통해 종속성과 의존성이 낮은 모듈들로 조합된 소프트웨어 개발을 가능하게 해준다.
- 모듈을 추가하거나 제거하더라도 소프트웨어의 전체 구조에 영향을 미치지 않게 한다.
2️⃣ 재설계 시간 단축
- 테스트 코드를 먼저 작성함으로써 개발자의 작업 의도를 분명히하고 개발을 시작한다.
- 테스트 케이스들을 작성하면서 다양한 예외사항들을 생각할 수 있다.
3️⃣ 디버깅 시간 단축
- 자동화된 유닛 테스트를 전제로 갖기 때문에 버그가 발생하더라도 버그를 특정 짓고 손쉽게 찾아 디버깅할 수 있다.
4️⃣ 테스트 문서 대체 가능
- 테스트 과정을 자동화하고 정확한 테스트 근거를 산출할 수 있다.
5️⃣ 추가 구현의 용이함
- 배포가 완료된 소프트웨어에 기능을 추가하여 업데이트 배포할 때 우려되는 점은 추가할 기능이 기존의 기능에 어떤 영향을 끼칠지 모른다는 점이다.
- TDD는 자동화된 유닛 테스팅을 전제로 하므로 추가할 기능, 기존의 기능들의 테스트 기간을 단축시킨다.
TDD 단점
생산성 저하
- TDD의 가장 큰 단점은 생산성이 떨어진다는 것이다.
- 처음부터 테스트 코드를 작성해야 하고, 테스트를 거쳐 코드를 수정해야 하기 때문에 일반적인 개발 방식보다 생산성이 떨어진다.
참고