此前我使用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. Geb + Spock + Groovy设置
- 2. 学习GEB和Spock
- 3. Spock/Geb测试污染
- 4. Robot Framework + Appium + Perfecto
- 5. Robot Framework和Django
- 6. RIDE(Robot Framework)
- 7. TestNG vs Spock for Automation
- 8. 用spock-geb记录右键点击?
- 9. 获取GEB + Spock + Groovy中的错误
- 10. geb spock并关闭浏览器窗口
- 11. 运行geb + spock无头测试
- 12. 检查Geb/Spock测试中的网址
- 13. 使用Spock和Geb使用数据库。
- 14. Spock vs FitNesse
- 15. ZK Framework和Geb测试
- 16. Robot Framework找不到Python
- 17. Robot Framework - pybot命令输出
- 18. Robot Framework浏览器支持
- 19. 集成groovy和Robot Framework
- 20. Robot Framework - 使用用户库
- 21. Robot Framework文件上传
- 22. Selenium Robot Framework弹出访问
- 23. Robot Framework属性文件
- 24. 使用Robot Framework for ATDD
- 25. 使用Robot Framework Ldap库
- 26. 从Robot Framework调用Python
- 27. Robot Framework获取文本
- 28. Spock Framework:间谍问题
- 29. 浏览器在同一测试中使用Geb&Spock重启
- 30. 将Robot终端命令错误添加到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