Search

Test Driven Development

TDD

TDD(Test-Driven Development; 테스트 주도 개발) 프로세스는 실제 시스템 구현 전, 미리 테스트 코드를 개발하여 모든 테스트를 통과할 수 있도록 리팩토링 하는 절차를 뜻한다.
시스템 설계 및 구현을 완료한 후 테스트 코드를 작성하여 애플리케이션 테스트를 진행하는 기존의 개발 프로세스와는 달리, 테스트 코드를 먼저 개발하며 시스템 디자인 수정 및 구현을 진행하여 효율성을 증가시키는 개발 방법론이다.
기존 개발 프로세스
TDD 프로세스
Agile 방법론이 점차 일반적인 개발 방법론으로 거듭나며, 협업에서의 기존 개발 프로세스의 한계가 나타나기 시작하였다. 전체적인 개발 비용을 단축하고, 협업에서의 효율을 극대화 시키기 위해 TDD 방법론이 대두되었다.
TDD가 대표적으로 적용될 수 있는 상황은 다음과 같다.
검증되지 않고, 예측이 어려운 작업 결과물
고객의 요구조건이 언제든 바뀔 수 있는 프로젝트
분리되어있는 개발 인력과 유지보수 인력
작업의 불확실성이 높을 때 TDD 방법론을 사용하는것이 좋다.
결과물의 예측이 간단한 단순한 애플리케이션, 이미 완성되어있는 시스템의 최적화, 또는 테스트가 불가능한 하드웨어적/네트워크 환경 이슈가 주된 시스템의 개선에선 TDD 방법론이 오히려 비효율적일 수 있다. TDD 방법론의 사용 이유와 원칙의 목적을 명확히 하여 비효율 개선을 우선하는것이 마땅하다.

TDD의 목표

TDD의 궁극적인 목표는 리팩토링을 통해 깔끔한 코드를 작성하는 것이다. 리팩토링 단게를 거치며 복잡하거나 중복되는 코드들은 삭제하여 최대한 간결하고 모듈화 된 코드를 작성하는것이 TDD의 목표이다.

TDD의 프로세스

1.
실패하는 작은 단위 테스트를 작성한다.
2.
테스트를 최대한 빨리 통과하기 위해 프로덕션 코드를 작성한다. 정답이 아닌 Mockup을 작성할 수도 있다.
3.
테스트를 통과하였다면, 그 다음의 테스트코드를 작성한다.
4.
새로운 테스트를 통과하기 위해 프로덕션 코드를 추가 또는 수정한다.
5.
1~4 단계를 반복하여 실패/성공의 모든 테스트 케이스를 작성한다.
6.
개발된 코드들에 대해 모든 중복을 제거하며 리팩토링 한다.

TDD 접근 방법

Mockup
삼각측량법