오이-퀵 가이드

소프트웨어 테스트를 더 잘 활용하기 위해 조직은 오늘날 한 발짝 더 나아가고 있습니다. 개발이 진행되는 동안 중요한 수용 테스트 시나리오를 구현합니다. 이 접근 방식은 일반적으로Behavior Driven Development (BDD).

Behavior Driven Development는 개발자와 고객의 관점에서 테스트 스크립트를 만들 수있는 기회를 제공합니다. 따라서 처음에는 개발자, 프로젝트 관리자, QA, 사용자 승인 테스터 및 제품 소유자 (주주)가 모두 모여이 소프트웨어 / 애플리케이션이 성공적이라고 부르기 위해 어떤 테스트 시나리오를 통과해야하는지 브레인 스토밍합니다. 이러한 방식으로 그들은 일련의 테스트 시나리오를 제시합니다. 이 모든 테스트 스크립트는 간단한 영어로되어 있으므로 문서화의 목적으로도 사용됩니다.

사용자 인증 기능을 개발중인 경우 다음은 성공이라고 부르기 위해 통과해야하는 몇 가지 주요 테스트 시나리오가 될 수 있습니다.

  • 사용자는 올바른 사용자 이름과 올바른 암호로 로그인 할 수 있어야합니다.

  • 사용자는 잘못된 사용자 이름과 올바른 암호로 로그인 할 수 없어야합니다.

  • 사용자는 올바른 사용자 이름과 잘못된 암호로 로그인 할 수 없어야합니다.

작동 원리

코드가 준비되면 테스트 스크립트도 준비됩니다. 코드는 BDD에 정의 된 테스트 스크립트를 통과해야합니다. 그렇지 않으면 코드 리팩토링이 필요합니다. 정의 된 테스트 스크립트를 성공적으로 실행 한 후에 만 ​​코드가 고정됩니다.

이것은 매우 단순한 개념이지만이 개념을 구현하기 위해 필요한 것입니다. 대답은 BDD (Behavior Driven Development) 프레임 워크입니다. Cucumber는 행동 기반 개발을 지원하는 오픈 소스 도구 중 하나입니다. 더 정확하게 말하자면 Cucumber는 일반 영어 텍스트로 구동되는 테스트 프레임 워크로 정의 할 수 있습니다. 문서화, 자동화 된 테스트 및 개발 지원 기능을 모두 하나로 통합합니다.

그래서 오이는 무엇을합니까? 다음 단계에서 설명 할 수 있습니다-

Cucumber는 기능 파일 (나중에 소개 될)에서 일반 영어 텍스트 (Language Gherkin –이 튜토리얼의 뒷부분에 소개됨)로 작성된 코드를 읽습니다.

단계 정의에서 각 단계의 정확한 일치를 찾습니다 (코드 파일-자습서 뒷부분에서 제공되는 세부 정보).

실행될 코드는 다음과 같은 다른 소프트웨어 프레임 워크 일 수 있습니다. Selenium, Ruby on Rails, 등. 모든 BDD 프레임 워크 도구가 모든 도구를 지원하는 것은 아닙니다.

이것이 Cucumber가 다른 프레임 워크에 비해 인기있는 이유가되었습니다. JBehave, JDave, Easyb, 기타

Cucumber는 다음과 같은 12 개 이상의 다양한 소프트웨어 플랫폼을 지원합니다.

  • Ruby on Rails
  • Selenium
  • PicoContainer
  • 스프링 프레임 워크
  • Watir

다른 도구에 비해 오이의 장점

  • Cucumber는 Java.net 및 Ruby와 같은 다양한 언어를 지원합니다.

  • 비즈니스와 기술 언어를 연결하는 다리 역할을합니다. 일반 영어 텍스트로 테스트 케이스를 작성하여이를 수행 할 수 있습니다.

  • 코드에 대한 지식없이 테스트 스크립트를 작성할 수 있으며 프로그래머가 아닌 사람도 참여할 수 있습니다.

  • 다른 도구와 달리 종단 간 테스트 프레임 워크의 목적을 제공합니다.

  • 간단한 테스트 스크립트 아키텍처로 인해 Cucumber는 코드 재사용 성을 제공합니다.

이 장에서는 Windows Machine에서 Selenium WebDriver 및 Java를 사용하는 Cucumber의 환경 설정을 살펴 봅니다.

환경 설정을위한 전제 조건

다음은 설정에 필요한 전제 조건입니다.

자바

Why we need− Java는 강력한 프로그래밍 언어입니다. Cucumber는 실행을 위해 Java 플랫폼을 지원합니다.

How to install

Step 1 − 다음 링크에서 jdk 및 jre 다운로드 http://www.oracle.com/technetwork/java/javase/downloads/index.html

Step 2 − 라이센스 계약에 동의합니다.

Step 3 − JDK 및 JRE를 설치합니다.

Step 4 − 다음 스크린 샷과 같이 환경 변수를 설정합니다.

Why we need− Eclipse는 통합 개발 환경 (IDE)입니다. 여기에는 환경을 사용자 정의하기위한 기본 작업 공간과 확장 가능한 플러그인 시스템이 포함되어 있습니다.

How to install

Step 1 − JAVA가 컴퓨터에 설치되어 있는지 확인하십시오.

Step 2 − 다음에서 Eclipse 다운로드 https://eclipse.org/downloads/

Step 3 − 압축을 풀고 Eclipse가 설치됩니다.

메이븐

Why we need− Maven은 주로 Java 프로젝트에 사용되는 빌드 자동화 도구입니다. 소스 코드 생성, 코드 컴파일, jar에 코드 패키징 등과 같은 작업을 수행 할 수있는 공통 플랫폼을 제공합니다. 나중에 소프트웨어 버전이 변경되면 Maven은 그에 따라 테스트 프로젝트를 쉽게 수정할 수있는 방법을 제공합니다.

How to install

Step 1 − 다음 링크에서 Maven 다운로드 − https://maven.apache.org/download.cgi

Step 2 − 파일의 압축을 풀고 위치를 기억하십시오.

Step 3 − 다음 스크린 샷과 같이 MAVEN_HOME 환경 변수를 생성합니다.

Step 4 − 다음 스크린 샷과 같이 경로 변수를 편집하고 Maven을 포함합니다.

Step 5 − Eclipse에서 MAVEN 플러그인을 다운로드합니다.

Step 6 − Eclipse를 엽니 다.

Step 7 − Help → Eclipse Marketplace → Search Maven → Maven Integration for Eclipse → INSTALL로 이동합니다.

Maven으로 Cucumber 구성

