automation testing using cucumber tool
지난 Selenium 튜토리얼에서 소개했습니다. 셀레늄 그리드 그것은 ...에 분산 테스트 실행 테스트 통과 속도를 높이기위한 환경 .
이제이 포괄적 인 Selenium 교육 시리즈가 끝나면 고급 셀레늄 테스트 및 관련 개념.
이 튜토리얼과 다음 튜토리얼에서는 오이 – a 승인 테스트를 수행하기 위해 Selenium과 함께 사용되는 BDD (Behavior Driven Development) 프레임 워크입니다.
학습 내용 :
오이 소개
오이는 웹 애플리케이션에 대한 승인 테스트를 작성하는 데 사용되는 BDD (Behavior Driven Development) 프레임 워크를 기반으로하는 도구입니다. 비즈니스 분석가, 개발자, 테스터 등이 쉽게 읽고 이해할 수있는 형식 (예 : 일반 영어)으로 기능 검증을 자동화 할 수 있습니다.
Cucumber 기능 파일은 모두에게 좋은 문서가 될 수 있습니다. BDD 프레임 워크도 지원하는 JBehave와 같은 다른 많은 도구가 있습니다. 처음에 Cucumber는 Ruby로 구현 된 후 Java 프레임 워크로 확장되었습니다. 두 도구 모두 기본 JUnit을 지원합니다.
Behavior Driven Development는 Test Driven Development의 확장이며 특정 코드를 테스트하는 대신 시스템을 테스트하는 데 사용됩니다. BDD 및 BDD 테스트 작성 스타일에 대해 자세히 설명합니다.
Cucumber는 Selenium, Watir, Capybara 등과 함께 사용할 수 있습니다. Cucumber는 Perl, PHP, Python, Net 등과 같은 다른 많은 언어를 지원합니다.이 튜토리얼에서는 Java를 언어로 사용하는 Cucumber에 집중합니다.
오이 기초
오이를 이해하기 위해서는 오이의 모든 특징과 사용법을 알아야합니다.
팀 기반 서버 애자일 프로젝트 관리
# 1) 기능 파일 :
기능 파일은 테스트 자동화 단계 또는 승인 테스트를 작성하는 데 사용되는 오이의 필수 부분입니다. 이것은 라이브 문서로 사용할 수 있습니다. 단계는 애플리케이션 사양입니다. 모든 기능 파일은 .feature 확장자로 끝납니다.
샘플 기능 파일 :
특색 : 로그인 기능 기능
로그인 기능이 작동하는지 확인하려면
오이 테스트를 실행하여 작동하는지 확인하고 싶습니다.
대본 : 로그인 기능
주어진 사용자가 SOFTWARETETINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름을 'USER'로, 비밀번호 'PASSWORD'를 사용하여 로그인합니다.
그때 로그인이 성공해야합니다
대본 : 로그인 기능
주어진 사용자가 SOFTWARETETINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름 'USER1'및 암호 'PASSWORD1'을 사용하여 로그인합니다.
그때 오류 메시지가 표시되어야합니다.
# 2) 기능 :
티 그는 높은 수준의 비즈니스 기능 (이전 예제 참조)과 테스트중인 애플리케이션의 목적에 대한 정보를 제공합니다. 모든 사람이 첫 번째 기능 단계를 읽고 기능 파일의 의도를 이해할 수 있어야합니다. 이 부분은 기본적으로 간결하게 유지됩니다.
# 3) 시나리오 :
기본적으로 시나리오는 테스트중인 특정 기능을 나타냅니다. 시나리오를보고 사용자는 시나리오이면의 의도와 테스트의 내용을 이해할 수 있어야합니다. 각 시나리오는 주어진시기와 형식을 따라야합니다. 이 언어를 'gherkin'이라고합니다.
- 주어진: 위에서 언급했듯이 주어진 전제 조건을 지정합니다. 기본적으로 알려진 상태입니다.
- 언제 : 동작을 수행 할 때 사용합니다. 위의 예에서와 같이 사용자가 사용자 이름과 비밀번호를 사용하여 로그인을 시도하면 액션이됩니다. .
- 그때: 예상되는 결과 또는 결과를 여기에 배치해야합니다. 예 : 로그인이 성공하고 페이지 탐색이 성공했는지 확인합니다.
- 배경: 각 시나리오에서 수행하기 위해 단계가 필요할 때마다 해당 단계를 백그라운드에 배치해야합니다. 예 : 사용자가 각 시나리오 전에 데이터베이스를 정리해야하는 경우 해당 단계를 백그라운드에 배치 할 수 있습니다.
- 과 : 그리고 둘 이상의 동일한 유형의 액션을 결합하는 데 사용됩니다.
예:
특색 : 로그인 기능 기능
대본 : 로그인 기능
주어진 사용자가 SOFTWARETETINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름을 'USER'로 사용하여 로그인합니다.
과 암호를 '암호'로
그때 로그인이 성공해야합니다
과 홈 페이지가 표시되어야합니다.
자바 배열에 추가하는 방법
배경의 예 :
배경:
주어진 데이터베이스 관리자로 로그인 한 사용자
과 모든 정크 값이 지워집니다.
# 4) 시나리오 개요 :
시나리오 개요는 다른 데이터 세트로 동일한 테스트를 수행해야하는 경우에 사용됩니다. 같은 예를 들어 보겠습니다. 여러 다른 사용자 이름 및 암호 세트로 로그인 기능을 테스트해야합니다.
특색 : 로그인 기능 기능
로그인 기능이 작동하는지 확인하려면
오이 테스트를 실행하여 작동하는지 확인하고 싶습니다.
시나리오 개요 : 로그인 기능
주어진 사용자가 SOFTWARETESTINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름을 사용하여 로그인합니다.< 사용자 이름 > 및 비밀번호< 암호 >
그때 로그인이 성공해야합니다
예 :
| 사용자 이름 | 암호 |
| Tom | password1 |
| Harry | password2 |
| Jerry | password3 |
노트 :
- 위의 예에서 볼 수 있듯이 열 이름은 매개 변수로 전달됩니다. 언제 성명서.
- Scenario 대신 Scenario Outline을 사용해야합니다.
- 예제는 표 형식으로 다른 인수를 전달하는 데 사용됩니다. 수직 파이프는 두 개의 다른 기둥을 분리하는 데 사용됩니다. 예에는 다양한 열이 포함될 수 있습니다.
# 5) 태그 :
Cucumber는 기본적으로 모든 기능 파일에서 모든 시나리오를 실행합니다. 실시간 프로젝트에는 항상 실행할 필요가없는 수백 개의 기능 파일이있을 수 있습니다.
예를 들어 : 연기 테스트와 관련된 기능 파일이 항상 실행될 필요는 없습니다. 따라서 연기 테스트와 관련된 각 기능 파일에서 태그를 무연으로 언급하고 @SmokeTest 태그로 오이 테스트를 실행합니다. Cucumber는 주어진 태그와 관련된 기능 파일 만 실행합니다. 아래 예를 따르십시오. 하나의 기능 파일에 여러 태그를 지정할 수 있습니다.
단일 태그 사용의 예 :
안녕하세요.
특색 : 로그인 기능 기능
로그인 기능이 작동하는지 확인하려면
오이 테스트를 실행하여 작동하는지 확인하고 싶습니다.
시나리오 개요 : 로그인 기능
주어진 사용자가 SOFTWARETESTINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름을 사용하여 로그인합니다.< 사용자 이름 > 및 비밀번호< 암호 >
그때 로그인이 성공해야합니다
예 :
| 사용자 이름 | 암호 |
| Tom | password1 |
| Harry | password2 |
| Jerry | password3 |
여러 태그 사용의 예 :
아래 예에서 볼 수 있듯이 로그인 테스트 시나리오뿐만 아니라 연기 테스트 시나리오에도 동일한 기능 파일을 사용할 수 있습니다. 스모크 테스트를 위해 스크립트를 실행하려면 @SmokeTest를 사용하십시오. 마찬가지로 로그인 테스트를 위해 스크립트를 실행하려면 @LoginTest 태그를 사용하십시오.
기능 파일 및 시나리오에 대해 여러 태그를 언급 할 수 있습니다.
@SmokeTest @LoginTest
특색 : 로그인 기능 기능
로그인 기능이 작동하는지 확인하려면
오이 테스트를 실행하여 작동하는지 확인하고 싶습니다.
시나리오 개요 : 로그인 기능
주어진 사용자가 SOFTWARETETINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름 및 비밀번호를 사용하여 로그인합니다.
그때 로그인이 성공해야합니다
예 :
| 사용자 이름 | 암호 |
| Tom | password1 |
| Harry | password2 |
| Jerry | password3 |
마찬가지로 기능 파일에서 특정 시나리오를 실행할 태그를 지정할 수 있습니다. 특정 시나리오를 실행하려면 아래 예제를 확인하십시오.
특색 : 로그인 기능 기능
로그인 기능이 작동하는지 확인하려면
오이 테스트를 실행하여 작동하는지 확인하고 싶습니다.
회사에서 묻는 셀레늄 인터뷰 질문
안녕하세요.
대본 : 로그인 기능
주어진 사용자가 SOFTWARETETINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름을 'USER'로, 비밀번호 'PASSWORD'를 사용하여 로그인합니다.
그때 로그인이 성공해야합니다
안녕하세요.
대본 : 로그인 기능
주어진 사용자가 SOFTWARETETINGHELP.COM으로 이동합니다.
언제 사용자는 사용자 이름 'USER1'및 암호 'PASSWORD1'을 사용하여 로그인합니다.
그때 오류 메시지가 발생해야합니다.
# 6) JUnit 러너 :
특정 기능 파일을 실행하려면 오이는 표준 JUnit Runner를 사용하고 @Cucumber에 태그를 지정합니다. 옵션. 쉼표로 구분하여 여러 태그를 지정할 수 있습니다. 여기에서 생성 할 보고서의 경로와 보고서 유형을 지정할 수 있습니다.
Junit Runner의 예 :
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = { 'SimpleHtmlReport : report / smokeTest.html'}, tags = { '@ smokeTest'}) 공개 클래스 JUnitRunner {} 마찬가지로 오이에게 여러 태그를 실행하도록 지시 할 수 있습니다. 아래 예는 오이에서 여러 태그를 사용하여 다양한 시나리오를 실행하는 방법을 보여줍니다.
import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={'SimpleHtmlReport:report/smokeTest.html'},tags={'@smokeTest',”@LoginTest”}) Public class JUnitRunner { }
# 7) 오이 보고서 :
Cucumber는 자체 HTML 형식을 생성합니다. 그러나 Jenkins 또는 bamboo 도구를 사용하여 더 나은보고를 수행 할 수 있습니다. 보고에 대한 자세한 내용은 오이의 다음 주제에서 다룹니다.
오이 프로젝트 설정 :
오이 프로젝트 설정에 대한 자세한 설명은 다음 튜토리얼에서 별도로 제공됩니다. 프로젝트 설정에 대한 자세한 내용은 Cucumber Tutorial Part2를 참조하십시오. 오이에는 추가 소프트웨어 설치가 필요하지 않습니다.
기능 파일 구현 :
기능 파일을 테스트하려면 이러한 단계를 Java로 구현해야합니다. 주어진, 언제, 그리고 문장을 포함하는 클래스를 만들어야합니다. Cucumber는 주석을 사용하고 모든 단계는 주석에 포함됩니다 (주어진시기, 그때). 각 구문은 '^'로 시작하여 오이가 단계의 시작을 이해합니다. 마찬가지로 각 단계는 '$'로 끝납니다. 사용자는 정규식을 사용하여 다른 테스트 데이터를 전달할 수 있습니다. 정규식은 기능 단계에서 데이터를 가져와 단계 정의로 전달합니다. 매개 변수의 순서는 기능 파일에서 전달되는 방법에 따라 다릅니다. 프로젝트 설정 및 기능 파일과 Java 클래스 간의 매핑에 대해서는 다음 자습서를 참조하십시오.
예:
아래 예는 기능 파일을 구현하는 방법을 보여줍니다.
이 예에서는 셀레늄 API를 사용하지 않았습니다. 이것은 오이가 독립형 프레임 워크로 어떻게 작동하는지 보여주기위한 것입니다. 오이와의 셀레늄 통합에 대한 다음 자습서를 따르십시오.
public class LoginTest { @Given('^user navigates to SOFTWARETETINGHELP.COM$') public void navigatePage() { system.out.println(“Cucumber executed Given statement”); } @When('^user logs in using Username as '(.*)' and Password '(.*)'$') public void login(String usename,String password) { system.out.println(“Username is:”+ usename); system.out.println(“Password is:”+ password); } @When('^click the Submit button$') public void clickTheSubmitButton() { system.out.println(“Executing When statement”) } @Then('^Home page should be displayed$') public void validatePage() { system.out.println(“Executing Then statement”) } @Then('^login should be successful$') public void validateLoginSuccess() { system.out.println(“Executing 2nd Then statement”) } }
오이 러너 클래스를 실행하면 오이가 기능 파일 단계를 읽기 시작합니다. 예를 들어 @smokeTest를 실행하면 오이는 특색 단계 및 주어진 진술 대본 . 오이가 발견하자마자 진술이 주어지면 동일 주어진 문에서 Java 파일을 검색합니다. Java 파일에서 동일한 단계가 발견되면 cucumber는 동일한 단계에 지정된 함수를 실행합니다. 그렇지 않으면 cucumber가 단계를 건너 뜁니다.
결론
이 튜토리얼에서는 오이 도구의 기능과 실시간 시나리오에서의 사용법을 다뤘습니다.
Cucumber는 이해하기 쉽고, 읽기 쉽고, 비즈니스 기능을 포함하고 있기 때문에 많은 프로젝트에서 가장 선호하는 도구입니다.
다음 장에서 , 우리는 오이-자바 프로젝트를 설정하는 방법과 Selenium WebDriver를 Cucumber와 통합하는 방법을 다룰 것입니다.
추천 도서
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- 30 개 이상의 최고의 셀레늄 튜토리얼 : 실제 예제로 셀레늄 배우기
- Selenium Grid Tutorial : 크로스 브라우저 테스트 설정 및 예
- Selenium과의 통합 및 기능 테스트를위한 Spock
- Selenium 용 Maven 빌드 자동화 도구 및 Maven 프로젝트 설정 사용-Selenium Tutorial # 24
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- 초보자를위한 심층 이클립스 튜토리얼
- WAVE 접근성 테스트 도구 자습서