행동 기반 개발-작은 오이
작은 오이는 쓰기에 사용되는 언어입니다. Features, Scenarios, and Steps. Gherkin의 목적은 구체적인 요구 사항을 작성하도록 돕는 것입니다.
구체적인 요구 사항이 의미하는 바를 이해하려면 다음 예를 고려하십시오.
고객은 유효하지 않은 신용 카드 정보를 입력하지 않도록해야합니다.
고객이 정확히 16 자리가 아닌 신용 카드 번호를 입력 한 경우 양식을 제출하려고 할 때 올바른 자릿수를 알려주는 오류 메시지와 함께 다시 표시되어야합니다.
후자는 모호함이없고 오류를 방지하며 훨씬 더 테스트 가능합니다.
Gherkin은보다 구체적인 요구 사항을 생성하도록 설계되었습니다. Gherkin에서 위의 예는 다음과 같습니다.
Feature
유효하지 않은 신용 카드 정보 입력시 피드백 Feature Definition
사용자 테스트에서, 우리는 실수 있도록 많은 사람들이 본 문서
Background True for all Scenarios Below
Given 구매할 항목을 선택했습니다.
And 신용 카드 번호를 입력하려고합니다.
Scenario − 신용 카드 번호가 너무 짧습니다.Scenario Definition
When 16 자리 미만의 카드 번호를 입력했습니다.
And 다른 모든 세부 사항이 정확합니다.
And 나는 양식을 제출Steps
Then 양식이 다시 표시되어야합니다.
And 올바른 자릿수를 알려주는 메시지가 표시되어야합니다.
Gherkin 형식 및 구문
Gherkin 파일은 일반 텍스트 파일이며 확장자는 .feature입니다. 비어 있지 않은 각 줄은 Gherkin 키워드로 시작하고 원하는 텍스트가 이어져야합니다. 키워드는-
Feature
Scenario
주어진, 언제, 그때, 그리고, 그러나 (단계)
Background
시나리오 개요
Examples
"" "(문서 문자열)
| (데이터 테이블)
@ (태그)
# (코멘트)
*
특색
그만큼 Feature키워드는 소프트웨어 기능을 설명하고 관련 시나리오를 그룹화하는 데 사용됩니다. 기능에는 세 가지 기본 요소가 있습니다.
키워드 – 기능.
Feature 키워드와 같은 줄에 제공된 기능의 이름입니다.
여러 줄에 걸쳐있을 수있는 선택적 (하지만 강력히 권장되는) 설명, 즉 Feature 키워드를 포함하는 줄과 시나리오, 배경 또는 시나리오 개요로 시작하는 줄 사이의 모든 텍스트입니다.
이름과 설명 외에도 기능에는 시나리오 또는 시나리오 개요 목록과 선택적 배경이 포함됩니다.
이름을 지정하는 것이 일반적입니다. .feature지형지 물의 이름을 가져 와서 소문자로 변환하고 공백을 밑줄로 대체하여 파일. 예를 들면
feedback_when_entering_invalid_credit_card_details.feature
시스템에서 기능을 식별하기 위해 "기능 주입 템플릿"을 사용할 수 있습니다.
설명
Gherkin 문서의 일부는 키워드로 시작할 필요가 없습니다.
기능, 시나리오, 시나리오 개요 또는 예제 다음의 행에서 키워드로 시작하는 행이없는 한 원하는 것을 작성할 수 있습니다. 설명을 포함하는 방법입니다.
대본
시스템의 동작을 표현하기 위해 각 기능에 하나 이상의 시나리오를 첨부합니다. 기능에 대한 모든 동작을 완전히 지정하기 위해 기능 당 5-20 개의 시나리오를 보는 것이 일반적입니다.
시나리오는 다음 패턴을 따릅니다.
초기 컨텍스트 설명
이벤트 설명
예상되는 결과 설명
컨텍스트에서 시작하여 작업을 설명하고 결과를 확인합니다. 이것은 단계로 수행됩니다. Gherkin은 각 컨텍스트, 작업 및 결과를 단계로 설명하는 세 가지 키워드를 제공합니다.
Given − 컨텍스트 설정
When − 조치 수행
Then − 결과 확인
이러한 키워드는 시나리오의 가독성을 제공합니다.
Example
Scenario − 계좌에서 돈을 인출합니다.
Given 내 계정에 $ 100가 있습니다.
When 20 달러를 요청합니다.
Then $ 20가 분배되어야합니다.
여러 개있는 경우 Given 또는 When 서로 아래 단계를 사용할 수 있습니다. And 또는 But. 시나리오를 자세히 지정할 수 있습니다.
Example
Scenario − 도난당한 카드로 출금을 시도합니다.
Given 내 계정에 $ 100가 있습니다.
But 내 카드가 유효하지 않습니다.
When 50 달러를 요청합니다.
Then 내 카드는 반환되지 않아야합니다.
And 은행에 연락하라고해야합니다.
시나리오를 생성하는 동안 '각 시나리오는 의미가 있어야하며 다른 시나리오와 독립적으로 실행할 수 있어야합니다. 이것은-
한 시나리오의 성공 조건은 다른 시나리오가 이전에 실행되었다는 사실에 따라 달라질 수 없습니다.
각 시나리오는 특정 컨텍스트를 만들고 한 가지를 실행하고 결과를 테스트합니다.
이러한 시나리오는 다음과 같은 이점을 제공합니다.
테스트는 더 간단하고 이해하기 쉽습니다.
시나리오의 하위 집합 만 실행할 수 있으며 테스트 집합의 중단에 대해 걱정할 필요가 없습니다.
시스템에 따라 테스트를 병렬로 실행하여 모든 테스트를 실행하는 데 걸리는 시간을 줄일 수 있습니다.
시나리오 개요
여러 입력 또는 출력이있는 시나리오를 작성해야하는 경우 값만 다른 여러 시나리오를 작성하게 될 수 있습니다. 해결책은 시나리오 개요를 사용하는 것입니다. 시나리오 개요를 작성하려면
시나리오 개요 단계의 변수는 <및>로 표시됩니다.
변수에 대한 다양한 값은 표에 예제로 제공됩니다.
Example
계산기에 두 개의 숫자를 더하는 기능을 작성한다고 가정 해 보겠습니다.
Feature − 추가.
Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input | output |
| 2+2 | 4 |
| 98+1 | 99 |
| 255+390 | 645 |
시나리오 개요 섹션 뒤에는 항상 테이블의 컨테이너 인 하나 이상의 예제 섹션이 나옵니다. 테이블에는 시나리오 개요 단계의 변수에 해당하는 헤더 행이 있어야합니다. 아래의 각 행은 변수 값을 채우는 새 시나리오를 만듭니다.