TDD (Test-Driven Development), 즉 테스트 주도 개발은 소프트웨어 개발 방식 중 하나로, 테스트를 먼저 작성하고 나서 코드를 구현하는 개발 프로세스임. TDD는 개발자가 작성하는 기능의 요구사항과 기대 결과를 사전에 정의하고, 이를 검증할 테스트를 먼저 작성함으로써 코드의 신뢰성과 유지보수성을 높이는 데 도움을 줌.
TDD는 코드 품질을 높이고 유지보수를 용이하게 하며, 코드가 의도한 대로 작동하는지에 대한 확신을 줌. TDD의 주요 장점은 다음과 같음:
TDD는 Red-Green-Refactor라는 세 단계로 진행되며, 각 단계에서 테스트를 먼저 작성하고 코드를 구현함.
첫 번째 단계는 실패하는 테스트 작성임. 여기서는 요구사항을 기반으로 테스트를 먼저 작성하고, 이 테스트가 실패하는지 확인함. 이 과정에서 구현할 기능이 명확해지며, 구현해야 하는 코드의 목표와 예상 결과를 정의할 수 있음.
function add(a, b) {
return a + b;
}
test("adds 1 + 2 to equal 3", () => {
expect(add(1, 2)).toBe(3); // 실패하는 테스트 (Red)
});
두 번째 단계에서는 테스트를 통과하게 하기 위해 가장 간단한 코드를 작성함. 이 단계에서는 오로지 테스트를 통과하는 데 집중하며, 코드 최적화나 리팩토링은 하지 않음.
function add(a, b) {
return a + b;
}
// 테스트 통과 확인
test("adds 1 + 2 to equal 3", () => {
expect(add(1, 2)).toBe(3); // 성공 (Green)
});
세 번째 단계에서는 테스트가 통과하는 상태를 유지하면서 코드의 중복을 제거하거나 구조를 개선함. 이 단계에서 리팩토링을 통해 코드 가독성, 유지보수성, 효율성을 높임.
function add(a, b) {
return a + b;
}
test("adds 1 + 2 to equal 3", () => {
expect(add(1, 2)).toBe(3);
});