12

私は現在、すべてのフロント エンド テストに Watir-webdriver を使用していますが、開発チームは Capybara を使用して Jenkins CI でテストを実行しています。どちらも同じ Cucumber 機能を使用しています。

個別のテストを効果的に 2 回行う価値はありますか? 使用するのに適したツールはどれですか? Web で入手できるすべての比較を読み、watir-webdriver の使用を好みますが、Capybara ではヘッドレス テストをシームレスに使用できます。

では、有用な考えやアイデアはありますか? 私は岐路に立たされており、Watir-webdriver をあきらめて、残りの開発チームと一緒に Capybara を使用するかどうかはわかりません。

4

3 に答える 3

6

同じキュウリ機能に 2 つの異なるツールを使用するかどうかは、テスト ドメインに依存し、どちらが最も適しているかについてです。Watir-webdriver が Capybara-webdriver よりもフロントエンド テストに適している場合、またはその逆の場合。Capybara (アジャイル用語を使用すると、デザイン スパイク) を調査して、慣れ親しんだものと比較するのに時間を費やす必要があります。慣れ親しんだフレームワークでは(私の経験では)非常に困難ですが、客観的になるようにしてから、変更の費用便益分析を行ってください。直接費用は時間/労力にすぎないかもしれませんが、それでもプロジェクトの実施に影響を与える可能性がある費用です。

Capybara は DRY プログラミングと非互換ではありません - Capybara のカスタム セレクターを使用すると、抽象化レイヤー (阿部が返信で述べているように) が可能です。これらが作成されたら、次のようにカスタム セレクターでカピバラ ファインダーとマッチャーを使用できます。

Capybara.add_selector(:slide_show) do
  xpath { ".//div[contains(@class,'slideshow')]" }
end

Capybara.add_selector(:slide_show_element) do
  xpath { ".//div[contains(@class,'slideshowelem')]" }
end

カピバラの検索を使用できます。

find(:slide_show_element, 'Sunset').click

Cucumber の観点からは、そのロケーター文字列をステップから渡すことができます。

And I Click "Sunset" in the "Holiday Pictures" Slide Show

このようなステップ定義を介して;

Given /^(?:I |)Click "(.*?)" in the "(.*?)" Slide Show$/i do |picture,slideshow|
   within(:slide_show, slideshow) do 
     find(:slide_show_element, picture).click
   end
end

2 つのフレームワークがワークフローに影響を与えていますか? そして、この 2 つを調整するには、容認できないほどの時間の損失が伴うでしょうか?

于 2013-05-01T10:20:11.677 に答える
2

現在のプロジェクトについても、まったく同じ種類の議論を行っています。開発者の 1 人は Capybara の大ファンですが、私は Watir-webdriver に精通しています。

Capybara は非常に単純なので、テストをすぐに開始して実行できますが、時間の経過とともにメンテナンスの問題が発生することを心配しています。また、その単純さが柔軟性の欠如を意味する可能性があることも心配しています。

Watir-webdriver を使用すると、自分の Web ページの抽象化レイヤーを記述して、必要な/必要な要素を正確に識別できます (柔軟性)。つまり、「テスト」レイヤーは、テスト シナリオを書いている人にはシンプルに見えるということです。 Capybara ですが、コードは本質的に DRY に保たれているため、時間の経過に伴うメンテナンスは迅速です。そのページ要素レイヤーを作成するための初期費用はもう少しかかりますが、フレームワークの将来のメンテナンスは迅速に行われるという安心感があります。

もちろん、私は偏見がありますが、偏見はありません。カピバラファンからの反論を聞きたいです.

于 2012-12-21T15:37:56.453 に答える
1

Linux を使用している場合は、watir-webdriver を使用してヘッドレスで実際のブラウザーを実行できます: http://watirwebdriver.com/headless/

watir-webdriver を使用してヘッドレス ブラウザを実行する方法がおそらくあるでしょう。

どちらかのツールを使用する方がよいか、両方を使用する方がよいかは、コンテキストによって異なります。両方のツールを使用する際に問題はありますか?

于 2012-12-21T15:01:39.170 に答える