BDD — Given-When-Then 으로 자연어가 설계가 되다
BDD — Given-When-Then 으로 자연어가 설계가 되다
1. 요약
BDD (Behavior-Driven Development) 는 2003년 Dan North 가 TDD를 명명했더니 사람들이 헷갈려 한다 는 깨달음에서 출발한 행동 중심 개발 방법론 이다. JBehave 라는 JUnit 대체재를 만들면서 test 라는 단어를 모두 behaviour 로 교체 했고, Given-When-Then 템플릿이 탄생. 자연어 명세 = 실행 가능한 코드 의 직접적 조상.
2. 배경 (이전 도구의 한계)
TDD 는 강력했지만 비개발자 (PM, QA, 고객) 가 테스트를 읽지 못했다. 비즈니스 가치 와 기술 검증 이 끊어진 상태. North 의 통찰: test 대신 should, behaviour 를 쓰면 비개발자도 읽을 수 있다 → 결국 Given-When-Then 이라는 비개발자도 쓸 수 있는 형식 이 답.
3. 핵심 개념·표기법
Given-When-Then 템플릿:
Feature: 사용자 로그인
Scenario: 올바른 비밀번호로 로그인
Given 사용자가 가입되어 있고
And 비밀번호 "Pass123" 으로 등록되어 있을 때
When 사용자가 "Pass123" 으로 로그인하면
Then 메인 페이지로 이동한다
And 환영 메시지가 표시된다
| 단계 | 의미 |
|---|---|
| Given | 초기 상태·전제 조건 |
| When | 트리거되는 행동 |
| Then | 기대되는 결과 |
Gherkin 언어 — Given-When-Then 의 형식화, .feature 파일에 저장.
4. 언어·OS 매핑 (★ 강의 핵심)
| 시대 | 언어·도구 | BDD 활용 |
|---|---|---|
| 2003~05 | Java + JBehave | North 의 첫 도구 |
| 2006~ | Ruby + Cucumber (Aslak Hellesøy) | 산업 표준화 |
| 2010s | 모든 언어 | Cucumber 다국어 지원 |
| 2010s~ | Domain-Driven Design | DDD 의 ubiquitous language 와 통합 |
| 2020s | AI 에이전트 | ★ 자연어 시나리오 → LLM 코드 자동 생성 |
★ BDD의 Gherkin 형식이 LLM 시대에 "이런 사용자가 이런 행동을 하면 이런 결과가 나와야 한다" 라는 자연어 프롬프트 의 표준이 됐다. Spec-driven Development 의 직계 조상.
5. 현대까지의 영향
- Cucumber (2008) — Ruby BDD, 다국어 지원
- SpecFlow — .NET BDD
- Domain-Driven Design (Evans 2003) — ubiquitous language 가 BDD 와 짝
- Living Documentation — Gherkin 시나리오가 살아있는 문서
- AI 에이전트 시나리오 — Cursor, Claude Code 의 spec 입력
- GitHub Spec Kit (2024~) — Spec-driven Development 의 도구화
6. 주요 인물·사건
| 연도 | 사건 |
|---|---|
| 2003 | Dan North, JBehave 작업 시작 — test → behaviour 교체 |
| 2003 | North, Introducing BDD 블로그 — BDD 명명 |
| 2004 | Chris Matts + Dan North, Given-When-Then 캔버스 |
| 2006 | Cucumber (Aslak Hellesøy) Ruby 출시 |
| 2008 | Eric Evans, Domain-Driven Design 와 결합 |
| 2010s | 산업 표준화 |
| 2024 | GitHub Spec Kit — BDD 의 LLM 시대 진화 |
7. 강의 활용
"2003년 Dan North 가 박은 Given-When-Then = 2024년 LLM 명세" 의 21년 일관성. 자연어 (그것도 형식 있는 자연어) 로 시스템 행동을 명세하면 그게 곧 설계 — 이것이 Spec-driven Development 의 본질이고, AI Native Vibe Coding 의 핵심. 언어가 설계다 의 가장 강력한 증거.
출처
- Behavior-driven development — Wikipedia
- History of BDD — Cucumber
- Introducing BDD — Dan North
- Behavior-driven development — Dan North interview (TSM)
그룹 시리즈
→ synthesis/group-se_g4 (시대 그룹 종합 카드)