Step 1 − Maven 프로젝트를 생성합니다.

  • File → New → Others → Maven → Maven Project → Next로 이동합니다.

  • 그룹 ID를 제공합니다 (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

  • 이슈 ID를 제공합니다 (아티팩트 ID는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다). 마침을 클릭하십시오.

Step 2 − pom.xml을 엽니 다.

  • Eclipse의 왼쪽에있는 패키지 탐색기로 이동합니다.

  • 프로젝트 확장 CucumberTest.

  • 위치하고 있다 pom.xml 파일.

  • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택하고 "텍스트 편집기"로 엽니 다.

Step 3 − 셀레늄에 대한 종속성 추가 : 이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Selenium jar 파일을 Maven에 표시합니다.

  • 열다 pom.xml 편집 모드에있는 경우 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

  • 종속성 태그 내에 종속성 태그 (<dependency> </ dependency>)를 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Step 4 − Cucumber-Java에 대한 종속성 추가 : 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.

  • 종속성 태그를 하나 더 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 5 − Cucumber-JUnit에 대한 종속성 추가 : 중앙 저장소에서 로컬 저장소로 Cucumber JUnit 파일을 다운로드 할 Maven을 나타냅니다.

  • 종속성 태그를 하나 더 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 6 − JUnit에 대한 종속성 추가 : 중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일을 Maven에 표시합니다.

  • 종속성 태그를 하나 더 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 7 − 바이너리를 확인합니다.

  • 한번 pom.xml 성공적으로 편집 되었으면 저장하십시오.

  • 프로젝트 → 정리로 이동-몇 분 정도 걸립니다.

다음 스크린 샷과 같은 Maven 저장소를 볼 수 있습니다.

  • 기능 파일을 만듭니다 (나중에 다룰 예정).

  • 단계 정의 파일을 만듭니다 (나중에 다룰 예정).

  • 테스트를 실행할 JUnit 실행기를 만듭니다 (나중에 다룰 예정).

지금까지 우리는 오이와 그것이하는 일에 대해 이해했습니다. 기능 파일에 정의 된 테스트 스크립트를 실행합니다 (다음 장에서 다룰 예정). 이 실행 기능 파일이 작성되는 언어는 다음과 같습니다.Gherkin. Gherkin은 일반 영어 텍스트 언어로 Cucumber가 테스트 스크립트를 해석하고 실행하는 데 도움이됩니다.

Cucumber가 간단한 영어 텍스트를 지원하고 왜 우리가 별도의 언어 인 Gherkins가 필요한지에 대해 여러 번 논의되었습니다. 대답은 행동 주도 개발의 개념에 있습니다.

앞서 논의한 바와 같이 BDD는 테스트 스크립트를 생성하는 동안 다른 전망을 통합하는 것을 보았습니다. 개발 전망, 비즈니스 전망 등이 될 수 있습니다. 즉, 테스트 스크립트를 개발하는 동안 개발자, 프로젝트 관리자, 제품 소유자 및 테스터와 같은 다른 커뮤니티의 사람들이 필요합니다. 이 사람들은 같은 범주에 속하지 않기 때문에 테스트 스크립트 개념화에 공통 언어를 사용하지 않을 위험이 있습니다. 이것이 Gherkins의 진화 지점이었습니다.

Gherkin은 영어 텍스트로 된 공통 키워드 세트를 제공하는데, 이는 다른 커뮤니티에서 사람들이 사용할 수 있지만 테스트 스크립트 형태로 동일한 출력을 얻을 수 있습니다.

Feature − 소셜 네트워킹 사이트를위한 로그인 기능. Given 저는 소셜 네트워킹 사이트 사용자입니다. When 사용자 이름을 username1로 입력합니다. And password1로 비밀번호를 입력합니다. Then 사이트의 홈 페이지로 리디렉션되어야합니다.

위에서 언급 한 시나리오는 사용자 로그인이라는 기능입니다. 굵게 강조 표시된 모든 단어는 Gherkin 키워드입니다.

몇 가지 다른 키워드의 예-

  • Background
  • But
  • *
  • 시나리오 개요
  • Examples

Gherkin은 단계 ​​정의 파일 (나중에 다룰 예정)에 작성된 각 단계를 구문 분석합니다. 따라서 기능 파일과 단계 정의 파일 (나중에 다룰)에 언급 된 단계가 일치해야합니다.

패키지 탐색기의 Maven 종속성 폴더에서 Gherkin jar를 찾을 수 있습니다. 다른 오이 항아리와 함께 다운로드됩니다. 다음 스크린 샷처럼 보일 것입니다.

Gherkin에 대한 또 다른 흥미로운 사실은 영어뿐만 아니라 프랑스어, 핀란드어, 인도네시아어, 헝가리어, 힌디어, 우르두어, 구자라트 어 등과 같은 많은 다른 모국어를 지원한다는 것입니다.

Feature독립형 단위 또는 프로젝트의 기능으로 정의 할 수 있습니다. 소셜 네트워킹 사이트의 매우 일반적인 예를 들어 보겠습니다. 이 제품 / 프로젝트의 기능은 어떻게 생겼습니까? 몇 가지 기본 기능을 다음과 같이 결정할 수 있습니다.

  • 소셜 네트워킹 사이트에서 사용자를 만들고 제거합니다.

  • 소셜 네트워킹 사이트에 대한 사용자 로그인 기능.

  • 소셜 네트워킹 사이트에서 사진 또는 비디오 공유.

  • 친구 요청을 보내는 중입니다.

  • Logout.

이제 우리가 Cucumber에 대해 이야기 할 때 테스트중인 제품의 각각의 독립적 인 기능을 기능이라고 할 수 있음이 분명합니다. 나중에 테스트를 시작할 때 테스트 스크립트를 파생하기 전에 테스트 할 기능을 결정하는 것이 가장 좋습니다.

기능에는 일반적으로 해당 기능에 대해 테스트 할 시나리오 목록이 포함됩니다. 기능, 기능에 대한 설명 및 테스트 할 시나리오를 저장하는 파일은Feature File. 다음 장에서 기능 파일에 대해 자세히 살펴 보겠습니다.

Gherkins에서 테스트중인 기능을 나타내는 키워드는 "Feature"입니다. 권장되는 모범 사례는 기능 파일의 기능 제목 아래에 기능에 대한 간단한 설명을 작성하는 것입니다. 이것은 좋은 문서의 필요성도 충족시킬 것입니다.

Feature − 소셜 네트워킹 사이트를위한 로그인 기능.

사용자 이름과 비밀번호가 정확하다면 사용자는 소셜 네트워킹 사이트에 로그인 할 수 있어야합니다.

사용자 이름과 암호가 잘못된 경우 사용자에게 오류 메시지가 표시되어야합니다.

사용자 이름과 비밀번호가 올바른 경우 사용자는 홈 페이지로 이동해야합니다.

기능 파일

Cucumber 테스트가 작성된 파일은 다음과 같이 알려져 있습니다. feature files. 테스트중인 각 기능에 대해 별도의 기능 파일이있는 것이 좋습니다. 기능 파일의 확장자는 ".feature"여야합니다.

필요한만큼 많은 기능 파일을 만들 수 있습니다. 체계적인 구조를 가지려면 각 기능에 하나의 기능 파일이 있어야합니다.

예를 들어-

Sr. 아니요 특색 기능 파일 이름
1 사용자 로그인 userLogin.feature
2 게시물 공유 sharePost.feature
계정 생성 createAccount.feature
4 계정 삭제 deleteAccount.feature

기능 이름, 기능 파일 이름에 사용할 명명 규칙은 개인의 선택에 따라 다릅니다. Cucumber에는 이름에 대한 기본 규칙이 없습니다.

간단한 기능 파일은 다음 키워드 / 부품으로 구성됩니다.

  • Feature − 테스트중인 기능의 이름.

  • Description (선택 사항)-테스트중인 기능에 대해 설명합니다.

  • Scenario − 테스트 시나리오는 무엇입니까?

  • Given − 테스트 단계가 실행되기 전 전제 조건.

  • When − 다음 단계를 실행하기 위해 일치해야하는 특정 조건.

  • Then − WHEN에 언급 된 조건이 충족되면 어떻게됩니까?

Feature − 소셜 네트워킹 사이트에서 사용자 로그인.

사용자는 사용자 이름과 비밀번호가 정확할 때 소셜 네트워킹 사이트에 로그인 할 수 있어야합니다.

사용자 이름과 비밀번호가 올바르지 않으면 사용자에게 오류 메시지가 표시되어야합니다.

사용자 이름과 암호가 올바른 경우 사용자는 홈 페이지로 이동해야합니다.

Outline − 소셜 네트워킹 사이트를위한 로그인 기능.

주어진 사용자가 Facebook으로 이동합니다. 사용자 이름을 "<username>"으로 입력하고 Password를 "<password>"로 입력 할 때. 그러면 로그인이 실패해야합니다.

| username  | password  |
| username1 | password1 |

* AND 키워드는 두 조건 간의 연결을 표시하는 데 사용됩니다. AND 다음과 같은 다른 키워드와 함께 사용할 수 있습니다. GIVEN, WHENTHEN.

기능 파일에 작성된 로직 세부 사항이 없습니다.

단계 정의

테스트 시나리오가 정의 된 기능 파일이 준비되었습니다. 그러나 이것은 완료된 작업이 아닙니다. Cucumber는 기능 파일에 설명 된 특정 시나리오에 대해 어떤 코드가 실행되어야하는지 실제로 알지 못합니다.

이것은 중간 단계 정의 파일이 필요합니다. 단계 정의 파일은 실행할 함수 코드와 함께 기능 파일에 정의 된 시나리오의 각 단계 간의 매핑을 저장합니다.

따라서 이제 Cucumber가 기능 파일에 언급 된 시나리오의 단계를 실행할 때 단계 정의 파일을 스캔하고 어떤 함수가 호출되어야하는지 파악합니다.

단계 정의 파일의 예

public void goToFacebook() { 
   driver = new FirefoxDriver(); 
   driver.navigate().to("https://www.facebook.com/"); 
} 
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$" public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then"^login should be unsuccessful$" 
public void validateRelogin() { 
   if(driver.getCurrentUrl().equalsIgnoreCase(
      "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
         System.out.println("Test Pass");
   } else { 
      System.out.println("Test Failed"); 
   } 
   driver.close(); 
}

따라서 각 기능, 각 테스트 단계 (예 : GIVEN / THEN / WHEN)에서 실행하려는 코드가 무엇이든 단계 정의 파일 내에 작성할 수 있습니다. 각 단계에 대해 코드 / 기능이 정의되었는지 확인하십시오.

이 함수는 테스트 단계를 자동화하기 위해 Java 및 Selenium 명령을 모두 사용할 수있는 Java 함수일 수 있습니다.

Scenario핵심 작은 오이 구조 중 하나입니다. 모든 시나리오는 키워드 "시나리오 :"(또는 현지화 된 시나리오)로 시작하고 그 뒤에 선택적 시나리오 제목이옵니다. 각 기능에는 하나 이상의 시나리오가있을 수 있으며 모든 시나리오는 하나 이상의 단계로 구성됩니다. 시나리오의 매우 간단한 예는 다음과 같습니다.

Scenario − 도움말 기능을 확인합니다.

주어진 사용자가 Facebook으로 이동합니다.

사용자가 도움말을 클릭하면 도움말 페이지가 열립니다.

테스트 시나리오를 두 번 이상 실행해야하는 경우를 고려하십시오. 모든 유형의 구독 보유자에 대해 로그인 기능이 작동하는지 확인해야한다고 가정 해 보겠습니다. 이를 위해서는 로그인 기능 시나리오를 여러 번 실행해야합니다. 코드를 다시 실행하기 위해 동일한 단계를 복사하여 붙여 넣는 것은 현명한 생각이 아닌 것 같습니다. 이를 위해 Gherkin은 시나리오 개요 인 구조를 하나 더 제공합니다.

시나리오 개요는 시나리오 구조와 유사합니다. 유일한 차이점은 여러 입력을 제공한다는 것입니다. 다음 예에서 볼 수 있듯이 테스트 케이스는 동일하고 반복 할 수 없습니다. 하단에는“Username”및“Password”변수에 대한 여러 입력 값이 제공되었습니다. 실제 테스트를 실행하는 동안 Cucumber는 제공된 입력 값으로 변수를 대체하고 테스트를 실행합니다. pass-1이 실행되면 다른 입력 값으로 두 번째 반복을 위해 테스트가 다시 실행됩니다. 이러한 변수 또는 자리 표시자는 작은 오이 문으로 언급 할 때 "<>"로 표시 할 수 있습니다.

Scenario Outline− 소셜 네트워킹 사이트를위한 로그인 기능. 주어진 사용자가 Facebook으로 이동합니다.

사용자가 사용자 이름을 "<username>"으로, 암호를 "<password>"로 사용하여 로그인하면 로그인이 성공해야합니다.

| username | password  | 
| user1    | password1 | 
| user2    | password2 |

Cucumber 시나리오를 현명하게 정의하기위한 몇 가지 팁과 요령이 있습니다.

  • 각 단계는 명확하게 정의되어 독자에게 혼란을주지 않도록해야합니다.

  • 테스트 시나리오를 반복하지 마십시오. 필요한 경우 시나리오 개요를 사용하여 반복을 구현하십시오.

  • 여러 시나리오 및 시나리오 개요 내에서 사용할 수있는 방식으로 테스트 단계를 개발합니다.

  • 가능한 한 각 단계를 완전히 독립적으로 유지하십시오. 예 : "사용자가 로그인 된 경우". 이것은 두 단계로 나눌 수 있습니다

    • 사용자가 사용자 이름을 입력하면
    • 로그인을 클릭합니다.

Annotation특정 의미를 포함하는 미리 정의 된 텍스트입니다. 이를 통해 컴파일러 / 통역사가 실행시 수행해야 할 작업을 알 수 있습니다. 오이에는 다음과 같은 몇 가지 주석이 있습니다.

  • Given

    • 테스트를 실행하기위한 전제 조건을 설명합니다.

    • 예-GIVEN I am a Facebook user

  • When

    • 모든 테스트 시나리오 실행에 대한 트리거 지점을 정의합니다.

    • 예- "<사용자 이름>"을 입력 할 때

  • Then

    • 그런 다음 테스트를 실행할 예상 결과를 보유합니다.

    • 예-THEN 로그인이 성공해야합니다.

  • And

    • 두 문 사이에 논리적 AND 조건을 제공합니다. AND는 GIVEN, WHEN 및 THEN 문과 함께 사용할 수 있습니다.

    • 예- "<username>"을 입력하고 "<password>"를 입력 할 때

  • But

    • 두 문 사이의 논리적 OR 조건을 나타냅니다. OR는 GIVEN, WHEN 및 THEN 문과 함께 사용할 수 있습니다.

    • 예-THEN 로그인이 성공해야합니다. 그러나 홈페이지가 누락되어서는 안됩니다.

  • Scenario

    • 테스트중인 시나리오에 대한 세부 정보는 키워드 "Scenario :"뒤에 캡처해야합니다.

    • 예-

      대본:

      저는 Facebook 사용자입니다.

      내가 입력 할 때

      그리고 나는 나의

      그런 다음 로그인이 성공해야합니다.

      그러나 홈페이지가 누락되어서는 안됩니다.

  • Scenario Outline − (나중에 다룰 예정)

  • Examples − (나중에 다룰 예정)

  • Background

    • 배경에는 일반적으로 각 시나리오를 실행하기 전에 무엇을 설정해야하는지에 대한 지침이 있습니다. 그러나 "Before"후크 이후에 실행됩니다 (나중에 다룰 예정). 따라서 이것은 웹 브라우저를 설정하거나 데이터베이스 연결을 설정하려는 경우 코드에 사용하기에 이상적입니다.

      • 예-

        배경:

        Facebook 홈페이지로 이동합니다.

예제 시나리오

주석을 더 잘 이해하기 위해 시나리오를 자동화합시다.

Step 1

다음과 같은 Maven 테스트 프로젝트를 만듭니다. AnnotationTest.

  • File → New → Others → Maven → Maven Project → Next로 이동합니다.

  • 그룹 ID를 제공합니다 (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

  • 이슈 ID를 제공합니다 (아티팩트 ID는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다).

  • 마침을 클릭하십시오.

  • 열다 pom.xml −

    • Eclipse의 왼쪽에있는 패키지 탐색기로 이동합니다.

    • AnnotationTest 프로젝트를 펼치십시오.

    • pom.xml 파일을 찾습니다.

    • 마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.

  • Selenium에 대한 종속성 추가-이것은 Maven을 나타내며, Selenium jar 파일이 중앙 저장소에서 로컬 저장소로 다운로드됩니다.

    • Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

    • 종속성 태그 내에 종속성 태그 (<dependency> </ dependency>)를 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Cucumber-Java에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Cucumber-JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 Cucumber JUnit 파일을 다운로드 할 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • 바이너리를 확인합니다.

    • pom.xml이 성공적으로 편집되면 저장합니다.

    • 프로젝트 → 정리로 이동-몇 분 정도 걸립니다.

Step 2

아래에 Annotation이라는 패키지를 만듭니다. src/test/java

  • 새로 생성 된 프로젝트를 선택합니다.

  • 마우스 오른쪽 버튼을 클릭하고 '새로 만들기'를 선택합니다.

  • 옵션을 '패키지'로 선택합니다.

  • '주석'으로 이름을 지정하십시오.

  • 저장해.

Step 3

다음과 같은 기능 파일을 만듭니다. annotation.feature.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 다음과 같은 이름을 지정하십시오. outline.feature.

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

Feature: annotation 
#This is how background can be used to eliminate duplicate steps 

Background: 
   User navigates to Facebook Given 
   I am on Facebook login page 

#Scenario with AND 
Scenario: 
   When I enter username as "TOM"
   And I enter password as "JERRY" 
   Then Login should fail 

#Scenario with BUT 
Scenario: 
   When I enter username as "TOM" 
   And I enter password as "JERRY" 
   Then Login should fail 
   But Relogin option should be available

Step 4

단계 정의 파일을 만듭니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일 이름을 다음과 같이 지정하십시오. annotation.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package Annotation; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class annotation { 
   WebDriver driver = null; 
   @Given("^I am on Facebook login page$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter username as \"(.*)\"$") 
   public void enterUsername(String arg1) {   
      driver.findElement(By.id("email")).sendKeys(arg1); 
   }
	
   @When ("^I enter password as \"(.*)\"$") public void enterPassword(String arg1) { driver.findElement(By.id("pass")).sendKeys(arg1); driver.findElement(By.id("u_0_v")).click(); } @Then("^Login should fail$") 
   public void checkFail() {  
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test1 Pass"); 
      } else { 
         System.out.println("Test1 Failed"); 
      } 
      driver.close(); 
   } 
	
   @Then("^Relogin option should be available$") 
   public void checkRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test2 Pass"); 
      } else { 
         System.out.println("Test2 Failed"); 
      } 
      driver.close(); 
   }
}

