DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

geb简介

geb

geb是什么

一个浏览器自动化测试的框架,基于selenium框架以及groovy语言

geb的作用

  • 主要是用于页面级别的测试,通过写jQuery的方式,来测试前端

  • 黑盒测试,主要是来测试页面是否正确返回,以及相关页面功能是否正常

  • 替代前端的checklist,代码具有可复制性

geb的问题

  • 由于基于的是浏览器的测试,这块测试的自动化程度有多少?怎么在相关的测试环境来测试?需要相关的测试环境有图形界面?

  • 后续的发展方向?关于黑盒测试部分,自动化程度很受影响,后续的发展? selenium?

geb的使用

基本的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
Browser.drive{
go "http://gebish.org"

assert title == "Geb - Very Groovy Browser Automation"

$("#sidebar .sidemenu a", text: "jQuery-like API").click()

assert $("#main h1")*.text() == ["Navigating Content", "Form Control Shortcuts"]

assert $("#sidebar .sidemenu a", text: "jQuery-like API").parent().hasClass("selected")

}.quit()

运行该groovy.script,即可进行相关的测试程序

程序说明:

  • 整体的框架基于browser.drive,基于groovy脚本来运行

  • 很重要的依赖因素:Browser 以及drive() method

  • 支持类似jquery的方式来进行相关assert

geb其他方面

  • Pages
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class SearchPage extends Page {
static url = "search"
static at = { title == "Search engine" }
static content = {
searchField { $("input[name=q]") }
searchButton(to: ResultsPage) { $("input[value='Search']") }
}

void search(String searchTerm) {
searchField.value searchTerm
searchButton.click()
}
}

Browser.drive {
to SearchPage
search "Chuck Norris"
assert result(0).text().contains("Chuck")
}

通过上述方式,进行相关页面的定义,进行相关页面的操作

  • Modules

  • js的相关测试

1
2
3
4
5
6
7
<html>
<head>
<script type="text/javascript">
var aVariable = 1;
</script>
</head>
</html>

针对这部分的测试案例:

1
2
3
4
Browser.drive {
go "/"
assert js.aVariable == 1
}

这样可以测试相关js的变量以及相应的运行流程。

这里有有个问题,众多周知,angularjs,形成了一个$scope,这块针对js的测试,可否加入angularjs的支持?

  • 下载方面的测试。

  • cloud browser testing
    这部分,多浏览器的支持?

总结

geb作为黑盒测试部分,确实是个好东西,替代前端测试的checklist部分,同时,针对多浏览器的兼容性方面,应该是未来的一个很好的方向。