본문 바로가기
카테고리 없음

BDD 알아보기

by 봄석 2019. 10. 28.

 

BDD 알아보기

 BDD는 TDD둘다  소프트웨어  개발 방법입니다.

 

TDD는 Test Driven Development로 테스트 주도 개발이라 합니다.
테스트를 먼저 작성하고, 그 뒤에 테스트케이스를 통과하는 코드를  작성하는 방식으로

테스트가 주도하는 개발 방법입니다.

 

그렇다면 BDD는 무엇일까요 ?

 

 

BDD란?? 무엇일까

BDD는 (Behavior Driven Development )로 TDD를 근간으로 파생된 개발 방법입니다.

TDD에서 한 발 더 나아가 테스트케이스 자체가 요구사양이 되도록 하는 개발방법입니다.

 

BDD를 통해 개발을 하게 된다면 테스트 메소드의 이름을 

"이  클래스가 어떤 행위를 해야한다 (should do someting)" 라는 식의 문장으로 작성하여 

행위에 대한 테스트에 집중할 수  있습니다.

 

 

 

BDD 기본 패턴

BDD는 시나리오를  기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않습니다.

이 시나리오는 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 레벨을 권장합니다.

하나의 시나리오는 Given, When, Then구조를 가지는 것으로 기본패턴을 권장합니다.

  • Feature : 테스트에 대상의 기능/책임을 명시합니다
  • Scenario : 테스트 목적에 대한 상황을 설명합니다
  • Given : 시나리오 진행에 필요한 값을 설정합니다.
  • When : 시나리오를 진행하는데 필요한 조건을 명시합니다
  • Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시합니다.

 

위의 내용을 개발 측면에서 더 간략하게 정리하면 테스트 대상의 상태 변화를 테스트하는 것 입니다.

 

테스트 대상은 A 상태에서 출발하며(Given) 어떤 상태 변화를 가했을 때(When) 기대하는 상태로 완료되어야 합니다. (Then)

또는 Side Effect가 전혀 없는 테스트 대상이라면 테스트 대상의 환경을 A 상태에 두고(Given) 어떤 행동을 요구했을 때(When) 기대하는 결과를 돌려받아야 합니다. (Then)

 

 

작성 예시

   @Test
    fun `aliases for behavior driven development`() {
        //given
        given(calculatorService.add(20.0, 10.0)).willReturn(30.0)

        //when
        val result = calculatorService.add(20.0, 10.0)

        //then
        Assert.assertThat(30.0, CoreMatchers.`is`(result))
    }

 

댓글