Step 5

러너 클래스 파일을 만듭니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 다음과 같은 이름을 지정하십시오. runTest.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package Annotation; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { 
}

Step 6

옵션을 사용하여 테스트 실행-

  • 패키지 탐색기에서 runTest.java 파일을 선택하십시오.

  • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택합니다. ‘Run as’

  • JUnit 테스트를 선택하십시오.

이 클래스 파일을 실행할 때 다음 사항을 관찰 할 수 있습니다.

  • Facebook은 새 Firefox 웹 브라우저 인스턴스에서 열립니다.

  • TOM은 사용자 이름 필드에 입력으로 전달됩니다.

  • JERRY는 암호 필드에 입력으로 전달됩니다.

  • 로그인이 클릭됩니다.

  • 로그인 실패에 대한 메시지가 브라우저에 표시됩니다.

  • 콘솔에서 "Test Pass"가 인쇄 된 것을 볼 수 있습니다.

  • 단계 결과 1. ~ 5. 사용자 이름은 ""로, 암호는 ""로 다시 실행됩니다.

Scenario outline기본적으로 변수 / 키워드를 테이블의 값으로 대체합니다. 테이블의 각 행은 시나리오로 간주됩니다.

Facebook 로그인 기능의 동일한 예를 계속해 보겠습니다. 지금까지 한 가지 시나리오를 실행했습니다. 올바른 사용자 이름을 제공하면 로그인이 성공합니다. 이제 사용자 이름, 이메일 주소 또는 전화 번호의 세 가지 가능한 입력 유형 모두에 대해 로그인이 성공했는지 확인한다고 가정합니다. 이를 달성하려면 세 가지 시나리오를 작성해야합니다. 각 시나리오는 입력 유형에 따라 달라지며 로그인이 성공합니다. 이 경우 시나리오는 다음과 같습니다.

Scenario:

사용자가 Facebook으로 이동하는 경우

올바른 사용자 이름과 비밀번호를 입력하면

그러면 로그인이 성공해야합니다

Scenario:

사용자가 Facebook으로 이동하는 경우

정확한 이메일 주소와 비밀번호를 입력했을 때

그러면 로그인이 성공해야합니다

Scenario:

사용자가 Facebook으로 이동하는 경우

정확한 전화 번호와 비밀번호를 입력하면

그러면 로그인이 성공해야합니다

여기서 자세히 살펴보면 위의 세 가지 시나리오에 대해 설명이 동일하고 입력 매개 변수 (사용자 이름 / 이메일 주소 / 전화 번호) 만 변경됩니다. 그것이 시나리오 개요의 중요성이 드러나는 곳입니다.

시나리오 개요가있는 시나리오를 정의 할 때 하나의 테스트 시나리오를 지정할 수 있으며 그 하단에 여러 입력을 제공 할 수 있습니다. 시나리오는 제공된 입력 수만큼 실행됩니다.

시나리오 개요의 예를 만들어 보겠습니다.

