-
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)); }