🧪 TDD(Test Driven Development)란?

정의

TDD는 Test Driven Development(테스트 주도 개발)의 약자다.
실제 기능 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 개발 방식으로, 테스트가 코드의 설계를 이끌어 가는 것이 핵심이다.


🔄 TDD의 3단계 사이클 (Red → Green → Refactor)

  1. Red: 실패하는 테스트 작성
    • 아직 기능이 없기 때문에 테스트는 실패한다.
  2. Green: 테스트를 통과하는 최소한의 코드 작성
    • 테스트를 통과할 수 있도록 최소한의 기능만 구현한다.
  3. Refactor: 중복 제거 및 코드 개선
    • 테스트가 통과하는 상태를 유지하면서 코드를 다듬는다.

🧩 TDD의 장점

  • 검증된 코드: 테스트를 통해 사전에 검증할 수 있다.
  • 명확한 요구사항 정의: 테스트가 곧 요구사항 문서 역할을 한다.
  • 리팩토링 용이: 테스트가 있어도 안전하게 개선할 수 있다.
  • 문서 대체: 테스트 자체가 사용 예시가 된다.

🆚 TDD와 BDD 비교

항목 TDD BDD
중심 기능 중심 행동 중심
테스트 문법 Assert 중심 (AAA) Given-When-Then
목적 개발자 중심 기획/QA 포함
가독성 보통 더 높음
대표 도구 JUnit, TestNG 등 Cucumber, JBehave 등

📚 대표 도구

  • Java: JUnit, AssertJ, Mockito
  • JavaScript: Jest, Mocha, Cypress
  • Python: unittest, pytest
  • C#: NUnit, xUnit

🧪 예시 (Java + JUnit)

@Test
public void testAdd() {
    Calculator calc = new Calculator();
    int result = calc.add(2, 3);
    assertEquals(5, result);
}

연결문서

댓글남기기