BDD(Behavior-Driven Development)

Kkd·2024년 11월 29일
0

매일메일 개념정리

목록 보기
13/93

BDD (Behavior-Driven Development)란?

BDD(Behavior-Driven Development)는 애플리케이션의 "행동(Behavior)"에 초점을 맞춘 소프트웨어 개발 방법론으로, TDD(Test-Driven Development)에서 발전된 방식입니다. BDD는 개발자와 비개발자(예: 기획자, 디자이너, QA) 간의 효율적인 커뮤니케이션을 목표로 하며, 비즈니스 요구사항을 코드로 표현하는 데 중점을 둡니다.


BDD의 핵심 개념

  1. 행동 중심:

    • 소프트웨어의 구현보다는 사용자의 행동시스템의 기대되는 동작을 기술합니다.
    • 예를 들어, "사용자가 로그인 버튼을 클릭하면 로그인 페이지로 이동해야 한다."
  2. 공통 언어 사용:

    • 비즈니스 담당자와 개발자가 쉽게 이해할 수 있는 자연어로 요구사항을 정의합니다.
    • 주로 Gherkin이라는 문법을 사용하여 Given-When-Then 형식으로 시나리오를 작성합니다.
  3. Given-When-Then 패턴:

    • Given: 테스트 준비 상태를 설정.
    • When: 사용자의 특정 행동을 정의.
    • Then: 행동의 기대 결과를 검증.

    예시:

    Feature: 로그인 기능
      Scenario: 유효한 사용자로 로그인
        Given 사용자가 로그인 페이지에 접속했을 때
        When 사용자가 올바른 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면
        Then 사용자는 메인 페이지로 이동한다

BDD의 주요 목표

  1. 비즈니스 목표를 중심으로 개발:

    • 소프트웨어가 해결하려는 문제(비즈니스 목표)를 명확히 하고, 그것을 중심으로 기능을 개발합니다.
  2. 명확한 요구사항 정의:

    • 이해하기 쉬운 언어로 정의된 테스트를 통해 개발자와 비즈니스 담당자 간의 오해를 줄입니다.
  3. 자동화된 테스트 중심 개발:

    • 시나리오를 기반으로 테스트를 자동화하여 빠른 피드백을 제공합니다.

BDD와 TDD의 차이

특징TDDBDD
초점기능 단위 테스트(어떻게 구현할 것인가)사용자 행동 및 비즈니스 요구사항
언어개발자 중심(코드에 가까운 표현)비즈니스 중심(자연어 기반 표현)
테스트 작성 시점테스트 코드 작성 후 구현시나리오 작성 후 테스트 및 구현
참여자주로 개발자개발자, 기획자, QA 등 모두 참여

BDD를 활용한 개발 흐름

  1. 비즈니스 요구사항 도출:

    • 개발자와 비즈니스 담당자가 협업하여 기능 요구사항을 도출합니다.
  2. 시나리오 작성:

    • Gherkin 문법을 사용해 비즈니스 요구사항을 시나리오 형태로 작성합니다.
    • 각 시나리오는 시스템이 어떤 동작을 수행해야 하는지를 설명합니다.
  3. 테스트 자동화:

    • 작성된 시나리오를 테스트 코드로 변환합니다.
    • Java의 경우 Cucumber 라이브러리를 사용하여 Gherkin 문법을 기반으로 테스트를 실행합니다.
  4. 코드 구현:

    • 테스트가 실패하는 것을 확인한 후, 이를 통과하도록 코드를 구현합니다.
  5. 반복:

    • 테스트가 성공하면 다음 요구사항에 대해 반복합니다.

BDD의 장점

  1. 명확한 요구사항 정의:

    • 시나리오가 요구사항 문서와 동일한 역할을 하기 때문에 명확하고 추적이 용이합니다.
  2. 효율적인 커뮤니케이션:

    • 모든 팀원이 동일한 언어(Gherkin)로 의사소통할 수 있습니다.
  3. 비즈니스 중심의 개발:

    • 소프트웨어의 동작이 비즈니스 목표와 밀접하게 연관되어 있어, 올바른 기능을 개발할 가능성이 높습니다.
  4. 자동화된 테스트:

    • 테스트 시나리오가 자동화되어 코드 품질을 유지하는 데 유용합니다.

BDD의 한계

  • 초기 시나리오 작성이 비효율적일 수 있음.
  • 모든 팀원이 Gherkin 문법을 이해해야 함.
  • 복잡한 비즈니스 로직은 시나리오로 완전히 표현하기 어려울 수 있음.

Java에서 BDD 도구

  1. Cucumber:

    • 가장 널리 사용되는 BDD 프레임워크.
    • Gherkin 문법 기반의 시나리오를 실행할 수 있음.
    @Given("사용자가 로그인 페이지에 접속했을 때")
    public void 사용자_로그인_페이지_접속() {
        // Given 조건 설정
    }
    
    @When("사용자가 올바른 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면")
    public void 사용자_로그인_시도() {
        // When 행동 정의
    }
    
    @Then("사용자는 메인 페이지로 이동한다")
    public void 메인_페이지_이동() {
        // Then 결과 검증
    }
  2. JBehave:

    • Java 기반의 또 다른 BDD 프레임워크로, Cucumber와 비슷한 역할을 합니다.

BDD는 비즈니스와 개발 간의 갭을 줄이는 데 유용한 도구로, 특히 팀원 간 협업이 중요한 프로젝트에서 효과적입니다.

추가 학습 자료

profile
🌱

0개의 댓글