BDD: 두 판 사이의 차이
기술노트
(Gemini 벌크 업로더로 자동 업로드) |
(차이 없음)
|
2025년 9월 6일 (토) 05:05 기준 최신판
✅ BDD (Behavior-Driven Development)
BDD (행위 주도 개발)는 TDD(테스트 주도 개발)에서 파생된 개발 방법론으로, 소프트웨어의 행위(Behavior)에 대한 정의를 중심으로 개발을 진행하는 방식입니다. 개발자뿐만 아니라 기획자, 테스터 등 모든 이해관계자가 쉽게 이해할 수 있는 자연어(주로 영어)로 된 시나리오를 기반으로 합니다.
BDD는 기술적인 관점의 테스트가 아닌, 비즈니스 요구사항과 사용자의 관점에서 소프트웨어가 '어떻게 행위해야 하는가'에 집중합니다.
📜 BDD의 시나리오 구조 (Given-When-Then)
BDD의 시나리오는 보통 아래의 구조를 따릅니다.
- Given (주어진 상황) : 시나리오가 시작되기 전의 초기 상태를 설명합니다.
- When (어떤 행위를 하면) : 사용자가 수행하는 특정 행위나 이벤트를 설명합니다.
- Then (이런 결과가 나와야 한다) : 해당 행위의 결과로 기대되는 최종 상태를 설명합니다.
``` Feature: 로그인 기능
Scenario: 올바른 정보로 로그인 시도
Given 나는 로그인 페이지에 있다 When 나는 올바른 아이디와 비밀번호를 입력하고 로그인 버튼을 누른다 Then 나는 로그인에 성공하고 메인 페이지로 이동한다
```
이 시나리오는 그 자체로 명세서가 되며, 동시에 자동화된 테스트 코드로 변환될 수 있습니다.
🆚 TDD와의 관계
- TDD는 개발자의 관점에서 메서드나 함수의 동작을 테스트하는, 기술 중심의 '내부(Inside-out)' 개발 방식에 가깝습니다.
- BDD는 사용자의 관점에서 소프트웨어의 시나리오와 행위를 테스트하는, 비즈니스 중심의 '외부(Outside-in)' 개발 방식에 가깝습니다.
BDD는 TDD의 철학을 계승하고 확장한 개념으로 볼 수 있으며, 두 방법론은 함께 사용될 수 있습니다.
💡 개발자 핵심 Point
- BDD는 개발자와 비개발자 간의 소통의 간극을 줄여주는 강력한 도구입니다.
- `Given-When-Then` 형식의 시나리오는 살아있는 문서(Living Documentation)가 되어, 코드와 요구사항 명세서가 항상 일치하도록 도와줍니다.
- 대표적인 BDD 프레임워크로는 `Cucumber`, `SpecFlow`, `Behave` 등이 있으며, 이 도구들은 자연어로 작성된 시나리오를 실제 실행 가능한 테스트 코드로 연결해줍니다.
- BDD를 통해 개발자는 "내가 지금 무엇을 만들어야 하는가?"에 대한 비즈니스적인 맥락을 더 명확하게 이해할 수 있습니다.