cucumber 튜토리얼
오이 시작하기
수색…
비고
오이 소개
오이는 소프트웨어의 실행 가능한 사양을 실행하는 도구입니다. '기능'이라고하는 사양은 구조화 된 자연어로 작성됩니다. Cucumber는 각 단계를 Cucumber 구현이 지원하는 프로그래밍 언어로 작성된 "단계 정의"에 매핑하여 기능을 실행합니다. 오이는 Ruby (원래), Java 및 Javascript를 포함한 많은 프로그래밍 언어로 구현됩니다. 그것은 또한 많은 인간 언어로 번역됩니다.
Cucumber는 BDD (Behavior-Driven Development)라고하는 민첩한 방법론을 지원하기 위해 작성되었습니다. BDD에서 단위 테스트와 같은 프로그래머의 관점에서가 아니라 사용자의 관점에서 소프트웨어의 기능을 설명하는 인수 테스트를 작성하여 외부 개발을 시작합니다. 오이 기능은 이러한 수용 테스트의 역할을합니다.
일반적으로 Cucumber 기능은 사람이 읽을 수있는 문서이며 실행 가능한 테스트 제품군이기 때문에 문서와 테스트가 항상 일치합니다. 오이는 프로그래머가 아닌 이해 관계자와 문서화 및 테스트에 대해 대화하는 데 유용합니다. 또한 프로그래머는 관련성이없는 프로그래밍 언어 문제없이 개념적 수준에서 테스트를 작성할 수 있습니다.
Cucumber는 Selenium이나 PhantomJS와 같은 브라우저 드라이버를 사용하여 웹 응용 프로그램을 지정하고 테스트하는 데 가장 자주 사용됩니다. 그러나 실행될 수 있고 상태 또는 결과가 오이 구현이 지원하는 프로그래밍 언어에서 결정될 수있는 모든 소프트웨어와 함께 사용할 수 있습니다.
기타 문서
공식 문서는 https://cucumber.io/docs에 있습니다. Cucumber 구현을 설명하는 오이 기능에서 생성 된 문서는 다음에 있습니다.
- 자바 스크립트 : https://relishapp.com/cucumber/cucumber-js/docs
- Ruby : https://relishapp.com/cucumber/cucumber/docs
https://relishapp.com/explore 에는 오이와 관련된 다른 툴과 예제가 포함되어 있지만, 불행히도 Cucumber-JVM은 아닙니다.
이 주제
이 주제는 독자에게 오이 개념을 소개하는 몇 가지 예를 제공해야합니다. 다른 섹션에서는 설치, 명령 줄 및 IDE 사용법, 기능, 단계 정의 등의 전체 예제를 제공합니다.
오이 특징
Cucumber는 Gherkin 구문 을 사용하여 구조화 된 자연어로 소프트웨어의 동작을 설명합니다.
이러한 오이는 사용 사례 시나리오처럼 다른 사람과없는 매우 다른 테스트 프레임 워크 (일반적인 오해)하지만, 시스템 문서 프레임 워크는 아니므로. 일반적인 오해는 오이 문서 가 실제 시스템 동작을 반영하도록 자동화 될 수 있다는 사실 때문입니다.
오이 문서 스위트로 구성되어있다 Features 각 소프트웨어의 기능, 작은 오이로 작성하고 자신의 파일 호스팅을 설명. 이러한 파일을 디렉토리 구조로 구성하여 기능을 그룹화 하고 구성 할 수 있습니다.
- 은행업/
- 철수. 특징
- atm.feature
- 개인 대출. 특징
- 거래 /
- portfolio.feature
- intraday.feature
- 저당/
- 평가. 기능
- 회계. 기능
각 Feature 은 선택적이고 구조화되지 않은 순전히 정보 제공 섹션과 사용 조건 또는 사용 사례를 나타내는 하나 이상의 Scenarios 로 구성된 일반 텍스트 파일입니다.
예:
Feature: Documentation
As a StackOverflow user or visitor
I want to access the documentation section
Scenario: search documentation on Stack Overflow
Given I am on StackOverflow
And I go to the Documentation section
When I search for "cucumber"
And I follow the link to "cucumber"
Then I should see documentation for "cucumber"
Given , When , And , But 또는 Then 로 시작하는 각 행을 Step 라고합니다. 모든 단계는 순서와 관계없이 해당 단어로 시작할 수 있지만 가능한 가장 자연스러운 방법으로 사용하는 것이 일반적입니다.
피쳐는 Tags , 주석 또는 Feature 를 Scenario 를 추가 분류 할 수있는 주석을 통해 구성 될 수 있습니다.
지형지 물의 실행 가능성은 다양한 언어 (자바, 루비, 스칼라, C / C ++)로 작성 될 수있는 글루 코드를 통해 달성됩니다. 각 Step 는 글루 코드와 대조 되어 Step Definitions (일반적으로 StepDef 로 약칭 됨 )를 식별 할 수 있습니다. 정규 표현식.
모든 Step 에는 하나의 연관된 Step Definition 만있을 수 있습니다.
Feature 가 실행되면 Scenario 구성하는 각각의 요소가 실행됩니다. 즉, 모든 Scenario 의 Step 일치하는 각 StepDef가 실행됩니다.
퓨어 루비 설치
Ruby와 함께 사용하기 위해 Cucumber를 설치하려면 다음 명령을 사용하십시오.
gem install cucumber
또는 bundler를 사용하는 경우 다음 행을 Gemfile에 추가 할 수 있습니다
gem 'cucumber'
그런 다음 번들러를 실행하십시오.
bundle install
[나는 이것이 자신의 주제 인 Installation에 속한다고 생각합니다. 저는 그 주제를 만들고 거기에이 예제를 복사했습니다. 해당 주제가 승인되면 거기로 이동하고 복사본을 삭제합니다.]
Ruby의 오이 단계 정의
features / step_definitions / documentation.rb에서 다음을 수행합니다.
When /^I go to the "([^"]+)" documentation$/ do |section|
path_part =
case section
when "Documentation"
"documentation"
else
raise "Unknown documentation section: #{section}"
end
visit "/documentation/#{path_part}/topics"
end
Then /^I should see the "([^"]+) documentation"$/ do |section|
expect(page).to have_css('h2.doctag_title a', text: section)
end
이 단계는 웹 응용 프로그램을 실행합니다. 그들은 여전히 실용적 일 수있는만큼 간단합니다.
각 단계는 Gherkin 키워드로 시작됩니다.이 키워드는 단계 정의 파일에서 Cucumber로 단계를 등록하는 메소드입니다. 단계 정의 메소드는 시나리오의 행과 일치하는 정규 표현식과 시나리오가 일치하는 행에 도달 할 때 실행되는 블록을 사용합니다. 일반 표현식의 캡처 그룹은 블록 매개 변수로 블록에 전달됩니다.
When 단계에는 사람이 읽을 수있는 참조 ( "문서")에서 URL로 이동하는 간단한 인라인 예제가 있습니다. 진짜 오이 스위트는 보통이 로직을 별도의 방법으로 사용합니다. visit 방법은 카피 바라 (Capybara)가 제공합니다. Capybara는 매우 일반적으로 사용되지만, 오이를 사용할 필요가 없습니다. visit 는 Capybara가 제어하는 브라우저에 지정된 URL을 방문하도록 지시합니다.
Then 단계는 페이지 내용을 테스트하는 방법을 보여줍니다. expect / to RSpec에 의해 제공된다 (다시, 오이 불필요하지만, 매우 자주 함께 사용). have_css 는 have_css 에서 제공됩니다. 주어진 CSS 셀렉터가 주어진 텍스트를 포함하고있는 페이지의 요소와 일치 할 것으로 기대합니다. 이 요청은 브라우저 요청이 실패한 경우 실패합니다.
더 많은 예제를 보려면 "단계 정의"항목을 참조하십시오.