以前は、アプリケーションのテストを自動化するためにRobot Frameworkを使用しましたが、新しいクライアントがSpock + GEBに注目してください。私はそれを使ったことはありませんが、これらのツールの2つをすぐに比較して選択する必要があります。彼らがどのように異なっているのか、それぞれの長所と短所は何かを理解する助けてください。Spock + GEB vs. Robot Framework
答えて
私は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
感謝を!
このような完全で詳細な対応をありがとうございます。しかし、残念ながら、私はこのすべてにおいて完全なノブであり、以下の質問はまだ私にとって重要です: 1. GEBとSpockのやり取りは?私は公式サイトを見ましたが、Geb + Spockで作業するために必要な情報は見つかりませんでしたか?どのように私のPC上で最もシンプルなテストを書くのを開始する。 2.私はすべてのテストがgroovyで書かれていることを理解しており、テストアプリケーションはJavaで書かれています。しかし、私はロボットのフレームワークに比べて、これの強み/弱みの側面を理解していませんか? ありがとうございます。 – Evgeniy
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
2)すべてのテストはgroovy - 99%Javaで行います。テストではGUI(web-driver)+他人チェック(DBチェック、RESTチェックなど)をチェックできます。私はそれがこのフレームワークの強い側だと思う。 – plsgogame
- 1. GebとSpockのページオブジェクトのインターフェイス
- 2. gebとSpockのモバイルアプリの学習
- 3. Robot Frameworkダウンロードファイル
- 4. tail Robot Frameworkのログファイル
- 5. Robot FrameworkのSeleniumキーワード
- 6. Selenium Robot Framework Web Locator
- 7. GebとSpockを使用してWebページの画像を検証
- 8. Spockデータテーブルを使用してGebページオブジェクトをテストする
- 9. テストでのページオブジェクトの切り替え - Geb Groovy Spock
- 10. Geb&Spockでエクステントレポートを生成する方法
- 11. Robot Frameworkのデータ駆動シナリオ
- 12. Loop Iteration Robot Frameworkの場合
- 13. 同じテストでGeb&Spockを使用してブラウザを再起動する
- 14. Robot FrameworkのInternet Explorerのパフォーマンスが悪い
- 15. サーバー上の場所のロギング - Robot Framework/CMD
- 16. Robot Framework - Selenium2library - ページのファビコンを確認
- 17. Robot FrameworkにログインするPythonログ
- 18. MongoDBLibrary for Robot Frameworkのインストール方法
- 19. Robot Frameworkレポートへのスタッフ端末コマンドエラー
- 20. Robot Frameworkでforループを作成する
- 21. コレクションの問題Robot Frameworkのアイテム比較
- 22. Robot FrameworkでC#オブジェクトをインスタンス化する
- 23. Robot Frameworkダイアログのポップアップの問題
- 24. GebとSpockでGrailsテストをパスするには? (grails-functional-test-developmentを使用)
- 25. eclipse IDEでgeb-spockテストを実行することが可能です
- 26. Geb/Spock via Gradleを使用した複数のブラウザテスト:geb.envプロパティの使用
- 27. Entity Framework vs. AssociateWith
- 28. Robot FrameworkのRobot Resource FileとRobot Test Suiteの違いは何ですか?
- 29. geb-gradle-saucelabsインテグレーションのドライバエラー
- 30. Entity Framework ProjectionクラッシュVS
あなたが選んだ選択肢と理由を共有できますか? – binithb
最初の選択はRFでした。 UIのスモークテストを簡単に開始することができます。これはpythonのスクリプトで拡張されているので、Webサービスを通じてxmlファイルのロードをテストし、アプリケーションのデータとDB /ファイルのデータを比較することもできます。 これでGeb + Spockに切り替える予定です。理解がより困難です。それは私の決断ではなく、Geb + Spockを使うプロジェクトの方向性です。私はちょうどそれに取り組むようになった、そして、このやり方はそれほどあきらめないように見える。また、ロードテストを行うために、LoadUIからgebのスクリプトを起動する可能性があることがわかったので、これは良い点です。 – Evgeniy
GEBとRobotの両方をいくつかのプロジェクトに使用しました。最近のロボットでもロボットを使用し続けています。私たちが見つけた特典の1つは、テストチームがロボットテストを書くことが快適であることです。したがって、テストはテスターと開発者の両方によってテストされています(GEBの場合は開発者のみでした)。私たちのテスターは現在、Robotを他のプロジェクト(主にWebサービスのテスト)に使用しているため、プロジェクトごとに新しいツールを習得しなくても簡単に移行できます。ロボットテストの作成はシンプルで、クロスブラウザーでも簡単に実行できます。 – Bryce