2013-05-10 12 views
9

以前は、アプリケーションのテストを自動化するためにRobot Frameworkを使用しましたが、新しいクライアントがSpock + GEBに注目してください。私はそれを使ったことはありませんが、これらのツールの2つをすぐに比較して選択する必要があります。彼らがどのように異なっているのか、それぞれの長所と短所は何かを理解する助けてください。Spock + GEB vs. Robot Framework

+0

あなたが選んだ選択肢と理由を共有できますか? – binithb

+0

最初の選択はRFでした。 UIのスモークテストを簡単に開始することができます。これはpythonのスクリプトで拡張されているので、Webサービスを通じてxmlファイルのロードをテストし、アプリケーションのデータとDB /ファイルのデータを比較することもできます。 これでGeb + Spockに切り替える予定です。理解がより困難です。それは私の決断ではなく、Geb + Spockを使うプロジェクトの方向性です。私はちょうどそれに取り組むようになった、そして、このやり方はそれほどあきらめないように見える。また、ロードテストを行うために、LoadUIからgebのスクリプトを起動する可能性があることがわかったので、これは良い点です。 – Evgeniy

+1

GEBとRobotの両方をいくつかのプロジェクトに使用しました。最近のロボットでもロボットを使用し続けています。私たちが見つけた特典の1つは、テストチームがロボットテストを書くことが快適であることです。したがって、テストはテスターと開発者の両方によってテストされています(GEBの場合は開発者のみでした)。私たちのテスターは現在、Robotを他のプロジェクト(主にWebサービスのテスト)に使用しているため、プロジェクトごとに新しいツールを習得しなくても簡単に移行できます。ロボットテストの作成はシンプルで、クロスブラウザーでも簡単に実行できます。 – Bryce

答えて

10

私はGebについて教えてください、私はもっと6ヶ月ウェブアプリケーションをテストするためにgebishを使います。それは彼のすべての利点です:

  • クロスブラウザのオートメーション
  • jQueryのようなAPI
  • ページ
  • 非同期性
  • オブジェクトのテスト
  • について

今すぐ詳細システムインテグレーションを構築それぞれの

  • クロスブラウザのオートメーション

ゲブは、ブラウザの自動化のためのwebdriverをライブラリを活用しています。つまり、GebはWebDriverが動作するブラウザで動作し、WebDriverが動作するブラウザのリストは常に成長しています。

コアサポートされているブラウザは以下のとおりです。

  • FireFoxの
  • Internet Explorerの
  • Google Chromeの
  • オペラ

実験的サポートが用もあります:

  • クロームAndroid上
  • SafariのiPhone上& iPadのリモートドライバをサポートしwebdriverを

。これにより、別のマシンで実行されているブラウザを自動化することができます。つまり、MacやLinuxマシンの快適さからIEブラウザに対してテストスイートを簡単に実行できます(逆も同様)。

  • jQueryのようなAPI

ゲブは、コンテンツで取得するための簡潔で効果的な方法を提供するために、jQueryのからインスピレーションを取ります。これはNavigator APIと呼ばれます。

ドル関数は、CSSセレクタ、属性マッチャおよび/またはインデックスに基づいてコンテンツを選択するためにどこでも使用できます。

// CSS 3 selectors 
$("div.some-class p:first[title='something']") 

// Find via index and/or attribute matching 
$("h1", 2, class: "heading") 
$("p", name: "description") 
$("ul.things li", 2) 

// 'text' is special attribute for the element text content 
$("h1", text: "All about Geb") 

// Use builtin matchers and regular expressions 
$("p", text: contains("Geb")) 
$("input", value: ~/\d{3,}-\d{3,}-\d{3,}/) 

// Chaining 
$("div").find(".b") 
$("div").filter(".c").parents() 
$("p.c").siblings() 
  • はページ

ゲブはあなたに簡単にあなたのページの興味深い部分を定義するために、開発者を可能にするために、GroovyのDSL機能を活用し、ページオブジェクトパターンの最初のクラスのサポートを持っているオブジェクト簡潔で、maintanableと拡張可能な方法。