Step 1 − 다음과 같은 이름의 Maven 테스트 프로젝트를 생성합니다. ScenarioOutlineTest

  • File → New → Others → Maven → Maven Project → Next로 이동합니다.

  • 그룹 ID를 제공합니다 (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

  • 이슈 ID를 제공합니다 (아티팩트 ID는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다).

  • 마침을 클릭하십시오.

  • 열다 pom.xml

    • Eclipse의 왼쪽에있는 패키지 탐색기로 이동합니다.

    • CucumberTest 프로젝트를 확장하십시오.

    • pom.xml 파일을 찾습니다.

    • 마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.

  • Selenium에 대한 종속성 추가-이것은 Maven을 나타내며, Selenium jar 파일이 중앙 저장소에서 로컬 저장소로 다운로드됩니다.

    • Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

    • 종속성 태그 내에 종속성 태그 (<dependency> </ dependency>)를 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Cucumber-Java에 대한 종속성 추가 : 이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Cucumber-JUnit에 대한 종속성 추가 : 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber JUnit 파일을 Maven에 표시합니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • JUnit에 대한 종속성 추가-중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일 인 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • JUnit에 대한 종속성 추가-중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일 인 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • 바이너리를 확인합니다.

    • pom.xml이 성공적으로 편집되면 저장합니다.

    • 프로젝트 → 정리로 이동-몇 분 정도 걸립니다.

Step 2 − 아래에 "outline"이라는 패키지를 만듭니다. src/test/java

Step 3 − 이름이 지정된 기능 파일을 생성합니다. “outline.feature”

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 다음과 같은 파일 이름을 지정하십시오. “outline.feature”

    • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

      Feature − 시나리오 개요

      Scenario Outline − 소셜 네트워킹 사이트를위한 로그인 기능.

      사용자가 Facebook으로 이동하는 경우

      사용자 이름을 "<username>"으로 입력하고 Password를 "<password>"로 입력하면

      그런 다음 로그인이 실패해야합니다.

Example

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note− 여기서 주석 예제는 시나리오 실행시 제공되는 입력 범위를 설명합니다. 제공된 각 입력에 대해 테스트 시나리오가 실행됩니다. 따라서 주어진 예에서 테스트 시나리오는 세 번 실행됩니다.

Step 4 − 단계 정의 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일 이름을 다음과 같이 지정하십시오. stepdefinition.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package Outline;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
      "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   }    
}

Note− 위 코드에서 우리는 두 개의 입력 인수를 갖는 함수를 정의해야합니다. 따라서 예제 태그에 제공된 각 입력 세트에 대해 GIVEN, WHEN 및 THEN의 세트가 실행됩니다.

Step 5 − 러너 클래스 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 다음과 같은 파일 이름을 지정하십시오. runTest.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • 옵션을 사용하여 테스트 실행-

    • 고르다 runTest.java 패키지 탐색기의 파일.

    • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택합니다. ‘Run as’.

    • JUnit 테스트를 선택하십시오.

이 클래스 파일을 실행할 때 다음 사항을 관찰합니다.

  • Facebook은 새 Firefox 웹 브라우저 인스턴스에서 열립니다.

  • Username1 및 password1은 사용자 이름 및 암호 필드에 대한 입력으로 전달됩니다.

  • 로그인이 클릭됩니다.

  • 로그인 실패에 대한 메시지가 브라우저에 표시됩니다.

  • 콘솔에서 "Test Pass"가 인쇄 된 것을 볼 수 있습니다.

  • 사용자 이름 2 및 암호 2에 대해 단계 결과 1 ~ 5가 다시 실행됩니다.

간단히 말해서 시나리오가 변경되지 않고 데이터 값만 변경되는 경우 시나리오 개요 데이터 테이블을 사용하는 것이 좋습니다.

기능 파일에 하나, 둘 또는 다섯 개의 시나리오 만 있으면 간단 해 보입니다. 그러나 실제 생활에서는 발생하지 않습니다. 테스트중인 각 기능에 대해 단일 기능 파일에 10 개, 20 개 또는 더 많은 수의 시나리오가있을 수 있습니다. 다른 목적 (연기 테스트 / 회귀 테스트), 다른 전망 (개발자 / QA / BA), 다른 상태 (실행 준비 / 진행중인 작업) 등을 나타낼 수 있습니다. 이러한 대량 실행을 관리하는 방법은 무엇입니까?

이를 위해 Cucumber는 기능 파일의 태그를 사용하여 시나리오 실행을 구성하는 방법을 이미 제공했습니다. 유용한 태그로 각 시나리오를 정의 할 수 있습니다. 나중에 runner 파일에서 Cucumber가 실행할 특정 태그 (시나리오와 같이)를 결정할 수 있습니다. 태그는 "@"로 시작합니다. "@"뒤에는 태그를 정의하는 관련 텍스트가있을 수 있습니다. 예를 들어 이것을 이해합시다.

기능 파일에 두 개 이상의 시나리오가 있다고 가정합니다. 연기 테스트의 일부로 하나의 시나리오 만 실행하려고합니다. 따라서 첫 번째는 해당 시나리오를 식별하는 것이고 두 번째는 시나리오 시작 부분에 "@SmokeTest"텍스트로 태그를 지정하는 것입니다. 자세히 살펴 보겠습니다.

Step 1 − 다음과 같은 Maven 프로젝트를 생성합니다. cucumberTag.

Step 2− 이름이 지정된 패키지 생성 cucumberTag 아래에 src/test/java

Step 3− 이름이 지정된 기능 파일을 생성합니다. cucumberTag.feature.

파일 내에 다음 텍스트를 작성하고 저장하십시오. 이 기능 파일에는 하나만 다음으로 표시된 두 가지 시나리오가 포함되어 있습니다.SmokeTest 꼬리표.

Feature − 오이 태그

Scenario Outline − 소셜 네트워킹 사이트를위한 로그인 기능.

사용자가 Facebook으로 이동하는 경우

사용자 이름을 "<username>"으로 입력하고 Password를 "<password>"로 입력하면

그런 다음 로그인이 실패해야합니다.

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

# 다음 시나리오는 SmokeTest로 태그가 지정되었으며 실행되어야합니다. 안녕하세요.

Scenario:

사용자가 Facebook으로 이동하는 경우

사용자 이름을 "<>"로 입력하고 암호를 "<>"로 입력하면

그런 다음 사용자는 로그인 재시 도로 리디렉션되어야합니다.

Step 4 − 단계 정의 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 다음과 같은 이름을 지정하십시오. cucumberTag.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package cucumberTag;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberTag { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") public void validateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } @Then("^User should be redirected to login retry$") 
   public void loginRetry() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

Step 5 − 러너 클래스 파일을 생성합니다.

  • 다음과 같은 러너 클래스를 만듭니다. runTest.java 패키지 내부.

  • 다음 코드를 작성하십시오.

  • 파일을 저장하십시오.

package cucumberTag; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • 테스트 옵션을 실행하십시오.

  • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택합니다. ‘Run as’.

  • JUnit 테스트를 선택하십시오.

이 클래스 파일을 실행할 때 다음 사항을 관찰합니다.

  • Facebook은 새 Firefox 웹 브라우저 인스턴스에서 열립니다.

  • 사용자 이름 및 비밀번호 필드에 값이 제공되지 않습니다.

  • 로그인이 클릭됩니다.

  • 로그인 재시도 페이지가로드됩니다.

기능 파일 내에서 태그를 정의하는 데 제한이 없습니다. 필요에 따라 사용할 태그와 실행할 시나리오를 도출 할 수 있습니다.

주로 두 가지 유형의 태그가 있습니다.

  • Default tag− 기본 태그에는 미리 정의 된 의미가 있습니다. 예 @ Dev, @ Ignore

  • Custom tag − 사용자 정의 태그는 태그 정의에 적합한 텍스트를 선택할 수있는 완전한 유연성을 제공합니다.

기능 수준에서 태그를 정의 할 수도 있습니다. 기능 수준에서 태그를 정의하면 해당 기능 파일 내의 모든 시나리오가 해당 태그를 상속하는지 확인합니다. 시나리오의 특성에 따라 단일 기능에 대해 둘 이상의 태그를 사용할 수 있습니다. Cucumber가 적절한 호출을 찾을 때마다 특정 시나리오가 실행됩니다.

Cucumber는 또한 태그 선택을 반대로하는 방법을 제공합니다. 25 개의 정의 된 시나리오 중 10 개는 연기 테스트로 표시됩니다. 회귀 테스트 시나리오 만 실행하면됩니다.

이를 위해 JUnit 러너 클래스에서 "~"를 사용하여 연기 테스트 시나리오를 제외 할 수 있습니다. 다음과 같이 보일 것입니다.

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, 
   tags = {"~@SmokeTest"})
	
public class runTest { }

여러 태그를 정의하는 동안 논리적 또는 / 및 논리적 및 작동을 정의 할 수도 있습니다.

  • 논리 또는 러너 클래스 정의- @dev,@wip −이 태그와 일치하는 시나리오를 실행해야한다고합니다.

  • 논리 또는 러너 클래스 정의- [@dev,~@wip] − 이 두 태그와 일치하는 시나리오를 실행해야한다고 말합니다.

자동화 작업을하는 동안 다양한 시나리오에 직면 할 수 있습니다. 각 시나리오는 서로 다른 의미와 요구를 전달합니다.

처음부터 우리는 소셜 네트워킹 사이트에 대한 로그인 기능의 예를 들어 왔습니다. 여기서 두 개의 입력 매개 변수를 전달했습니다. 더 많은 가능성을 생각해 봅시다. "새 사용자 등록"기능은 어떻습니까? 일반적으로 소셜 네트워킹 사이트에 새 사용자를 등록하는 동안 입력 매개 변수는 무엇입니까? 다음과 같은-

  • 사용자 이름
  • 이메일 주소
  • Password
  • 비밀번호를 다시 입력하세요
  • Birthdate
  • Gender
  • 전화 번호

Feature − 신규 사용자 등록.

잘못된 입력을 전달한 후 새 사용자 등록이 실패했는지 확인하십시오.

새로운 사용자 등록 페이지에 있습니다.

사용자 이름과 이메일 주소를 이메일 주소와 비밀번호로 입력하고 비밀번호와 생년월일, 성별, 전화 번호를 다시 입력하면 사용자 등록이 실패합니다.

언뜻보기에 약간 지저분 해 보입니다. 그렇다면 이러한 입력 청크를 관리하는 더 좋은 방법이 있습니까? 답은 "데이터 테이블"이 될 수 있습니다. 데이터 테이블은 단일 태그에 제공되는 입력 세트입니다. 이 태그는 GIVEN, WHEN 또는 THEN 일 수 있습니다.

