web-dev-qa-db-ja.com

キュウリとカピバラ

誰かがこれら2つのプラットフォーム間のdifferenceを説明できますか?

両方ともBDDの一部ですが、なぜどちらか、または両方を一緒に使用する必要がありますか?

46
piermaria

Capybaraは、人間が行うようにWebサイトと対話するツールです(URLにアクセスする、リンクをクリックする、フォームにテキストを入力して送信するなど)。 Webサイトを介したユーザーのフローをエミュレートするために使用されます。カピバラを使用すると、次のように記述できます。

describe "the signup process", :type => :feature do
  before :each do
    User.make(:email => '[email protected]', :password => 'caplin')
  end

  it "signs me in" do
    visit '/sessions/new'
    within("#session") do
      fill_in 'Login', :with => '[email protected]'
      fill_in 'Password', :with => 'password'
    end
    click_link 'Sign in'
    page.should have_content 'Success'
  end
end

Cucumberは、コードにマッピングされる人間が読み取り可能なテストを作成するツールです。これを使用して、上記の例を次のように書き換えることができます。

Scenario: Signup process

Given a user exists with email "[email protected]" and password "caplin"
When I try to login with "[email protected]" and "caplin"
Then I should be logged in successfully

ほとんどプレーンテキストの解釈は、開発者以外の人に渡すのに便利ですが、実際に動作するようにマップされたコードも必要です(ステップ定義)。

通常、Webサイトをテストする場合はCapybaraを使用し、開発者以外のユーザーとテストを共有する必要がある場合はCucumberを使用します。これら2つの条件は独立しているため、どちらか一方または両方なしで使用できます。

PS:コードスニペットには、いくつかのRSpecもあります。これは、キュウリまたはカピバラが単独ではtestできないためです。彼らは、実際の「合格または不合格」作業を行うために、RSpec、Test :: Unit、またはミニテストに依存しています。

95
Kostas

cucumber は、ビジネスで読み取り可能なドメイン固有の言語でテストシナリオを表現するBDDツールです。

capybara は、RORアプリケーション用の自動テストツール(よく使用されます)です。

Capybara githubページには、 cuymberでcapybaraを使用 の例があります。

5
orde

キュウリは汎用のBDDツールです。 Webアプリについては何も知りません。したがって、Cucumberのステップ定義は、WebアプリをテストするためにCapybaraを呼び出します。

4
Andy Waite
|-------------------------------|-------------------------------|
|      Cucumber                 |     Capybara                  |
|-------------------------------|-------------------------------|
| Test cases are more readable  | Test cases are not readable;  |
| and written in plain english  | Capybara also wraps RSpec and |
| text as a DSL                 | you follow the same pattern to|
|                               | write test cases              |
|-------------------------------|-------------------------------|
| Easy to iterate data using    | Not easy to iterate data      |
| tables                        |                               |
|-------------------------------|-------------------------------|
| Cucumber has its own runner   | Uses RSpec runner to execute  |
|                               | tests                         |
|-------------------------------|-------------------------------|
| Default HTML reporter         | No default HTML reporter      |
|-------------------------------|-------------------------------|
| Need to learn cucumber regex  | No such concept               |
| pattern to write step-        |                               |
| definition which is the middle|                               |
| man for test case and script. |                               |
| Btw, the regex pattern is not |                               |
| essential for all cases.      |                               |
|-------------------------------|-------------------------------|
| You can use the native        | (Wrapper)/Built on top of     |
| Selenium-webdriver methods    | Selenium-webdriver Ruby       |
| while using Cucumber; Cucumber| library when used with        |
| is just an additional         | Selenium; it can also be used |
| framework to your generic     | with two other drivers.       |
| automation framework          |                               |
|-------------------------------|-------------------------------|
| Pure BDD framework (In theory | Traditional functional test   |
| BDD sounds great. In practice,| model for end-to-end testing  |
| product owners and developers |                               |
| rarely continue to use BDD)   |                               |
|-------------------------------|-------------------------------|
0
Prashanth Sams