
소프트웨어 개발이 점점 복잡해지면서 코드 품질과 유지보수성은 중요한 과제가 되었습니다. TDD(Test Driven Development, 테스트 주도 개발)는 이러한 과제를 해결하기 위해 고안된 개발 방법론으로, 코드 작성 전에 테스트를 먼저 작성하고 이를 통해 개발을 진행합니다.
TDD의 핵심 원칙:
1. 테스트 작성 → 코드 작성 → 리팩토링을 반복합니다.
2. 테스트는 코드의 안정성과 품질을 보장하는 필수 요소입니다.
3. 작은 단위로 빠른 피드백을 얻어 점진적으로 기능을 개발합니다.
왜 TDD가 중요한가?

TDD는 세 단계의 반복적인 사이클로 이루어집니다. 이를 통해 개발자는 항상 명확한 목표에 집중하며 작업을 진행할 수 있습니다.
먼저, 구현되지 않은 기능에 대한 테스트를 작성합니다.
테스트는 당연히 실패해야 합니다. 이는 우리가 아직 코드를 작성하지 않았다는 것을 나타냅니다.
예제:
@Test
@DisplayName("숫자 두 개를 더했을 때 결과를 반환한다")
void addTwoNumbers() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertThat(result).isEqualTo(5); // 실패 (add 메서드 미구현)
}
테스트를 통과하기 위해 필요한 최소한의 코드를 작성합니다.
이 단계에서는 기능 구현에만 집중하며, 코드의 완벽성을 추구하지 않습니다.
예제:
public class Calculator {
public int add(int a, int b) {
return a + b; // 최소한의 코드로 테스트 통과
}
}
테스트를 통과한 후, 중복된 코드나 구조적 문제를 개선합니다.
테스트가 작성되어 있으므로 리팩토링 후에도 안정성을 보장받을 수 있습니다.
리팩토링 예제:
새로운 요구사항으로 "음수를 허용하지 않는 추가 기능"이 필요할 경우:
public class Calculator {
public int add(int a, int b) {
if (a < 0 || b < 0) {
throw new IllegalArgumentException("음수는 허용되지 않습니다.");
}
return a + b;
}
}
📌 이 글은 TDD 강의를 학습한 내용을 바탕으로 재구성하였습니다. 문제가 되는 부분이 있다면 수정하겠습니다.