异地金融研发团队的敏捷实施策略-Top100Summit

通过重构提高组织灵活性-百度技术沙龙

重构到管道式函数-软件匠艺小组

全球敏捷之旅2015天津站花絮

无GUI的server上通过虚拟显示来运行RobotFramework+Selenium2 (webdriver)

RobotFramework是强大的开源自动化测试框架,与selenium2(webdriver)结合,可以自动化对网页应用进行测试,甚至A-TDD。

selenium需要打开浏览器,而浏览器需要图形化界面。如果你在liunx服务器上直接运行firefox,你会得到:

1
2
# firefox
Error: no display specified

如何在这种限制下进行Robot测试呢?

Xvfb是流行的虚拟现实库,可以使很多需要图形界面的程序虚拟运行。

pyvirtualdisplay是该库的python封装,进一步我们可以将其封装在Keywords中。那么你的Robotcase可能看起来是这样:

~ ~ ~
Run Keyword If ‘${IsVirtualDisplay}’==’NO’ Open Virtual Display
Open Browser http://someurl firefox
Some Operations…
Close All Browsers
Run Keyword If ‘${IsVirtualDisplay}’==’NO’ Close Virtual Display

在本地具有GUI的机器进行Test case调试时,可以关闭该开关,而在CI服务器配置中,可以设置开关来打开虚拟显示。

1
pybot -v IsVirtualDisplay:YES example.tsv

另外,Selenium2Library是在GitHub上的开源项目,很好将selenium2(webdriver)封装成Robot Keyword,但是往往这些还不够用。
肯定需要实现产品特性专用的Keyword Library。
如果单独写一个库,会无法享受到Selenium2Library封装好的,特别是对浏览器句柄封装好的keywords。
因此,可以考虑继承Selenium2Library,注意,该库使用了Decorator来将分布在不同类中的public方式暴露并组装成整体。

好用的Git config 缩写配置

初次安装运行Git,建议在命令行中运行以下命令,配置缩写和颜色,支持中文文件名显示和提交等。
可以有效提高效率。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
git config --global --add user.email mebusw@163.com
git config --global --add user.name JackyShen
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.last 'log -1 HEAD'
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global alias.co checkout
git config --global core.quotepath false
git config --global merge.tool kdiff3
git config --global meregtool.kdiff3.path /usr/bin/kdiff3
git config --global alias.visual !gitk

建立忽略文件 ~/.gitignore_global

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
*.pyc

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store*
ehthumbs.db
Icon?
Thumbs.db
.svn
*.bak