개인적 전환점

TDD의 레드-그린-리팩터 사이클은 개발자에게 즉각적인 피드백을 제공한다. 그러나 이 피드백은 기술적 정확성에 국한된다. BDD의 Given-When-Then 패턴으로 전환하면서 경험한 가장 큰 변화는 질문의 성격이 바뀌었다는 점이다.

TDD: “이 함수가 올바른 값을 반환하는가?” BDD: “이 시스템이 사용자에게 어떤 가치를 제공하는가?”

실천적 차이

  1. 테스트 작성 순서: TDD는 가장 작은 단위부터 → BDD는 가장 중요한 시나리오부터
  2. 실패 메시지: TDD는 “expected 5 but got 3” → BDD는 “사용자가 로그인하지 않은 상태에서 결제를 시도하면…”
  3. 리팩터링 범위: TDD는 함수 수준 → BDD는 기능 수준

깨달음

BDD는 TDD를 대체하는 것이 아니다. BDD는 TDD에게 방향성을 제공한다. TDD가 “올바르게 만들기”라면, BDD는 “올바른 것을 만들기”다. 이 둘은 상호보완적이며, 진정한 소프트웨어 장인정신은 두 가지를 모두 통합하는 데 있다.