Post

TDD 와 BDD.

TDD 와 BDD.

TDD와 BDD의 차이점

TDD (Test-Driven Development)

TDD는 테스트 코드를 먼저 작성하고, 그 테스트를 통과하는 실제 코드를 작성하는 개발 방법.

TDD의 철학

  1. 테스트를 실패하게 한다.
  2. 테스트를 통과할 최소한의 코드를 작성한다.
  3. 코드를 개선(리팩토링)한다.

이 과정을 반복하면서 코드의 품질을 높이고, 유지보수를 용이하게 함.

TDD의 핵심 원칙

  • 테스트 우선: 코드 작성 전에 테스트를 먼저 작성.
  • 작은 단계로 진행: 한 번에 하나의 기능만 테스트.
  • 리팩토링: 테스트를 통과한 후 코드를 정리하고 개선.

BDD (Behavior-Driven Development)

BDD는 TDD에서 발전된 방식으로, 사용자 행동(Behavior)에 초점을 맞춘 테스트 주도 개발 방법론.

BDD의 특징

  • 테스트와 요구사항을 연결하여 개발을 선 진행.
  • 비즈니스 요구를 코드로 전환하는 과정.
  • 개발팀, 비즈니스 팀, QA 팀 간의 소통을 강화할 수 있다.

Gherkin 언어 활용 시나리오

BDD에서는 Gherkin 언어를 사용하여 시나리오를 정의함.

  • Feature: 기능의 큰 주제 또는 목표
  • Scenario: 특정 상황에서 시스템의 동작 정의
  • Given: 초기 상태 설명
  • When: 행동이나 이벤트 설명
  • Then: 기대 결과 설명
  • And: 확장하거나 추가적인 조건, 동작, 결과
  • But: 부정적인 경우, 예외 상황

📌 시나리오 예시

Feature: 로그인 기능

사용자는 자신의 계정으로 로그인하여 대시보드에 접근할 수 있어야 한다.

Scenario: 유효한 계정으로 로그인 성공

1
2
3
4
5
Given 사용자가 로그인 페이지에 있다  
And 사용자에게 유효한 계정이 있다  
When 사용자가 올바른 아이디와 비밀번호를 입력한다  
Then 사용자는 대시보드로 이동한다  
And 환영 메시지를 볼 수 있다  

Scenario: 잘못된 비밀번호로 로그인 실패

1
2
3
4
5
Given 사용자가 로그인 페이지에 있다  
And 사용자에게 유효한 계정이 있다  
When 사용자가 올바른 아이디와 잘못된 비밀번호를 입력한다  
Then 잘못된 비밀번호라는 에러 메시지가 표시된다  
And 사용자는 로그인 페이지를 수정할 수 있다  

Scenario: 계정이 없는 사용자 로그인 시도

1
2
3
4
5
Given 사용자가 로그인 페이지에 있다  
When 사용자가 존재하지 않는 아이디를 입력한다  
And 임의의 비밀번호를 입력한다  
Then "계정이 존재하지 않습니다"라는 에러 메시지가 표시된다  
And 회원가입 버튼이 표시된다  

📊 TDD와 BDD의 차이점

구분TDDBDD
초점기술적 요구사항사용자 행동 및 비즈니스 요구
목적코드가 요구사항을 정확히 만족하도록 보장비즈니스 요구사항과 사용자 행동의 일치 보장
출발점테스트 케이스 작성사용자 시나리오 작성 (Gherkin 언어 활용)
참여자주로 개발 팀개발자, 비즈니스 팀, QA 팀 간의 협업
사용 언어프로그래밍 언어로 테스트 코드 작성자연어 기반 (Given, When, Then)
강점코드 품질 향상 및 리팩토링 용이팀 간 협업 강화 및 명확한 요구사항 전달
적용 대상기술적 구현 및 내부 로직비즈니스 요구사항과 사용자 중심 기능

결론

TDD와 BDD는 테스트 주도 개발 방식이지만, TDD는 기술적인 요구사항에 집중하고, BDD는 사용자 행동과 비즈니스 요구사항에 집중한다.

개발팀 내부의 코드 품질을 향상시키려면 TDD를,
팀 간 협업을 강화하고 사용자 중심의 기능을 개발하려면 BDD를 활용하는 것이 좋음! 🚀


*번외
### ATDD (Acceptance Test-Driven Development, 인수 테스트 주도 개발)

  • 비즈니스 요구사항을 먼저 테스트 코드로 정의하고 개발하는 방식
  • 실 사용자가 원하는 반응 및 결과가 나오는지를 기준으로 테스트 진행
This post is licensed under CC BY 4.0 by the author.