Test Driven Development의 약자로 선 테스트 후 개발 방식의 프로그래밍 방법이다.
과거 개발 방식 초기에는 Test First Development (테스트 우선 개발)로 불렸었다.
TDD의 개발 주기가 존재하는데 Red, Green, Yellow 단계로 나뉜다.
@Test
public void testSum(){
Calculator calculator = new Calculator();
assertEquals(5, calculator.sum(2, 3));
}
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
요구사항 분석 → 설계 → 개발 → 테스트 → 배포의 형태로 개발 주기를 갖는다.
일반적인 개발 방식의 단점은 아래와 같이 가지고 있다.
❗ 재사용 및 관리가 어려워 유지 보수를 어렵게 만든다.
TDD만의 반복적인 단계가 진행되며, 자연스럽게 코드의 버그가 줄고, 소스코드는 간결해진다.
명확한 요구사항을 기반으로 코드를 작성
: 테스트가 곧 코드의 명세서 역할을 할 수 있다.
: 테스트는 유연성, 유지보수성, 재사용성을 제공
추가 구현의 용이함
: 자동화된 유닛 테스팅을 전제하므로 테스트 기간을 획기적으로 단축
생산성의 저하
: 처음부터 2개의 코드를 짜야하고, 중간중간 테스트를 하며 고쳐나가야 하기 때문
테스트 관리의 복잡성
: 프로젝트가 커질수록 테스트 코드도 많아지기에 유지 보수하는데에도 추가적인 노력 필요
자바의 단위 테스팅 프레임 워크로, JUnit만 존재하는 것은 아니다.
다른 언어들도 프레임워크가 존재하며 , 보통 이름을 xUnit이라 지칭한다.