BDD(Behavior Driven Development) 행위 주도 개발

BDD이란?

  • 행위 주도 개발
  • BDD(Behavior Driven Development)로 TDD를 근간으로 파생된 개발 방법이다.
  • TDD(Test Driven Development)에서 한발 더 나가아 테스트 케이스 자체가 요구사양이 되도록 하는 개발방법이다.

BDD 기본 패턴

BDD는 시나리오를 기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않고, 시나리오는 개발자가 아닌 사람이 봐도 이해할 수 있는 정도의 레벨을 권장한다.

  • Feature : 테스트에 대상의 기능/책임을 명시한다.
  • Scenario : 테스트 목적에 대한 상황을 설명한다.
  • 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))
}