此前我使用Robot Framework來自動測試應用程序,但是一位新客戶請求關注Spock + GEB。我從來沒有使用它,但我需要快速比較這些工具中的兩個並做出選擇。請幫助我理解它們之間的區別以及它們各自的優缺點。Spock + GEB vs. Robot Framework
回答
我告訴你關於Geb,我使用gebish測試web應用程序更多6個月。這是他的所有優點:
- 跨瀏覽器的自動化
- 的jQuery樣API
- 頁面對象
- 異步性
- 測試
- 構建系統集成
現在更多細節他們每個人。
- 跨瀏覽器的自動化
蓋布充分利用了webdriver的庫瀏覽器自動化。這意味着Geb可以與WebDriver一起使用的任何瀏覽器一起工作,並且WebDriver與其一起工作的瀏覽器列表正在不斷增加。
核心支持的瀏覽器包括:
- 火狐
- 的Internet Explorer
- 谷歌瀏覽器
- 歌劇
還爲實驗性支持:
- Android版Chrome
- iPhone上的Safari & 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功能,使您的開發人員在很容易地定義你的頁面的有趣的部分簡潔,可靠和可擴展的方式。
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等待一定的時間爲它出現。
- 測試
蓋布提供集成模塊流行的測試框架,如斯波克,JUnit的,TestNG的部分,easyb和黃瓜(通過Cuke4Duke)
雖然蓋布的偉大工程與所有的這些框架,它真的閃耀着Spock。 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
}
}
- 構建系統集成
蓋布很容易集成到任何的構建系統,並與下面的生成/項目系統集成的信息和示例,請:
- Gradle
- Grails
- Maven的
你可以看看我的例子(斯波克+ GEB)位置:github
瞭解更多關於創業板的位置:Official Site
謝謝!
非常感謝您提供瞭如此完整和詳細的回覆。但是,不幸的是,我在這一切中都是一個完整的noob,下面的問題對我仍然有用: 1. GEB如何與Spock交互?我查看了官方網站,但是還沒有找到我需要設置爲使用Geb + Spock的信息?如何開始在我的電腦上寫一個最簡單的測試。 2.據我所知,所有的測試都是用groovy編寫的,目的在於測試應用程序是用Java編寫的。但是我不明白這個與機器人框架相比的強弱之處? 感謝您的幫助。 – Evgeniy 2013-05-12 17:15:02
回答: 1)首先,您需要在PC上安裝編譯自動化(gradle,maven,grails),我使用gradle,因爲 - DSL語言。之後,進入geb主頁,看看如何配置構建文件(pom.xml - maven,build.gradle - gradle)[here](http://www.gebish.org/manual/current/build-integrations.html) – plsgogame 2013-05-13 07:22:40
2)所有的測試都寫在groovy - 99%的Java上,在你的測試中你可以檢查GUI(網絡驅動程序)+其他檢查(檢查數據庫,檢查REST等)。我認爲這個框架很強大。 – plsgogame 2013-05-13 07:25:47
- 1. Spock/Geb測試污染
- 2. Robot Framework和Django
- 3. Robot Framework + Appium + Perfecto
- 4. 檢查Geb/Spock測試中的網址
- 5. geb spock並關閉瀏覽器窗口
- 6. ZK Framework和Geb測試
- 7. Robot Framework獲取文本
- 8. Robot Framework屬性文件
- 9. 集成groovy和Robot Framework
- 10. 從Robot Framework調用Python
- 11. 使用Robot Framework for ATDD
- 12. Robot Framework瀏覽器支持
- 13. 使用Robot Framework Ldap庫
- 14. Robot Framework - pybot命令輸出
- 15. Robot Framework找不到Python
- 16. Robot Framework文件上傳
- 17. 如何在Grails Geb/Spock測試用例中獲得sessionFactory?
- 18. Spock如何才能重試失敗的Geb測試?
- 19. 使用geb&spock時在頁面之間傳遞狀態
- 20. 如何在Geb&Spock中生成擴展程序報告
- 21. 是否可以在Eclipse IDE上運行geb-spock測試
- 22. 學習geb和Spock移動應用程序
- 23. 在每次Geb Spock測試後退出驅動程序
- 24. 使用gradle運行spock/geb測試時出現MissingMethodException錯誤
- 25. 在網頁上驗證圖像使用Geb和Spock
- 26. 在Bamboo中運行Robot Framework UI測試
- 27. Robot Framework的定製庫進口與NAME
- 28. Robot Framework - 如何連接到Amazon Device Farm
- 29. 如何在Robot Framework中創建庫?
- 30. Intellij想法Robot Framework關鍵字
您可以分享您所做的選擇以及爲什麼 – binithb 2014-01-10 07:24:00
第一個選擇是RF。啓動並快速獲得UI的煙霧測試很簡單。它擴展了python的腳本,所以我們也能夠成功測試通過web服務加載xml文件,並將應用程序中的數據與DB /文件中的數據進行比較。 現在我們要切換到Geb + Spock。理解比較困難。這不是我的決定,它是使用Geb + Spock的項目方向。我剛剛開始研究它,這種方式看起來不遜色。另外我發現可以從LoadUI啓動geb的腳本來進行負載測試,所以這可能是一個很好的補充。 – Evgeniy 2014-01-13 09:32:42
我們已經在幾個項目中使用了GEB和Robot;並在最近的機器人上繼續使用Robot。我們發現的一個好處就是我們的測試團隊很樂意編寫機器人測試,因此我們的測試現在都由測試人員和開發人員編寫(與GEB一樣,它只是開發人員)。對於我們而言,我們的測試人員現在將Robot用於其他項目(主要是測試Web服務),因此他們可以輕鬆地在項目之間遷移,而無需爲每個項目學習新的工具。編寫機器人測試很簡單,並且很容易讓他們運行跨瀏覽器,這也很好。 – Bryce 2014-11-23 23:14:52