
BDD(Behavior Driven Development)는 TDD(Test Driven Development)에서 발전된 개발 방식으로, 기술적인 단위 테스트 대신 사용자 행동과 비즈니스 로직 중심의 테스트에 초점을 맞춥니다.
BDD는 테스트 케이스(TC) 자체에 집중하여, 개발자뿐만 아니라 비기술적인 이해관계자도 이해할 수 있는 시나리오 기반 테스트를 작성합니다. 이를 통해 요구사항을 명확히 하고, 팀 간 협업을 강화하는 것이 BDD의 핵심 목표입니다.
BDD에서는 Given/When/Then 문법을 사용하여 시나리오를 정의합니다. 이 문법은 테스트를 구조화하고, 명확하게 표현하는 데 유용합니다.
| 항목 | TDD | BDD |
|---|---|---|
| 초점 | 코드와 구현 중심 | 사용자 행동과 비즈니스 로직 중심 |
| 단위 | 함수 및 메서드 테스트 | 시나리오와 기능 테스트 |
| 언어 | 기술적 언어(Java, Kotlin 등) | 비기술적 언어(Gherkin 등) |
| 의사소통 | 기술적인 검증 | 비기술자와의 협업 가능 |
| 결과물 | 코드의 기술적 정확성 검증 | 요구사항 충족 및 시스템 의도 확인 |
@Test
@DisplayName("차량이 정상적으로 주차되고 티켓이 발급된다")
void parkVehicleAndIssueTicket() {
// Given
ParkingLotSystem parkingLotSystem = new ParkingLotSystem();
Vehicle vehicle = new Vehicle("XYZ-5678");
// When
ParkingTicket ticket = parkingLotSystem.issueTicket(vehicle);
// Then
assertThat(ticket).isNotNull(); // 티켓이 정상적으로 발급되었는지 확인
assertThat(ticket.getLicensePlate()).isEqualTo("XYZ-5678"); // 차량 번호 검증
}
📌 이 글은 TDD 강의를 학습한 내용을 바탕으로 재구성하였습니다. 문제가 되는 부분이 있다면 수정하겠습니다.