TDD
🧪 TDD(Test Driven Development)란?
정의
TDD는 Test Driven Development(테스트 주도 개발)의 약자다.
실제 기능 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 개발 방식으로, 테스트가 코드의 설계를 이끌어 가는 것이 핵심이다.
🔄 TDD의 3단계 사이클 (Red → Green → Refactor)
- Red: 실패하는 테스트 작성
- 아직 기능이 없기 때문에 테스트는 실패한다.
- Green: 테스트를 통과하는 최소한의 코드 작성
- 테스트를 통과할 수 있도록 최소한의 기능만 구현한다.
- 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);
}
댓글남기기