2016-11-21 5 views
1

제 3 자 API로 메시지를 보내는 테스트 시나리오를 통해 메시지의 각 속성에 대해 단일 시나리오에 여러 가지 결과 및 결과를 추가 할 수 있습니다. 이로 인해 시나리오가 복잡해집니다.BDD : 하나의 시나리오에 여러 가지 결과 및 결과를 추가해야합니까, 결과에 따라 시나리오를 분할해야합니까?

나는 또한 이것을 분리 된 시나리오로 나눌 수 있습니다. 그러나 그들은 실제로 다르지 않다 시나리오.

Scenario 1: An order 
    Given an order 
    And that has order ID equal to 42 
    And that has affiliate reference equal to foo 
    When the conversion for the order is sent 
    Then the conversion has an ID equal to 42 
    And the conversion has an affiliate ID equal to foo 

그리고 여기 여러 시나리오로를 부러 :

Scenario 1: An order with a specific order ID 
    Given an order that has order ID equal to 42 
    When the conversion for the order is sent 
    Then the conversion has an ID equal to 42 

Scenario 2: An order with a specific affiliate reference 
    Given an order that has affiliate reference equal to foo 
    When the conversion for the order is sent 
    Then the conversion has an affiliate ID equal to foo 
+1

나는 시나리오를 테스트로 생각하지 말아야한다고 생각한다. 테스트하지 않는다. 또한 프로 시저이기 때문에 생각하지 않아야합니다. 입력 및 출력이 없습니다. 시나리오는 문서입니다. 주어진 조건에서 시스템이 작동하는 방법을 설명합니다. Givens의 이러한 환경, 즉 환경 - 이벤트 -에서, 그리고 시스템이 어떻게 진행되고 있는지에 대해 어떻게 반응해야하는지에 대해 Thens에서 설명하십시오. – Shamaoke

+0

@Shamaoke 일반적으로 나는 당신의 성명 (특히 첫 번째 부분)에 동의한다. 나는 당신이 어떤 행동을 묘사하고 있는가에 따라 입력과 출력이있을 수 있다고 생각한다. –

답변

1

은 약 사업에 사람과 대화를 시도

여러 기븐스와 결과와 시나리오 주문. 제휴사 참조가있는 주문 종류의 예를 들어 보도록하십시오.

자연스럽게 특정 ID 및 제휴사 참조가있는 주문에 대해 이야기하고 그 두 가지가 합쳐지면 하나의 시나리오에 넣는 것이 좋습니다. 우리가 변환 순서를 보낼 때,이 같은 ID와 제휴 참조를해야한다, 그래서 :

버스 : 당신은 아마 그들이 예를 들어, 같은 절에 모두 것들에 대해 이야기를 듣게 될 것입니다.

MvO : 그 중 한 가지 예를 들려 줄 수 있습니까? ID와 연관 는 참조 했습니까?

버스 : 물론 ID는 간단한 정수이므로 42, 계열사 참조는 Google 계열사의 이름이므로 'Foo'와 유사합니다.

(할 수 있다면 그건 그렇고, 사실적인 제휴 이름을 사용 - 그것은 쉽게 당신이 뭔가를 놓친 경우 사업이 자리 할 수있게!)

우리가 언어를 유지, 작은 오이이를 변환 할 때 (I wrote a blog post on this) 가능한 자연, 우리는 같은 것을 얻을 :

Given an order with ID 42 and affiliate reference "foo" 
When we send the order for conversion 
Then the conversion should have the same ID and affiliate reference. 

그러나, 제휴 참조가, 또는 가입 기준을 유지하는 것은 완전히 별개의 능력과 그것에 대해 비즈니스 이야기하지 않는 일부 주문이있는 경우 별도로 두 시나리오가 필요합니다. .

비즈니스 담당자와 이야기 할 때 몇 가지 다른 이점이 있습니다.

먼저, 누가 능동적 인 음성 (우리가 주문을 보내는 것)이 아닌 "수동적"(주문이 전송 됨)이라는 말을 사용하면 누가 무엇을하고 있는지 쉽게 볼 수 있습니다. 이것은 여러 역할을 가진 시나리오에서 특히 중요하며 누가 결과를 누가 또는 무엇을 유발하는지 생각할 수 있도록 도와줍니다. (Here's a blog post about tenses and voices in BDD.)

두 번째로 질문 할 기회가 생깁니다. "제휴 참조가없는 주문이 있습니까? 모든 주문에는 이와 같은 ID가 있습니까? 예전 스타일 ID가 시스템에 떠 다니는 예전 주문이 있습니까?" 기타 등등. 질문하는 것을 쉽게 생각할 수 없다면 테스터를 데려와주십시오. 테스터는 질문 할 질문을 생각하면 좋습니다.(I wrote a blog post on this, too.)

셋째, 업무용 언어와 동일한 언어를 코드에 포함 할 가능성이 높으므로 유지 관리가 더 쉬워지고 더 쉽게 대화 할 수있게됩니다.

귀하의 비즈니스가 실제로 API와 관련된 대화에 관심이없는 경우 은 API 테스트에 Gherkin 기반 도구를 사용하지 마십시오.a little DSL in plain old XUnit은 영어보다 훨씬 쉽게 유지 관리 할 수 ​​있습니다.

귀하의 질문을 좀 더 포괄적으로 다루려면 다음과 같이하십시오 : 시나리오에 여러 가지 일과 결과가있는 것이 좋습니다. 일반적으로 7 단계가 넘으면 별도의 시나리오로 분할하려고합니다.

시나리오를 통해 대화를 나누십시오.하지만 그렇게 할 때 이러한 문제가 많이 사라지기 때문입니다.

+0

모든 도움말과 링크를 제공해 주셔서 감사합니다! –