cucumber gherkin tutorial
이 유익한 자습서는 Cucumber Gherkin 프레임 워크의 장점과 명확한 예제와 함께 Gherkin 언어를 사용하여 자동화 스크립트를 작성하는 방법을 설명합니다.
Cucumber는 BDD (Behavior Driven Development) 프레임 워크를 기반으로하는 도구입니다. BDD는 간단한 일반 텍스트 표현으로 응용 프로그램의 기능을 이해하는 방법입니다.
Behavior Driven Development 프레임 워크의 주요 목표는 비즈니스 분석가, 품질 보증, 개발자 등과 같은 다양한 프로젝트 역할이 기술적 측면에 깊이 빠져들지 않고도 애플리케이션을 이해하도록하는 것입니다.
Cucumber 도구는 일반적으로 애플리케이션의 승인 테스트를 작성하기 위해 실시간으로 사용됩니다. Cucumber 도구는 Java, Ruby, .Net 등과 같은 많은 프로그래밍 언어를 지원합니다. Selenium, Capybara 등과 같은 여러 도구와 통합 할 수 있습니다.
학습 내용 :
작은 오이는 무엇입니까?
Gherkin은 Cucumber 도구에서 사용하는 언어입니다. 응용 프로그램 동작의 간단한 영어 표현입니다. Cucumber는 문서화 목적으로 기능 파일의 개념을 사용합니다. 기능 파일 내의 콘텐츠는 Gherkin 언어로 작성됩니다.
다음 주제에서는 Cucumber Gherkin 프레임 워크의 장점, Cucumber를 Selenium과 통합, 기능 파일 및 해당 단계 정의 파일 및 샘플 기능 파일 생성에 대해 자세히 알아 봅니다.
Cucumber Gherkin Framework의 공통 용어
Cucumber Gherkin 프레임 워크는 기능 파일 작성에 필수적인 특정 키워드를 사용합니다.
다음 용어는 기능 파일에서 가장 일반적으로 사용됩니다.
# 1) 기능 :
기능 파일은 AUT (Application Under Test)에 대한 높은 수준의 설명을 제공해야합니다. 기능 파일의 첫 번째 줄은 다음에 대한 설명 다음에 나오는 키워드‘기능’으로 시작해야합니다.지원서테스트 중입니다. Cucumber에서 규정 한 표준에 따라 기능 파일에는 다음 세 가지 요소가 첫 번째 줄로 포함되어야합니다.
- 기능 키워드
- 기능 이름
- 기능 설명 (선택 사항)
기능 키워드 뒤에 기능 이름이 와야합니다. 기능 파일의 여러 줄에 걸쳐있을 수있는 선택적 설명 섹션을 포함 할 수 있습니다. 기능 파일의 확장자는 .feature입니다.
# 2) 시나리오 :
시나리오는 테스트 할 기능의 테스트 사양입니다. 이상적으로 기능 파일은 기능의 일부로 하나 이상의 시나리오를 포함 할 수 있습니다. 시나리오에는 여러 테스트 단계가 포함됩니다. 오이 표준에 따라 긴 시나리오는 단계 수가 증가하면 표현력을 잃는 경향이 있으므로 시나리오에는 3-5 개의 테스트 단계가 포함되어야합니다.
시나리오에는 다음 단계가 포함될 수 있습니다.
- 사용자가 수행 할 작업입니다.
- 조치의 예상 결과.
Gherkin 언어에서 시나리오에는 다음 키워드가 포함되어야합니다.
- 주어진
- 언제
- 그때
- 과
주어진:
주어진 키워드는 특정 시나리오를 실행하기위한 전제 조건을 지정하는 데 사용됩니다. 시나리오는 둘 이상의 Given 문을 포함하거나 시나리오에 대해 Given 문이 없을 수 있습니다.
언제:
이 키워드는 버튼 클릭, 텍스트 상자에 데이터 입력 등과 같이 사용자가 수행하는 작업이나 이벤트를 지정하는 데 사용됩니다. 단일 시나리오에서 여러 when 문이있을 수 있습니다.
그때:
그런 다음 키워드는 사용자가 수행 한 작업의 예상 결과를 지정하는 데 사용됩니다. 이상적으로는 사용자 작업의 예상 결과를 이해하려면 When 키워드 뒤에 Then 키워드가 와야합니다.
과:
그리고 키워드는 여러 문장을 결합하기 위해 접속 키워드로 사용됩니다. 예를 들어, 시나리오의 여러 Given 및 When 문은 키워드‘And’를 사용하여 결합 할 수 있습니다.
# 3) 시나리오 개요 :
시나리오 개요는 시나리오의 매개 변수화 방법입니다.
이것은 여러 데이터 세트에 대해 동일한 시나리오를 실행해야하지만 테스트 단계는 동일하게 유지되는 경우에 이상적입니다. 시나리오 개요 다음에는 각 매개 변수에 대한 값 세트를 지정하는 키워드 '예제'가 와야합니다.
다음은 시나리오 개요의 개념을 이해하는 예입니다.
예:
시나리오 개요 : 파일을 올리다
주어진 사용자가 파일 업로드 화면에 있습니다.
언제 사용자가 찾아보기 버튼을 클릭합니다.
과 사용자가 업로드 텍스트 상자에 입력합니다.
과 사용자가 입력 버튼을 클릭합니다.
그때 파일 업로드가 성공했는지 확인합니다.
예 :
| 파일 이름 |
| file1 |
| 파일 2 |
시나리오 개요 내의 매개 변수는‘’문자로 지정해야합니다. 매개 변수의 데이터 값 목록은 파이프 (|) 기호를 사용하여 지정해야합니다.
sleep () C ++
# 4) 배경 :
배경 키워드는 여러 개의 주어진 명령문을 단일 그룹으로 그룹화하는 데 사용됩니다.
이는 일반적으로 기능 파일의 각 시나리오에서 동일한 명령문 세트가 반복 될 때 사용됩니다. 각 시나리오에 대해 주어진 명령문을 반복적으로 지정하는 대신 첫 번째 시나리오 이전에 키워드 'Background'로 지정할 수 있습니다.
예:
배경:
주어진 사용자가 애플리케이션 로그인 페이지에 있습니다.
Cucumber Gherkin Framework의 장점
다음은 Cucumber를 오늘날 기업 세계에서 빠르게 진화하는 Agile 방법론에 이상적인 선택으로 만드는 Cucumber Gherkin 프레임 워크의 장점입니다.
- Cucumber는 오픈 소스 도구입니다.
- 일반 텍스트 표현을 사용하면 비전문 사용자가 시나리오를 더 쉽게 이해할 수 있습니다.
- 비즈니스 분석가, 개발자 및 품질 보증 담당자와 같은 다양한 프로젝트 이해 관계자의 커뮤니케이션 격차를 해소합니다.
- Cucumber 도구를 사용하여 개발 된 자동화 테스트 케이스는 유지 관리 및 이해가 더 쉽습니다.
- Selenium 및 Capybara와 같은 다른 도구와 쉽게 통합 할 수 있습니다.
오이와 셀레늄의 통합
Cucumber와 Selenium은 가장 강력한 두 가지 기능 테스트 도구입니다. Cucumber와 Selenium Webdriver의 통합은 프로젝트 팀의 다양한 비 기술 구성원이 애플리케이션 흐름을 이해하는 데 도움이됩니다.
Cucumber를 Selenium Webdriver와 통합하기 위해 따라야 할 단계는 다음과 같습니다.
1 단계:
Cucumber는 필요한 JAR 파일을 다운로드하여 Selenium Webdriver와 통합 할 수 있습니다.
다음은 Selenium Webdriver와 함께 Cucumber를 사용하기 위해 다운로드 할 JAR 파일 목록입니다.
- coverage-2.1.1.jar
- 오이 코어 -1.2.2.jar
- 오이-자바 -1.2.2.jar
- cucumber-junit-1.2.2.jar
- 오이 -jvm-deps-1.0.3.jar
- 오이보고 -0.1.0.jar
- 작은 오이 -2.12.2.jar
- hamcrest-core-1.3.jar
- junit-4.11.jar
위의 JAR 파일은 Maven에서 다운로드 할 수 있습니다. 웹 사이트 .
위의 각 JAR 파일은 위 웹 사이트에서 개별적으로 다운로드해야합니다.
2 단계:
Eclipse에서 새 프로젝트를 만들고 위의 JAR 파일을 프로젝트에 추가합니다. 프로젝트에 JAR 파일을 추가하려면 프로젝트-> 빌드 경로-> 빌드 경로 구성.
클릭 외부 JAR 추가 버튼을 클릭하고 위의 JAR 파일 목록을 프로젝트에 추가하십시오.
3 단계 :
기능 파일과 단계 정의 파일을 만들기 전에 Eclipse에 Natural 플러그인을 설치해야합니다. 복사 및 붙여 넣기로 수행 할 수 있습니다. URL 위에 도움말-> 새 소프트웨어 설치-> URL
클릭 다음 버튼 Eclipse에 플러그인을 설치합니다.
기능 파일 생성
프로젝트 구조에서 기능 파일 및 단계 정의 파일에 대해 별도의 폴더를 만듭니다. 단계 정의 파일에는 Java 코딩 라인이 포함되며 기능 파일에는 Gherkin 언어 형식의 영어 문이 포함됩니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 기능 파일을 저장할 별도의 폴더 생성-> 신규-> 패키지 .
- 프로젝트 / 패키지에서 오른쪽 클릭->으로 이동하여 기능 파일을 생성 할 수 있습니다. 새로 만들기-> 파일 .
- 기능 파일의 이름을 제공하십시오. 기능 파일 뒤에는 확장자 .feature가 와야합니다.
- 프로젝트 구조는 아래 구조와 같아야합니다.
단계 정의 파일 생성
기능 파일의 각 단계는 해당 단계 정의에 매핑되어야합니다. Cucumber Gherkin 파일에 사용 된 태그는 @Given, @When 및 @Then 태그를 사용하여 단계 정의에 매핑되어야합니다.
다음은 단계 정의 파일의 구문입니다.
통사론:
@TagName (“^ Step Name $”)
Public void methodName ()
{
방법 정의
}
단계 이름은 기호 캐럿 (^)으로 시작하고 기호 ($)로 시작해야합니다. 메소드 이름은 Java 코딩 표준에 따라 허용되는 유효한 이름 일 수 있습니다. 메소드 정의에는 Java 또는 테스터가 선택한 기타 프로그래밍 언어의 코딩 명령문이 포함됩니다.
기능 파일 및 단계 정의 파일 예
기능 파일 및 단계 정의 파일을 생성하기 위해 다음 시나리오를 사용할 수 있습니다.
대본:
- 테스트중인 애플리케이션의 로그인 페이지를 엽니 다.
- 사용자 이름을 입력하십시오
- 비밀번호를 입력하세요
- 로그인 버튼을 클릭하십시오.
- 사용자 로그인이 성공했는지 확인하십시오.
기능 파일 :
위의 시나리오는 다음과 같은 기능 파일 형식으로 작성할 수 있습니다.
특색: 테스트중인 애플리케이션에 로그인합니다.
대본: 응용 프로그램에 로그인하십시오.
주어진 Chrome 브라우저를 열고 애플리케이션을 시작합니다.
언제 사용자는 사용자 이름 필드에 사용자 이름을 입력합니다.
과 사용자는 암호 필드에 암호를 입력합니다.
언제 사용자가 로그인 버튼을 클릭합니다.
단계 정의 파일 :
위의 기능에서 파일은 아래와 같이 해당 단계 정의 파일에 매핑 될 수 있습니다. 기능 파일과 단계 정의 파일 간의 링크를 제공하려면 테스트 실행기 파일을 생성해야합니다.
다음은 기능 파일에 따른 단계 정의 파일의 표현입니다.
특정 상황에 대처하는 방법
package com.sample.stepdefinitions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import cucumber.api.java.en.And; import cucumber.api.java.en.Given; import cucumber.api.java.en.When; public class StepDefinition { WebDriver driver; @Given('^Open Chrome browser and launch the application$') public void openBrowser() { driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get('www.facebook.com'); } @When('^User enters username onto the UserName field$') public void enterUserName() { driver.findElement(By.name('username')).sendKeys('test@demo.com'); } @And('^User enters password onto the Password field$') public void enterPassword() { driver.findElement(By.name('password')).sendKeys('test@123'); } @When('^User clicks on Login button$') public void clickOnLogin() { driver.findElement(By.name('loginbutton')).click(); } }
TestRunner 클래스는 기능 파일과 단계 정의 파일 간의 링크를 제공하는 데 사용됩니다. 아래는 TestRunner 클래스가 어떻게 보이는지에 대한 샘플 표현입니다. TestRunner 클래스는 일반적으로 클래스 정의가없는 빈 클래스입니다.
Package com.sample.TestRunner import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features='Features',glue={'StepDefinition'}) public class Runner { }
기능 파일 및 단계 정의 파일을 실행하려면 TestRunner 클래스 파일을 실행해야합니다.
예
다음은 다양한 시나리오의 기능 파일 표현입니다.
예 1 :
로그인 페이지에서 사용자 이름과 암호를 사용할 수 있는지 확인하려면 :
특색: 로그인 페이지에서 사용자 이름 및 암호 필드가 표시되는지 확인합니다.
대본: 사용자 이름 및 암호 필드의 표시를 확인합니다.
주어진 사용자가 Firefox 브라우저를 열고 테스트중인 애플리케이션으로 이동합니다.
언제 사용자가 로그인 페이지로 이동합니다.
그때 로그인 페이지에서 사용자 이름 필드가 표시되는지 확인합니다.
과 로그인 페이지에서 비밀번호 필드의 표시를 확인하십시오.
예 2 :
다음은 Cucumber Gherkin의 시나리오 개요 키워드에 대한 예입니다.
특색: 여러 테스트 데이터 세트에 대한 로그인이 성공했는지 확인하십시오.
시나리오 개요 : 여러 테스트 데이터 세트에 대한 로그인이 성공했는지 확인합니다.
주어진 Chrome 브라우저를 열고 애플리케이션을 시작합니다.
언제 사용자가 UserName 필드에 입력합니다.
과 사용자가 암호 필드에 입력합니다.
언제 사용자가 로그인 버튼을 클릭합니다.
예 :
| 사용자 이름 | 암호 |
| user1 | password1 |
| user2 | password2 |
결론
- BDD는 단순한 일반 텍스트 표현으로 응용 프로그램의 기능을 이해하는 방법입니다.
- Cucumber는 Behavior Driven Development를 사용하여 애플리케이션의 승인 테스트를 작성하는 도구입니다. 다양한 프로젝트 이해 관계자 간의 커뮤니케이션 격차를 해소하는 데 사용됩니다.
- Cucumber의 주요 용도는 비 기술적 사용자의 기능 파일 사용을 이해하는 단순성에 있습니다.
Gherkin 언어를 사용하여이 Cucumber 도구를 사용해보기에는 아직 늦지 않았습니다.
추천 도서
- Geb 자습서-Geb 도구를 사용한 브라우저 자동화 테스트
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Cucumber Tool과 Selenium을 사용한 자동화 테스트 – Selenium Tutorial # 30
- 자동화 테스트 란 무엇입니까 (테스트 자동화 시작을위한 궁극적 인 가이드)
- Spock 자습서 : Spock 및 Groovy로 테스트
- 최고의 소프트웨어 테스트 도구 2021 (QA 테스트 자동화 도구)
- 파괴 테스트 및 비파괴 테스트 자습서
- 기능 테스트 대 비 기능 테스트