데이터 테이블을 사용하여 위의 시나리오를 작성하면 다음과 같습니다.

새 사용자 등록 페이지에있는 경우

페이지에 유효한 데이터를 입력 할 때

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

그러면 사용자 등록이 성공해야합니다.

데이터 테이블의 예를 자동화 해 보겠습니다.

Step 1 − "DataTableTest"라는 이름의 Maven 테스트 프로젝트를 생성합니다.

  • File → New → Others → Maven → Maven Project → Next로 이동합니다.

  • 제공 group Id (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

  • 제공 artifact Id (artifact Id는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다.)

  • 마침을 클릭하십시오.

  • pom.xml 열기-

    • Eclipse의 왼쪽에있는 패키지 탐색기로 이동합니다.

    • CucumberTest 프로젝트를 확장하십시오.

    • pom.xml 파일을 찾습니다.

    • 마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.

  • Selenium에 대한 종속성 추가 : 이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Selenium jar 파일을 Maven을 나타냅니다.

    • Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

    • 종속성 태그 내에 종속성 태그를 만듭니다. (<dependency> </ dependency>).

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Cucumber-Java에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Cucumber-JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 Cucumber JUnit 파일을 다운로드 할 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • 바이너리를 확인합니다.

    • pom.xml이 성공적으로 편집되면 저장합니다.

    • 프로젝트 → 정리로 이동-몇 분 정도 걸립니다.

Step 2 − 이름이 지정된 패키지 생성 dataTable 아래에 src/test/java

Step 3 − 기능 파일을 생성합니다.

  • 다음과 같은 기능 파일을 만듭니다. dataTable패키지 dataTable 내의 .feature (자세한 단계는 시나리오 개요 섹션 참조).

  • 다음 텍스트를 작성하십시오.

    Feature − 데이터 테이블

    잘못된 입력을 전달한 후 새 사용자 등록이 실패했는지 확인하십시오.

    Scenario:

    새 사용자 등록 페이지에있는 경우

    페이지에 잘못된 데이터를 입력 할 때

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

그러면 사용자 등록이 실패합니다.

  • 파일을 저장하십시오.

Step 4 − 단계 정의 파일을 생성합니다.

  • 패키지 dataTable 안에 'dataTable.java'라는 이름의 단계 정의 파일을 만듭니다 (자세한 단계는 시나리오 개요 섹션 참조).

  • 다음 코드를 작성하십시오.

package dataTable; 

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.Select;

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 
import cucumber.table.DataTable; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^I am on new user registration page$") public void goToFacebook() { //Intiate web browser instance. driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter invalid data on the page$") 
   public void enterData(DataTable table){ 
      //Initialize data table 
      List<list> data = table.raw();
      System.out.println(data.get(1).get(1)); 
      
      //Enter data
      driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
      driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
      driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));     
      driver.findElement(By.name("reg_email_confirmation__")).
         sendKeys(data.get(4).get(1)); 
      driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); 
      
      Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); 
      dropdownB.selectByValue("15"); 
		
      Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
      dropdownM.selectByValue("6"); 
		
      Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
      dropdownY.selectByValue("1990"); 
		
      driver.findElement(By.className("_58mt")).click(); 
      // Click submit button driver.findElement(By.name("websubmit")).click(); 
   } 
	
   @Then("^User registration should be unsuccessful$") 
   public void User_registration_should_be_unsuccessful() {
      if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}
  • 파일을 저장하십시오.

Step 5 − 러너 클래스 파일을 생성합니다.

  • 패키지 내에 runTest.java라는 이름의 러너 클래스를 만듭니다.

  • 다음 코드를 작성하십시오.

package dataTable; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • 파일을 저장하십시오.

  • 옵션을 사용하여 테스트 실행

    • 패키지 탐색기에서 runTest.java 파일을 선택하십시오.

    • 마우스 오른쪽 버튼을 클릭하고 다음 계정으로 실행 옵션을 선택합니다.

    • JUnit 테스트를 선택하십시오.

성공적으로 실행되면 다음 사항을 관찰 할 수 있습니다.

  • Facebook 웹 사이트가로드됩니다.

  • 등록 페이지에 데이터가 입력됩니다.

  • 제출 버튼을 클릭합니다.

  • 홈 페이지가 표시되지 않고 콘솔에 "Test Pass"가 기록되는 것을 볼 수 있습니다.

Comment기본적으로 실행이 아닌 문서화 목적의 코드 조각입니다. 더 읽기 쉽고 이해하기 쉽게 만들기 위해 단계 정의 파일이든 기능 파일이든 상관 없습니다. 따라서 파일의 적절한 위치에 주석을 사용 / 입력하는 것이 중요합니다. 이는 코드를 디버깅하는 동안에도 도움이됩니다. Cucumber 기능 파일은 어디에서나 댓글을 달 수 있습니다. 주석을 달려면 "#"기호로 문을 시작하면됩니다.

다른 프로그래밍 언어는 주석을 정의하는 데 다른 규범을 가지고 있습니다. Cucumber가 어떻게 처리하는지 봅시다.

  • 단계 정의 파일-Java를 플랫폼으로 사용하는 경우 "//"로 주석을 표시하십시오.

  • 기능 파일-기능 파일의 경우 주석을 시작하기 전에 #을 입력하면됩니다.

프로그램에서 강조 표시된 텍스트는 코드의 주석을 참조합니다.

Feature: annotation 

#This is how background can be used to eliminate duplicate steps 
Background: 
User navigates to Facebook 
Given I am on Facebook login page 

#Scenario with AND 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 

#Scenario with BUT 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 
But Relogin option should be available

오이 hook코드 워크 플로를 더 잘 관리하고 코드 중복을 줄이는 데 도움이됩니다. 시나리오 나 테스트를 수행 할 수있는 보이지 않는 단계라고 말할 수 있습니다.

이 개념을 더 잘 이해하기 위해 기능 파일과 단계 정의 파일의 예를 살펴 보겠습니다.

주어진 명령문에서 강조 표시된 부분은 실제로 웹 드라이버를 설정하고 웹 드라이버 세션을 종료하는 작업을 수행합니다. 따라서 실제로 "Given statement"의 본질과 관련이 없으며 테스트를위한 설정과 비슷합니다. 또한 더 넓은 전망으로 생각하면이 기능에 대한 여러 시나리오의 경우이 웹 드라이버 설정 및 정리가 주어진 각 명령문으로 실행됩니다. 논리적으로 설정 및 정리를 한 번만 실행하는 것이 좋습니다.

따라서 최적화를 위해 후크를 활용할 수 있습니다. 더 자주 우리는 "전"후크와 "후"후크의 두 가지 유형의 후크를 사용합니다. Before and After 후크 내에 정의 된 메서드 / 기능 / 코드 조각은 시나리오가 통과되거나 실패하더라도 항상 실행됩니다.

이름에서 알 수 있듯이 후크가 다른 테스트 시나리오보다 훨씬 전에 실행되기 전과 모든 시나리오를 실행 한 후 후크가 실행 된 후입니다.

후크는 단계 정의 파일 내에서만 정의됩니다.

전후 후크의 예를 자동화 해 보겠습니다.

Step 1 − Maven 프로젝트를 hookTest로 생성하고 pom.xml에 필요한 종속성을 추가합니다.

Step 2 − 아래에 hookTest라는 이름의 Java 패키지를 생성합니다. src/test/java

Step 3 − 다음과 같은 이름의 단계 정의 파일을 생성합니다. hookTest.java 패키지 아래.

package hookTest; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class hookTest {
   WebDriver driver = null; 
	
   @Before public void setUp(){ 
      driver = new FirefoxDriver(); 
   } 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/");
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
	
   @After public void cleanUp(){ 
      driver.close(); 
   } 
}

Step 4 − 패키지 아래에 "hookTest.feature"라는 이름의 기능 파일을 생성합니다.

Feature − 시나리오 개요.

Scenario Outline − 후크 테스트

사용자가 Facebook으로 이동하는 경우

사용자 이름을 "<username>"으로 입력하고 Password를 "<password>"로 입력하면

그런 다음 로그인이 실패해야합니다.

| username  | password  | 
| username1 | password1 |

Step 5 − 러너 클래스 파일을 생성합니다.

  • 패키지 dataTable 내에 runTest.java로 러너 클래스를 생성합니다 (자세한 단계는 시나리오 개요 섹션 참조).

  • 다음 코드를 작성하십시오.

package hookTest; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})  

public class runTest { }
  • 파일을 저장하십시오.

  • 옵션을 사용하여 테스트 실행-

    • 패키지 탐색기에서 runTest.java 파일을 선택하십시오.

    • 마우스 오른쪽 버튼을 클릭하고 다음 계정으로 실행 옵션을 선택합니다.

    • JUnit 테스트를 선택하십시오.

이제 이것을 실행할 때 다음은 실행 순서입니다.

  • 연결 전-테스트를 ​​실행하기 위해 웹 드라이버 및 기타 전제 조건을 설정합니다.

  • 주어진 진술

  • 언제 문

  • 그런 다음 진술

  • 후크 후-웹 드라이버를 닫고 정리 프로세스를 수행하십시오.

태그가 지정된 후크

또한 특정 태그로만 실행되기 전후 후크를 원하는지 여부를 나타낼 수도 있습니다. Example− @Before ( '@ Web'). 동일한 개념의 태그 논리적 및 / 또는 후크에도 적용될 수 있습니다.Example − @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)

오이는 거의 모든 컴퓨터 시스템을 테스트하는 데 사용할 수 있습니다. 지금까지 Eclipse IDE를 사용하여 테스트를 실행하는 방법을 살펴 보았습니다. 명령 줄 인터페이스를 통해 Cucumber 테스트를 실행할 수있는 또 다른 방법이 있습니다. 그래서 그것을하는 것의 장점은 무엇입니까?

