ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BDD 방법론 예제
    개발/방법론 2021. 1. 30. 14:31

    애자일 소프트웨어 개발 방법론에서 가장 널리 쓰이는 것들

    - BDD(Behaviour-Driven Development)

    - TDD(Test-Driven Development)

     

    테스트 케이스에 User Story 기법과 유사함.

    그냥 쭉 읽어나가는 스토리 같은 자연어에 가깝게 작성

     

    1. 행위를 표현할 수 있는 스토리 작성 

    2. (실패하는) 모든 스토리를 실행

    3. 스토리 실행을 위한 첫 번째 스텝을 정의

    4. 테스트에 성공하도록 어플리케이션 코드 작성

    5. 시나리오가 통과될 때 까지 4,5 번 과정을 반복

    6. 시나리오 통과

    7. 애플리케이션 리팩토링

     

    ! BDD는 행위기반의 사용자 스토리로부터 요구사항을 식별, 충족시키는 Outside-in 기법.

     

    # BDD의 행위 명세법

     

    - Narrative 

     

      - Role : 주요 역할을 설명 

        - 사용자는,

     

      - Feature: 주요 기능을 설명

        - 친구 신청을 할 수 있다

     

      - Benefit : 주요 목적을 설명

        - 친구를 맺기 위해

     

     

    - Scenario

     

      - Given : 사용자에 의해 주어진 조건

        - A라는 사용자가 있다

     

      - And : 사용자에게 주어진 다른 조건

        - B라는 사용자가 있다

     

      - When : 테스트하고자 하는 행위, 사건

        - A가 B에게 친구 신청을 한다

     

      - Then : 기대하는 테스트 결과

        - A는 B의 친구가 된다

     

      - And : 기대하는 또 다른 결과
        - B는 A의 친구가 된다.

     

    Narrative는 테스트 대상이 되는 스토리를 설명

    Scenario는 테스트 수행의 조건, 행위, 결과를 나타냄

     

     

     

    public class AddProductToShoppingCart extends JUnitStroy {
      private User				user;
      private ShoppingCart		shoppingCart;
      private Product			product;
    }
    
    @Given("a user")
    public void aUser() {
    	user = new User();
    }
    
    @Given("a shopping cart")
    public void aShoppingCart() {
    	shoppingCart = new ShoppingCart();
    }
    
    @Given("a product")
    public void aProduct() {
    	product = new Product();
        product.setName("Coffee");
    }
    
    @When("the user adds the product to the shopping cart")
    public void userAddsToShoppingCart() {
    	shoppingCart.add(user, product);
    }
    
    @Then("the product must be included in the list of the shoppingcart's entries")
    public void productMustBeListed() {
    	List<Product> entries = shoppingCart.getProductsByUser(user);
        Assert.assertTrue(entries.contains(product));
    }
    
Designed by Tistory.