DevilKing's blog

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

0%

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部分,同时,针对多浏览器的兼容性方面,应该是未来的一个很好的方向。

本周总结:

  • 打包平台一期基本完成
  • 前端页面改版基本完成
  • 账户中心demo支持第三方通过cookies登录
  • falcon监控部分完成

未完成:

  • uuap的原理的场景图
  • 前端部分优化

本周所得:

  • spring boot中mvc的部分以及通过httpBasic中的header部分来验证
  • docker部分mysql,redis以及es使用正常

下周计划:

  • 想通uuap的流程,以及利用session来登录
  • 前端访问优化的一些策略进行实践,例如图片压缩,以及合并等

帐号中心,总感觉差一张纸,有些东西没有想透,导致现在有点进度缓慢,这块后续要加强

docker部分,自己的机器搭一个docker register来存放镜像?

强制使用下tmux来使用命令行的相关内容

ngxtop作为分析nginx日志一个很重要的工具,记录一些相关的使用和命令部分

1
ngxtop --help

一些说明:

Options:

1
-l <file>, --access-log <file> access log file to parse

指定access log

1
-f <format>, --log-format <format> log format as specify in log_format directive. [default: combined]

指定 log format

1
--no-follow ngxtop default behavior is to ignore current lines in log and only watch for new lines as they are written to the access log. Use this flag to tell ngxtop to process the current content of the access log instead

ngxtop默认会对accesslog的新增行进行统计, 通过这个选项可以让ngxtop统计旧log

1
-t <seconds>, --interval <seconds> report interval when running in follow mode [default: 2.0]
1
-g <var>, --group-by <var> group by variable [default: request_path]

基于字段分组

1
-w <var>, --having <expr> having clause [default: 1]

分组之后再筛选

1
-o <var>, --order-by <var> order of output for default query [default: count]

排序字段

1
-n <number>, --limit <number> limit the number of records included in report for top command [default: 10]

默认显示前多少条

1
-a <exp> ..., --a <exp> ... add exp (must be aggregation exp: sum, avg, min, max, etc.) into output 

对输出字段做附加条件 sum/avg/min/max 可选

1
2
3
4
-v, --verbose more verbose output
-d, --debug print every line and parsed record
-h, --help print this help message.
--version print version information.

Advanced / experimental options:

1
-c <file>, --config <file> allow ngxtop to parse nginx config file for log format and location 

指定nginx config文件,ngxtop 会自动解析配置文件,分析出access log的位置以及格式

1
2
3
4
-i <filter-expression>, --filter <filter-expression> filter in, records satisfied given expression are processed

-p <filter-expression>, --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase

常用的一些demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ngxtop -l nginx.log

top 10 request path with status 404:

$ ngxtop top request_path --filter 'status == 404'

top 10 requests with highest total bytes sent

$ ngxtop --order-by 'avg(bytes_sent) * count'

top 10 remote address

$ ngxtop --group-by remote_addr

find request with 4xx or 5xx status

$ ngxtop -i 'status >= 400' -l nginx.log

眨眼之间,国庆就过去,但自己之前计划的事情没做几件,已经到拖延症晚期了。。

感觉还是自己想的太多,各种不敢去做,不敢去尝试,导致自己各种拖延,然后计划好的事情却没有去执行,各种不爽。。

还是要敢于尝试,敢于去做一些自己感兴趣的东西,不要害怕,勇敢地去做一些事情,加油!

其实,很想表现出自己的不同,表现出自己的勤奋和努力,但总是感觉,自己的努力不知道是不是对的,自己的选择不知道是不是正确的,这真是莫名的优越感。。

本周总结:

  • spring boot帐号中心部分完成简单的认证
  • docker部分基本完成,除了网络
  • 前端页面部分完成初版

未完成:

  • docker register部分搭建
  • session在帐号中心的存储

本周所得:

  • spring boot部分关于mvc以及一些认证方面的处理
  • docker部分的使用

下周计划:

  • falcon监控部分的完成
  • 帐号中心存储session部分完成

户口迁移的事情搞定,然后就是档案的事情了,加油,争取下周搞定

docker部分,了解一些原理方面的东西,例如cgroup部分等