터미널에서 테스트 프레임 워크를 실행하면 코드에 언급 된 실행 구성을 재정의하는 것과 같은 고유 한 이점이 있습니다.

명령 프롬프트로 Cucumber 테스트를 실행하려면 시스템 구성 후 다음 단계를 따르십시오.

Step 1− 이름이 Maven 테스트 프로젝트 생성 commandLine.

  • File → New → Others → Maven → Maven Project → Next로 이동합니다.

  • 그룹 ID를 제공합니다 (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

  • 이슈 ID를 제공합니다 (아티팩트 ID는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다).

  • 마침을 클릭하십시오.

  • pom.xml 열기-

    • Eclipse 왼쪽에있는 패키지 탐색기로 이동합니다.

    • CucumberTest 프로젝트를 확장하십시오.

    • 위치하고 있다 pom.xml 파일.

    • 마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.

  • Selenium에 대한 종속성 추가-이것은 Maven을 나타내며, Selenium jar 파일이 중앙 저장소에서 로컬 저장소로 다운로드됩니다.

    • Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

    • 종속성 태그 내에 종속성 태그를 만듭니다. (<dependency> </ dependency>).

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Cucumber-Java에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Cucumber-JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 Cucumber JUnit 파일을 다운로드 할 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • 바이너리를 확인합니다.

    • pom.xml이 성공적으로 편집되면 저장합니다.

    • 프로젝트 → 청소로 이동-몇 분 정도 걸립니다.

Step 2 − src / test / java 아래에 "outline"이라는 이름의 패키지를 생성합니다.

Step 3 − "commandLine.feature"라는 이름의 기능 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 "commandLine.feature"와 같은 이름을 지정합니다.

  • 파일 내의 텍스트 아래에 쓰고 저장하십시오.

    Feature − 시나리오 개요

    Scenario Outline − 소셜 네트워킹 사이트를위한 로그인 기능.

    사용자가 Facebook으로 이동하는 경우

    사용자 이름을 "<username>"으로 입력하고 Password를 "<password>"로 입력하면

    그런 다음 로그인이 실패해야합니다.

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note− 여기서 주석 예제는 시나리오 실행시 제공되는 입력 범위를 설명합니다. 제공된 각 입력에 대해 테스트 시나리오가 실행됩니다. 따라서 주어진 예에서 테스트 시나리오는 세 번 실행됩니다.

Step 4 − 단계 정의 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일 이름을 commandLine.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package Outline; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; i
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^user navigates to facebook$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

Note− 코드에서 두 개의 입력 인수를 갖는 함수를 정의해야합니다. 하나는 사용자 이름이고 다른 하나는 암호입니다. 따라서 예제 태그에 제공된 각 입력 세트에 대해 GIVEN, WHEN 및 THEN 세트가 실행됩니다.

Step 5 − 러너 클래스 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 다음과 같은 이름을 지정하십시오. runTest.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • 명령 프롬프트를 엽니 다.

  • 이 패키지 "commandLine"이있는 디렉토리로 이동합니다. e : \ Workspace \ LoginTest \ src> cd test \ java

  • mvn test 명령을 실행합니다. 기능 파일에 설명 된 모든 시나리오가 실행되었음을 확인할 수 있습니다 (오류가없는 경우). 마지막으로 하단에서 다음 정보를 찾을 수 있습니다.

결과

This describes the total test run, along with failure if any.

이전 명령은 JUnit Runner 클래스에서 언급 한대로 모든 것을 실행합니다. 그러나 Runner에 언급 된 구성을 재정의하려는 경우이를 수행하는 몇 가지 예는 다음과 같습니다.

  • 이제 명령 프롬프트에서 mvn test-Dcucumber.options = "-help"명령을 실행하십시오. 이것을 실행하면 사용 가능한 모든 옵션이 인쇄됩니다.

  • 특정 태그 만 실행하려면 명령 프롬프트에서 mvn test -Dcucumber.options = "-tags @SmokeTest"명령을 실행하십시오. @SmokeTest로 표시된 태그 만 실행됩니다.

  • 결과 형식을 변경하려면 명령 프롬프트에서 E : \ Workspace \ LoginTest> mvn test -Dcucumber.options = "-plugin junit : target / cucumber-junit-report.xml"명령을 실행합니다. 보고서를 변경합니다. 형식을 JUnit 보고서 생성기로.

Cucumber JUnit Runner에 대한 논의를 시작하기 전에 Junit이 무엇인지 이해하는 것이 중요합니다. JUnitJava 프로그래밍 언어를위한 오픈 소스 단위 테스트 프레임 워크입니다. JUnit은 테스트 기반 개발 개발에 중요했으며 SUnit에서 시작된 xUnit으로 통칭되는 단위 테스트 프레임 워크 제품군 중 하나입니다.

JUnit 사용의 이점

  • 단위는 Graphical User Interface (GUI), 소스 코드를 빠르고 쉽게 작성하고 테스트 할 수 있습니다.

  • JUnit을 사용하면 개발자가 진행 상황을 측정하고 의도하지 않은 부작용을 감지하는 테스트 스위트를 점진적으로 구축 할 수 있습니다.

  • 테스트는 지속적으로 실행할 수 있습니다.

  • JUnit은 일반적으로 녹색 막대에 테스트 진행률을 표시하지만 테스트가 실패하면 빨간색으로 바뀝니다.

지금까지 JUnit 사용의 이점을 확인했지만 지금 논의하고있는 이유는 Cucumber 프레임 워크입니다. 한편으로 Cucumber는 기술자가 아닌 사람이 제품에 대한 테스트 케이스를 정의 할 수있는 방법을 제공하고 다른 한편으로 이러한 테스트 케이스를 원활하고시기 적절하게 실행하기를 기대합니다.

JUnit은이 둘을 연결하는 다리 역할을합니다. 따라서 실행 흐름은 다음과 같습니다.

  • 이해 관계자는 기능 파일을 작성합니다.

  • 이에 따라 단계 정의 파일이 생성됩니다.

  • 일련의 테스트 케이스를 실행하려면 JUnit 실행기 클래스를 지정하십시오.

  • JUnit 러너 클래스를 실행하면-

    • Gherkin 기능 파일을 구문 분석합니다.

    • 기능 파일 명령문에 따라 단계 정의 파일에 작성된 기능을 실행합니다.

    • JUnit은 테스트 케이스 결과를 결합합니다.

    • 지정된 형식 (html / JSON 일 수 있음)으로 테스트 보고서를 작성합니다.

여기서 중요한 점은 이러한 모든 작업을 수행하도록 JUnit을 구성하는 방법입니다. 다음은 단계입니다-

Step 1 − Java를 설치합니다.

  • 링크에서 jdk 및 jre 다운로드 http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • 라이센스 계약에 동의하십시오.

  • JDK 및 JRE를 설치합니다.

  • 다음 스크린 샷과 같이 환경 변수를 설정합니다.

Step 2 − Eclipse를 설치합니다.

  • Why we need− Eclipse는 통합 개발 환경 (IDE)입니다. 여기에는 환경을 사용자 정의하기위한 기본 작업 공간과 확장 가능한 플러그인 시스템이 포함되어 있습니다.

  • How to install

    • JAVA가 컴퓨터에 설치되어 있는지 확인하십시오.

    • Eclipse 다운로드 http://www.eclipse.org/downloads

    • 압축을 풀고 Eclipse가 설치됩니다.

Step 3 − Maven을 설치합니다.

  • Why we need− Maven은 주로 Java 프로젝트에 사용되는 빌드 자동화 도구입니다. 소스 코드 생성, 코드 컴파일, jar에 코드 패키징 등과 같은 작업을 수행 할 수있는 공통 플랫폼을 제공합니다. 또한 나중에 소프트웨어 버전이 변경되면 Maven에서 그에 따라 테스트 프로젝트를 쉽게 수정할 수있는 방법을 제공합니다.

  • How to install

    • Maven 다운로드 − https://maven.apache.org/download.cgi

    • 파일의 압축을 풀고 위치를 기억하십시오.

    • 다음 스크린 샷과 같이 환경 변수 MAVEN_HOME을 생성합니다.

  • 다음 스크린 샷과 같이 Path 변수를 편집하고 Maven을 포함합니다.

  • Eclipse에서 MAVEN 플러그인을 다운로드하십시오.

    • Eclipse를 엽니 다.

    • Help → Eclipse Marketplace → Search Maven → Maven Integration for Eclipse → INSTALL로 이동합니다.

Step 4 − Maven으로 Cucumber를 구성하는 방법

  • Eclipse에서 Maven 프로젝트를 만듭니다.

    • File → New → Others → Maven → Maven Project → Next로 이동합니다.

    • 그룹 ID를 제공합니다 (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

    • 이슈 ID를 제공합니다 (아티팩트 ID는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다).

    • 마침을 클릭하십시오.

  • pom.xml 열기

    • Eclipse의 왼쪽에있는 패키지 탐색기로 이동합니다.

    • CucumberTest 프로젝트를 확장하십시오.

    • pom.xml 파일을 찾습니다.

    • 마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.

  • Selenium에 대한 종속성 추가-이것은 Maven을 나타내며, Selenium jar 파일이 중앙 저장소에서 로컬 저장소로 다운로드됩니다.

    • Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

    • 종속성 태그 내에 종속성 태그를 만듭니다. (<dependency> </ dependency>).

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Cucumber-Java에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일 인 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Cucumber-JUnit에 대한 종속성 추가 : 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber JUnit 파일을 Maven에 표시합니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 JUnit 파일을 Maven을 나타냅니다.

    • 종속성 태그를 하나 더 만듭니다.

    • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • 바이너리 확인

    • 한번 pom.xml 성공적으로 편집 되었으면 저장하십시오.

    • 프로젝트 → 정리로 이동-몇 분 정도 걸립니다.

    • 그 후 다음 스크린 샷과 같은 Maven 저장소를 볼 수 있습니다.

Step 5 − 기능 파일을 생성합니다 (나중에 다룰 예정).

Step 6 − 단계 정의 파일을 생성합니다 (나중에 설명).

Step 7 − 테스트를 실행할 Junit 실행기를 생성합니다 (나중에 다룰 예정).

우리는 제품의 안정성을 이해하기 위해 테스트 실행을하므로 수동 테스트이든 자동화 된 테스트이든 제품의 안정성을 설명 할 수있는 간결한 보고서를 생성하는 것이 매우 중요합니다. 따라서 Cucumber로 테스트 시나리오를 자동화하는 동안 Cucumber 테스트 보고서를 얼마나 잘 생성 할 수 있는지 아는 것이 중요합니다. Cucumber가 BDD 프레임 워크라는 것을 알고 있듯이 멋진보고 메커니즘이 없습니다.

이를 위해서는 Cucumber를 Ant / Junit과 같은 다른 오픈 소스 도구와 통합해야합니다. 여기서는 JUnit의 예를 더 살펴 보겠습니다. Java 언어를 지원하기 때문입니다.

사용 가능하고 사용하기 쉬운 다양한 보고서 형식에 대해 자세히 살펴 보겠습니다.

예쁜 형식 (HTML 보고서)

Pretty Format은 HTML 형식, 즉 HTML 파일로 Cucumber 테스트 보고서를 생성합니다. 가장 읽기 쉬운 보고서 형식입니다. 기능 파일과 동일한 방식으로 보고서를 생성하므로 추적도 용이합니다. 또한 테스트 실행 후이 보고서를 배치 할 위치를 지정할 수 있습니다. 그것은 될 수 있습니다-

  • Local Directory − 테스트를 실행할 컴퓨터의 로컬 디렉토리로 보고서 대상 디렉토리를 지정할 수 있습니다.

  • Server Directory− 또한 공개적으로 액세스 할 수있는 서버의 디렉토리로 대상 디렉토리를 지정하는 규정이 있습니다. 이는 일반적으로 고객 / 이해 관계자가 특정 시점에서 테스트 결과를보기를 원할 때 도움이됩니다.

예쁜 형식의 예를 자동화 해 보겠습니다.

Step 1 − 이름이 Maven 프로젝트 생성 cucumberReport Eclipse에서.

Step 2 − 이름이 지정된 패키지 생성 CucumberReport 아래에 src/test/java

Step 3 − 이름이 지정된 기능 파일을 생성합니다. cucumberReport.feature

파일 내에 다음 텍스트를 작성하고 저장하십시오.

Feature − 오이 보고서

#Pass test case 테스트 결과 확인

Scenario: 로그인 기능이 있습니다.

내가 브라우저를 열었을 때

Facebook 웹 사이트를 열 때

그러면 로그인 버튼이 있어야합니다.

#Failed 테스트 케이스 테스트 결과 확인

Scenario: 비밀번호 분실

내가 브라우저를 열었을 때

Facebook 웹 사이트를 열 때

그런 다음 비밀번호 찾기 링크가 있어야합니다.

Note− 여기서 시나리오는 먼저 통과하고 두 번째 시나리오는 실패합니다. 통과 및 실패 보고서가 어떻게 보이는지 확인할 수 있습니다.

Step 4 − 단계 정의 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일 이름을 다음과 같이 지정하십시오. cucumberReport.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package CucumberReport; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberReport { 
   WebDriver driver = null;
	
   @Given("^I have open the browser$") 
   public void openBrowser() { 
      driver = new FirefoxDriver();
   } 
	
   @When("^I open Facebook website$") public void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail");
      }
   } 
	
   @Then("^Forgot password link should exist$") 
   public void forgotPWD() { 
      if(driver.findElement(By.id("")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else {
         System.out.println("Test 1 Fail");
      } 
   } 
}

Step 5 − 러너 클래스 파일을 생성합니다.

  • 이름이 지정된 러너 클래스를 만듭니다. runTest.java 패키지 내부.

  • 다음 코드를 작성하십시오. 파일을 저장하십시오.

package CucumberReport; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options( 
   format = {"pretty", "html:target/Destination"} ) 
//Specifying pretty as a format option ensure that HTML report will be generated. 
//When we specify html:target/Destination - It will generate the HTML report 

inside the Destination folder, in the target folder of the maven project.
 
public class runTest { }
  • 옵션을 사용하여 테스트 실행

    • 고르다 runTest.java 패키지 탐색기의 파일.

    • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택합니다. Run as.

    • JUnit 테스트를 선택하십시오.

이 클래스 파일을 실행할 때 다음 사항을 관찰합니다.

두 시나리오 모두 하나씩 실행됩니다.

대상 디렉터리 내에 대상이라는 폴더가 생성됩니다.

보고서는 "Index.html"로 이름이 지정됩니다.

웹 브라우저로 Index.html을 엽니 다.

다음 이미지에 언급 된 보고서를 볼 수 있습니다.

실패한 시나리오의 색상을 정확하게 강조합니다. 또한 해당 시나리오에서 실패한 단계가 강조 표시됩니다. 이것은 디버깅을 매우 쉽게 만듭니다.

JSON 보고서

지금까지 HTML 보고서가 얼마나 쉬운 지 보았습니다. 그러나이 보고서 정보를 다른 응용 프로그램에 전달하려는 경우 HTML 보고서의 경우 다소 까다 롭습니다. 여기에 또 다른보고 형식이 필요합니다. JSON-Java 스크립트 개체 표기법은 Cucumber 테스트 보고서를 생성하는 또 다른 형식입니다. JSON은 텍스트 형식으로 저장된 많은 정보를 포함하는 객체입니다. JSON 보고서는 테이블에 다른 값을 가져옵니다. JSON 보고서는 다른 서버간에 전송할 정보의 페이로드로도 사용할 수 있습니다. 또한 웹 페이지로 표시하는 데 사용할 수 있습니다. 요컨대, JSON 보고서는 다른 애플리케이션에서 사용할 수 있습니다.

What is payload information?인터넷을 통해 데이터를 전송할 때 전송되는 각 단위에는 헤더 정보와 전송중인 실제 데이터가 모두 포함됩니다. 헤더는 패킷의 소스와 목적지를 식별하는 반면 실제 데이터는 페이로드라고합니다. JSON 보고서를 생성하려면 러너 파일을 변경하기 만하면됩니다.

  • 다음과 같이 러너 파일의 형식 옵션을 변경합니다.

package CucumberReport; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options( format={"json:target/Destination/cucumber.json"}) 

//When we specify json:target/Destination/cucumber.json - It will generate the JSON  
report inside the Destination folder, in the target folder of the maven project.

public class runTest {}
  • 옵션을 사용하여 테스트 실행-

    • 고르다 runTest.java 패키지 탐색기의 파일.

    • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택하십시오. Run as.

    • JUnit 테스트를 선택하십시오.

  • 이 클래스 파일을 실행할 때 다음 사항을 관찰합니다.

    • 두 시나리오 모두 하나씩 실행됩니다.

  • 보고서는 다음과 같이 명명됩니다. cucumber.json (러너 클래스에서 제공됨).

  • 열다 cucumber.json 텍스트 편집기로 파일.

  • 줄 바꿈을 배치 한 후 다음 스크린 샷에 언급 된 보고서를 볼 수 있습니다.

Note − JSON은 HTML 보고서 형식에 비해 가독성이 떨어집니다.

알 수없는 이유로 인해 테스트가 실패 할 가능성이 매우 높습니다. 실패의 원인을 파악하고 수정하는 것은 매우 중요합니다. 이 프로세스는debugging. 다음은 Cucumber 디버깅을 약간 쉽게 만드는 몇 가지 팁과 요령입니다.

Eclipse에서 디버깅 옵션을 사용할 수 있습니다. 중단 점을 배치합니다. 파일을 클릭하고 다음 단계를 사용하여 디버그-

Step 1 − Ruby 단계 정의 파일에 수동 중단 점을 배치합니다.

require 'ruby-debug' 
Then /^the process should exit cleanly$/ do 
breakpoint 
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}" 
end

Step 2 − 단계 정의 파일에서 다음과 같이 별도의 디버그 단계를 정의 할 수도 있습니다.

Then /^I debug$/ do 
breakpoint 
0 
end

Step 3WebratRails로 오이 테스트를위한 기본 도구입니다. 클릭 링크, 양식 입력 및 제출 등과 같은 작업을 수행 할 수 있습니다.

예를 들어 무언가를 클릭하려고하는데 거기에없는 경우가 있습니다. HTML의 큰 덩어리가 다시 던져지고 그것이 정확히 무엇을 의미하는지 파악하는 것이 진정한 끌림이 될 수 있습니다.

save_and_open_page

Webrat은 현재 HTML을 캡처하고 저장 한 다음 브라우저에서 열 수있는 save_and_open_page 메소드를 제공합니다. 매우 유용합니다.

When /^I follow "(.*)"$/ do |link| 
save_and_open_page 
click_link(link) 
end

Java로 Cucumber 테스트를 실행하려면 다음 단계를 따르십시오.

Step 1 − Java 설치 −

  • 에서 jdk 및 jre 다운로드

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • 라이센스 계약에 동의하십시오.

  • JDK 및 JRE를 설치합니다.

  • 다음 그림과 같이 환경 변수를 설정하십시오.

Step 2 − Eclipse IDE 설치 −

  • JAVA가 컴퓨터에 설치되어 있는지 확인하십시오.

  • Eclipse 다운로드 https://eclipse.org/downloads/

  • 압축을 풀고 Eclipse가 설치되었습니다.

Step 3 − Maven 설치 −

  • Maven 다운로드 −https://maven.apache.org/download.cgi

  • 파일의 압축을 풀고 위치를 기억하십시오.

  • 다음 이미지와 같이 환경 변수 MAVEN_HOME을 만듭니다.

  • 경로 변수를 편집하고 Maven을 포함합니다.

  • Eclipse에서 MAVEN 플러그인 다운로드

    • Eclipse를 엽니 다.

    • 도움말 → Eclipse Marketplace → Maven 검색 → Eclipse 용 Maven 통합 → 설치

Step 4 − Maven으로 Cucumber를 구성합니다.

  • Maven 프로젝트를 만듭니다.

    • File → New → Others → Maven → Maven Project → Next로 이동합니다.

    • 그룹 ID를 제공합니다 (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).

    • 이슈 ID를 제공합니다 (아티팩트 ID는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다).

    • 마침을 클릭하십시오.

Step 5 − pom.xml 열기 −

  • Eclipse 왼쪽에있는 패키지 탐색기로 이동합니다.

  • CucumberTest 프로젝트를 확장하십시오.

  • pom.xml 파일을 찾습니다.

  • 마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.

Step 6 − Selenium에 대한 종속성 추가 − 이것은 Maven을 나타내며, 어떤 Selenium jar 파일이 중앙 저장소에서 로컬 저장소로 다운로드 될 것인지 나타냅니다.

  • Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.

  • 종속성 태그 내에 종속성 태그를 만듭니다. (<dependency> </ dependency>)

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Step 7 − Cucumber-Java에 대한 종속성 추가 − 이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.

  • 종속성 태그를 하나 더 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 8 − Cucumber-JUnit에 대한 종속성 추가 − 이것은 중앙 저장소에서 로컬 저장소로 Cucumber JUnit 파일을 다운로드 할 Maven을 나타냅니다.

  • 종속성 태그를 하나 더 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 9− JUnit에 대한 종속성 추가 − 이것은 중앙 저장소에서 로컬 저장소로 JUnit 파일을 다운로드 할 Maven을 나타냅니다.

  • 종속성 태그를 하나 더 만듭니다.

  • 종속성 태그 내에 다음 정보를 제공하십시오.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 10 − 바이너리를 확인합니다.

  • pom.xml이 성공적으로 편집되면 저장합니다.

  • 프로젝트 → 정리로 이동-몇 분 정도 걸립니다.

  • Maven 저장소를 볼 수 있습니다.

Step 11 − 아래에 패키지 생성 src/test/java 이름이 cucumberJava.

Step 12 − 기능 파일 생성

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 다음과 같은 이름을 지정하십시오. cucumberJava.feature.

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

    Feature: 오이 자바

    Scenario: 로그인 기능이 있습니다.

    내가 브라우저를 열었을 때

    Facebook 웹 사이트를 열 때

    그러면 로그인 버튼이 종료됩니다.

Step 13 − 단계 정의 파일 생성 −

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일 이름에 다음과 같은 이름을 지정하십시오. annotation.java.

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package CucumberJava; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberJava { 
   WebDriver driver = null; 
   @Given("^I have open the browser$") public void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
   @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail"); 
      } 
      driver.close(); 
   } 
}