import geb.Page 

class LoginPage extends Page { 
    static url = "http://myapp.com/login" 
    static at = { heading.text() == "Please Login" } 
    static content = { 
     heading { $("h1") } 
     loginForm { $("form.login") } 
     loginButton(to: AdminPage) { loginForm.login() } 
    } 
} 

class AdminPage extends Page { 
    static at = { heading.text() == "Admin Section" } 
    static content = { 
     heading { $("h1") } 
    } 
} 
  • 非同期性

現代のウェブページは、AJAXリクエストやアニメーションなどの非同期操作でいっぱいです。 Gebは、このような人生のためのサポートを提供しています。

すべてのコンテンツルックアップまたは操作は、waitFor句でラップすることができます。

waitFor { 
    $("p.status").text() == "Asynchronous operation complete!" 
} 

これにより、一定の時間(設定可能)が経過するまで条件のテストが継続されます。同じテクニックを使ってコンテンツを待つだけで、必ずしもコンテンツがある特性を持つ必要はありません。

def dynamicParagraph = waitFor { $("p.dynamically-added") } 
dynamicParagraph.text() == "Added dynamically!" 

また、ページのコンテンツのDSLは、この定義では

import geb.Page 

class DynamicPage extends Page { 
    static content = { 
     dynamicParagraph(wait: true) { $("p.dynamically-added") } 
    } 
} 

オブジェクトにdynamicParagraphが要求されたとき、ゲブはimplictly一定時間を待つことになるため、コンテンツが暗黙のうちに待っていたしなければならない定義することができますそれが現れるようにする。

  • テスト

ゲブは、このようなゲブは、これらのすべてで素晴らしい作品ながら

(Cuke4Duke経由)スポック、JUnitの、TestNGの、EasyBやキュウリなど人気のテスティングフレームワークのための統合モジュールを提供しますフレームワーク、それは本当にスポックと輝いています。 Spockは、Gebでの使用に適した革新的なテストフレームワークです。 Spock + Gebを使用すると、非常に明快で簡潔で簡単にテスト仕様を理解することができます。

import geb.Page 
import geb.spock.GebSpec 

class LoginSpec extends GebSpec { 
    def "login to admin section"() { 
     given: 
     to LoginPage 

     when: 
     loginForm.with { 
      username = "admin" 
      password = "password" 
     } 

     and: 
     loginButton.click() 

     then: 
     at AdminPage 
    } 
} 

ゲブは、任意のビルドシステムに簡単に統合でき、そして次のビルド/プロジェクトシステムとの統合に関する情報と例が利用可能であるシステムインテグレーションをビルドします。

  • グレード
  • Grails
  • Mavenの

あなたはここに私の例(スポック+ GEB)を見ることができます:github

をここにGEBについて詳しく読む:Official Site

感謝を!

+0

このような完全で詳細な対応をありがとうございます。しかし、残念ながら、私はこのすべてにおいて完全なノブであり、以下の質問はまだ私にとって重要です: 1. GEBとSpockのやり取りは?私は公式サイトを見ましたが、Geb + Spockで作業するために必要な情報は見つかりませんでしたか?どのように私のPC上で最もシンプルなテストを書くのを開始する。 2.私はすべてのテストがgroovyで書かれていることを理解しており、テストアプリケーションはJavaで書かれています。しかし、私はロボットのフレームワークに比べて、これの強み/弱みの側面を理解していませんか? ありがとうございます。 – Evgeniy

+0

Answer: 1)あなたのPC(grale、maven、grails)にビルドオートメーションをインストールする必要があります。私はgradleを使用しています。その後、gebのホームページに行き、configビルドファイル(pom.xml-maven、build.gradle-gradle)[ここ](http://www.gebish.org/manual/current/build-integrations.html)を見てください。 – plsgogame

+0

2)すべてのテストはgroovy - 99%Javaで行います。テストではGUI(web-driver)+他人チェック(DBチェック、RESTチェックなど)をチェックできます。私はそれがこのフレームワークの強い側だと思う。 – plsgogame

関連する問題