Step 14 − 러너 클래스 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일 이름을 다음과 같이 지정하십시오. runTest.java.

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package cucumberJava; 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 
public class runTest { 
}

Step 15 − 옵션을 사용하여 테스트 실행 −

  • 패키지 탐색기에서 runTest.java 파일을 선택하십시오.

  • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택합니다. Run as.

  • JUnit 테스트를 선택하십시오.

실행시 다음 사항을 관찰합니다.

  • Firefox 웹 브라우저의 인스턴스가 열립니다.

  • 브라우저에서 Facebook 로그인 페이지가 열립니다.

  • 로그인 버튼을 감지합니다.

  • 브라우저가 닫힙니다.

  • JUnit 창에서 테스트 실행의 성공을 나타내는 녹색 체크 표시가있는 시나리오를 볼 수 있습니다.

Ruby 언어에는 다음과 같은 장점이 있습니다.

  • 이해하기 쉽습니다.

  • 객체 지향 언어입니다.

  • 강력한 클래스 라이브러리입니다.

  • 대규모 온라인 지원이 있습니다.

다음은 Cucumber가 Ruby와 작동하는 방법에 대한 단계별 프로세스입니다.

Step 1 − Ruby를 설치합니다.

  • RubyInstaller 다운로드 페이지로 이동합니다.

  • 운영 체제에 가장 적합한 버전 (예 : 32 또는 64 비트)을 다운로드하십시오.

  • 다운로드 한 exe를 실행합니다.

  • 설치하는 동안 다음 이미지와 같이 "Ruby 추가…"및 "Associate…"옵션을 선택합니다.

Step 2 − 개발 키트를 다운로드하고 추출합니다.

  • RubyInstaller 다운로드 페이지로 이동합니다.

  • 운영 체제에 가장 적합한 Devkit 버전 (예 : 32 또는 64 비트)을 다운로드하십시오.

  • c : \ Ruby \ Devkit 폴더에서 devkit을 추출합니다.

  • 명령 프롬프트를 엽니 다.

  • Ruby devkit에서 다음 명령을 실행합니다.

C:\Ruby\devkit> ruby dk.rb init 
C:\Ruby\devkit> ruby dk.rb install

Step 3 − Cucumber 및 기타 Ruby gem을 설치합니다.

  • Cucumber를 설치하려면 먼저 현재 gem 설정을 업데이트하세요.

C:\Users\Admin> gem update –system
  • 다음으로 Cucumber 웹 테스트에 필요한 gem을 설치합니다.

C:\Users\Admin> gem install --no-ri --no-rdoc rspec 
C:\Users\Admin> gem install --no-ri --no-rdoc win32console 
C:\Users\Admin> gem install --no-ri --no-rdoc watir-webdriver 
C:\Users\Admin> gem install --no-ri --no-rdoc cucumber
  • 오이 실행

C:\Users\Admin\Documents>cucumber –init 
C:\Users\Admin\Documents>cucumber

Step 4 − IDE – KOMODO를 설치합니다.

  • 페이지로 이동 http://www.activestate.com/komodo-ide/downloads

  • 무료 평가판 설치 프로그램을 다운로드하십시오.

  • 다운로드 한 exe를 두 번 클릭합니다.

  • 설치 단계를 따르십시오.

  • 설치를 완료하고 IDE를 엽니 다.

Step 5 − 설치 Watir − 명령 프롬프트로 이동하여 다음 명령을 실행하십시오. "gem install watir"

Step 6 − 설치 rspec − 명령 프롬프트로 이동하여 다음 명령을 실행하십시오. "gem install rspec"

Step 7 − 기능 파일을 생성합니다.

  • KOMODO 편집기를 엽니 다.

  • 새 파일 아이콘을 클릭하십시오.

  • 다음 텍스트를 작성하십시오.

    Feature: 사용자는 Google을 사용하여 콘텐츠를 검색 할 수 있어야합니다.

    Scenario: 용어를 검색하십시오.

    내가 입력을 감안할 때 "watir" 쿼리에.

    클릭하면 "search"

    그럼 결과를 봐야 겠네요

  • 딸깍 하는 소리 save 상.

  • 이름을 CucumberRuby.feature로 지정하십시오.

  • 예를 들어 다음과 같은 폴더를 선택합니다. “e:\WithRuby”

  • 파일을 저장하십시오.

Step 8 − 단계 정의 파일을 생성합니다.

  • KOMODO 편집기를 엽니 다.

  • '새로 만들기'파일 아이콘을 클릭합니다.

  • 다음 코드를 작성하십시오.

require "watir-webdriver" 
require "rspec/expectations" 

Given /^I have entered "([^"]*)" into the query$/ do |term| 
@browser ||= Watir::Browser.new :firefox 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set term 
end 

When /^I click "([^"]*)"$/ do |button_name| @browser.button.click end Then /^I should see some results$/ do 
@browser.div(:id => "resultStats").wait_until_present 
@browser.div(:id => "resultStats").should exist 
@browser.close 
End
  • 저장 아이콘을 클릭합니다.

  • 이름을 다음과 같이 지정하십시오. CucumberRuby.rb

  • 예를 들어 폴더를 선택하십시오. “e:\WithRuby”

  • 파일을 저장하십시오.

Step 9 − 테스트 파일을 생성합니다.

  • KOMODO 편집기를 엽니 다.

  • '새로 만들기'파일 아이콘을 클릭합니다.

  • 다음 코드를 작성하십시오.

require "rubygems" 
require "test/unit" 
require "watir-webdriver" 

class GoogleSearch < Test::Unit::TestCase 
def setup 
@browser ||= Watir::Browser.new :firefox 
end 

def teardown 
@browser.close 
end 

def test_search 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set "watir" 
@browser.button.click 
@browser.div(:id => "resultStats").wait_until_present assert 
@browser.title == "watir - Google Search" 
end 
end
  • 저장 아이콘을 클릭하십시오.

  • 파일 이름을 test.rb 예를 들어 "e : \ WithRuby"와 같은 폴더를 선택합니다.

  • 파일을 저장하십시오.

Step 10 − 기능 파일을 실행합니다.

  • 명령 프롬프트로 이동하십시오.

  • 디렉토리로 이동 e:\WithRuby

  • 다음 명령을 실행하십시오.

e:\With Ruby>ruby test.rb

실행시 다음 사항을 관찰합니다.

  • 웹 브라우저 인스턴스가 열립니다.

  • Google.com 웹 페이지가로드됩니다.

  • 텍스트 검색 watir 입력됩니다.

  • 검색 버튼이 배치됩니다.

  • 검색 결과는 웹 페이지에 표시됩니다.

  • 브라우저 인스턴스가 닫힙니다.