L4D2中国ntp服务器地址里中ROBOT(也就是一...

8115人阅读
自动化测试(5)
RobotFramework(5)
时有太多的选择:
使用 Python, Jython 还是 Java?
测试用例使用哪种输入格式(HTML, Text, BDD)?
要使用 Robot IDE(RIDE) 吗?
如何在本地和持续集成环境中运行相同的测试?
如何运行所有的测试 (scripting, ANT, Maven)?
那什么是最好的选择呢?我见过的世面太多了。当然,在 Eclipse 中用 Maven 做 Robot 测试非常酷。BDD 相比较 HTML 更适合敏捷开发。
所有这些有着相同的共性:简单!这不仅意味着设置和运行简单,还意味着更容易排错。在不同技术背景的团队合作间,这尤其重要。
接下来我们用一个完整的例子展示 Robot Framework 的使用方法。
开始测试工程前,首先要想好被测系统需要哪些测试库:
是测 web 应用?那你可能需要
是测数据库? 和 都有相应的数据库测试库。
是测试 SSH/SFTP?那你可能需要 。
这个列表可以继续列下去,直到没有可用的测试库为止。这时候你就需要自己写啦(需要单独写一篇文章来阐述)。
为什么如此重要?测试库的选择直接影响到了是使用 Python, Jython 还是 Java 版的 Robot Framework。某些测试库只有 Java 的实现,如果要用纯 Python 来调用此库,则要求其实现 Remote Library 接口。因此,在测之前,需要好好想想。
本文的代码在
我们假设被测系统是一个利用 MySQL 数据库做存储的 web 应用(非常普遍)。浏览器使用 Python 的 SeleniumLibrary,数据库使用 Java 版本的 DatabaseLibrary,并用 Remote Library 接口。
下图是测试框架的概览:
测试框架概览
Selenium 需要 Selenium Server。这可以是 Robot Framework 所在的同一台机器,也可以是另一台可通过 TCP/IP 连接的服务器。Database Library Server 同理。虽然 DatabaseLibrary 可以本地使用,但那就意味着必须使用 Jython 来测试了。当然也可以在同一台机器上运行多个服务器。在一些正式的测试环境中,Robot Framework 和 CI (持续集成) 服务器经常部署在一起。然后,Selenium Server 通常跑在 Windows 服务器上,因为需要尽量模拟用户的使用场景。DatabaseLibrary Server 也可以部署在 CI 服务器上。
测试实现和管理
最后让我们来实现该测试。不是每一个细节都会 cover,具体可以看 。
但在此之前,让我们再多做一些常规性考虑。比如用哪种格式来组织测试用例,是否使用 RIDE。而 RIDE 的使用又会直接影响到测试用例的格式。团队成员的技术背景,以及不同团队合作潜在的维护成本,对上述选择都有影响。
Tips: 如果你已经使用 Excel 来管理则是用例,你可以直接复制粘贴进 RIDE。
要我在本文的例子中选择,我会选择 HTML 格式和 RIDE,理由如下:
RIDE 相比较于最初版本已经有了十足的进步,支持关键字自动补全,实现 Test Suites 和 Resource Files 也十分便利。
使用 RIDE 不用特意考虑 BDD 风格。但其中有一些我不喜欢的语法元素。而且,非技术团队成员编写和维护测试用例比较困难,因为现在机器还不能完全看懂人类语言。并且我认为,如果 BDD 是唯一或者最重要的需求,其他那些只支持 BDD 的测试框架才会有优势。
HTML 格式有着简单粗暴的优点。你可以直接在浏览器中可视化这些测试用例,尤其是那些熟悉 Excel 的非技术团队成员,看到这些会感到非常亲切。
HTML 格式也有着缺点,在版本管理时,HTML 会带来各种各样的问题。
在实现测试时最重要的就是能够同时在本地和正式测试环境(CI 服务器)中运行。幸运的是,Robot Framework 支持向关键字传入参数,这样便能轻松切换环境:
参数为 web 应用的 URL
Selenium 服务器的 IP 地址与端口
Database Library 所使用的 JDBC 连接字符串
这些参数可以存储在变量文件中。这些变量文件可以在命令行中传入 Robot Framework。由于在本地测试和 CI 服务器中有不同启动脚本,这样便能实现不同环境的快速切换。
这意味着最好以如下的目录树来组织你的测试工程。
测试工程目录树
定义一个通用的目录树结构有助于工程的复用。上述的目录结构对我来说工作的不错,我很早就开始用啦。
Tips: 所有路径都应该用相对路径。
首先,我们将所有文件放于顶层文件 robot 中。然后将测试的实现和执行分开存放。在实现这边,testsuites 和 resource 分开存放。当然在一些大型工程中,还需要额外的子目录来更好的组织测试用例。更重要的是,最好用相对路径来引用这些文件。使用相对路径能够更好的在不同系统间移植,项目成员间通过版本管理系统也能更好地共享工程。
执行分支这边必须处理不同运行目标环境的问题,比如本地开发环境和正式的 CI 环境。若还有其他的部署环境需要在此目录中实现。scripts 目录用于保存执行用的脚本(robot 本身,Selenium Server, Database Library Remote Server),setting 目录放置特殊的变量文件。请注意,这些脚本写完之后就不应该频繁改动,对于配置文件亦是如此,除非执行环境有变化。
最后是 lib 文件夹,这取决于项目是否需要自己编写库文件。
当执行测试时,我坚持使用 shell 脚本。易于理解,历史悠久且不出问题,在 CI 环境中使用方便。当然,我们很可能需要两套不同的启动脚本,因为本地测试通常在 Windows 电脑上,而正式的 CI 环境是一些 bash 或者 csh 脚本。但需注意,这些写了“写了一遍就忘记”的脚本,其实并不复杂。
在最初,我们需要三个脚本:
robot 测试的启动脚本
Selenium Server 的启动脚本
Database Library Remote Server的启动脚本
我们也可以把三个脚本合并成一个,但为什么不这么做呢,因为其实后两个服务器只需启动一次,只有测试才需要重复执行。
首先我们需要在开发机器上*** Robot Framework 和库。我们假设平台是 Windows,在 Unix 上***也不会太复杂。
Robot Framework 同时支持 2.x 和 3.x。
***如下的工具包:
Python 2.7
Robot Framwork
Selenium2Library
Database Library Server
详细***可以直接查看
按顺序***,然后配置 PATH 目录为 “C:\Python27;C:\Python27\Scripts”。现在你可以用
“pybot -version” 来运行 Robot Framework,用
“C:\Python27\Scripts\ride.py”.来启动 RIDE。示意图如下,
Selenium Library 通常会包含一个对应的 Selenium Server JAR 包。为了独立使用不同目录下的 Selenium Server(比如其他小组成员***的),你需要指定一个新的环境变量 RF_HOME,该变量指向 Python 的***目录。该变量用于 selenium 服务器的本地启动脚本。
对于本地的 MySQL 数据库,其在此。然后*** MySQL,创建测试 schema 和相应的用户:
C:\xampp\mysql\bin&mysql -u root -p
mysql& create database
mysql& create user ‘dblib’@’localhost’ identified by ‘dblib’;
mysql& grant all privileges on databaselibrarydemo.* to ‘dblib’;
这里是工程的源码 。
在 robot/execution/local/scripts 是执行测试前所有需要运行的脚本。测试的实现在 robot/implementation/testsuites 目录中。测试用例可以直接用 RIDE 打开 implementation 目录,然后直接查看和修改。
为了运行测试,必须先启动 Selenium 服务器和 DBLibrary 服务器。然后运行 Testsuite。Windows 的批处理脚本在 robot\execution\local\scripts 目录中。因为都使用相对路径,一切应该按计划顺利运行。这里虽然在被测服务器上部署文件,但本地可以很容易地适配。
结论和感想
我们已经看到,Robot Framework 提供了众多功能和可能,即使同一件事也能用不同方法来完成。所以,在正式开始测试前做些基本分析是很有意义的。
使用 RIDE 使得实现测试功能更简单,尤其是那些非技术团队。简单意味着好维护(不只是 Robot Framework 测试哦 ;-))。
顺便说一下,我还没有明确指出过,Robot Framework 的 报表 和 logging 非常棒,在 troubleshooting 时非常有用。
Robot Framework 在各种不同的测试库中提供大量的测试功能。一旦决定哪个测试库最好用时,大大加速了写测试的过程,提高了生产力。
尤其是在许多不同工程工作时,一个通用的工程结构和工具非常有用。在一些公共的资源文件中也需要实现一些产品相关的关键字。
希望本文有助于你开始使用 Robot Framework,并有效地组织你的测试工程结构。当然,本例还有许多增强的地方,希望这是一个良好的起点。
原文链接:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19061次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'& 请教高手,l4d2如何像一代那样,弄出服务器浏览器severb ...
查看: 2943|回复: 3
UID1823576主题阅读权限20帖子精华0积分69金钱291 荣誉0 人气0 在线时间6 小时评议0
Lv.2游侠会员, 积分 69, 距离下一级还需 131 积分
帖子精华0积分69金钱291 荣誉0 人气0 评议0
不好意思&&网有点卡。。。发了两个相同帖。。。麻烦版主删一个。。谢谢!
UID957171主题阅读权限40帖子精华0积分810金钱1773 荣誉0 人气0 在线时间153 小时评议0
Lv.4游侠高级会员, 积分 810, 距离下一级还需 190 积分
帖子精华0积分810金钱1773 荣誉0 人气0 评议0
同问,支持一下!!!
UID3020821主题阅读权限20帖子精华0积分145金钱565 荣誉0 人气0 在线时间16 小时评议0
Lv.2游侠会员, 积分 145, 距离下一级还需 55 积分
帖子精华0积分145金钱565 荣誉0 人气0 评议0
要下STEAM,并保护光驱才行,其实你只是想不用找IP,对不对?推荐用绿色版(不用***)HLSW,也可以刷IP,房间什么的,自己搜一下吧
附效果图:
13:32:06 上传
[ 本帖最后由 realrichlee 于
13:35 编辑 ]
CPU:AMD Athlon64 X2 245 2.9GHZ
主板:技嘉&&GA-MA770T-UD3P AM3
内存:威刚&&2G DDR3 1333(万紫千红)
硬盘:WD&&3200AAJS 蓝盘 320G
显卡:迪兰恒进 HD4830雷钻(RV770 800SP)
机箱:动力火车 绝尘侠 X5
电源:康舒 IP Power 430
显示器 三星 SAM036F 19.1寸
UID1750447主题阅读权限40帖子精华0积分913金钱7984 荣誉0 人气10 在线时间1908 小时评议0
Lv.4游侠高级会员, 积分 913, 距离下一级还需 87 积分
帖子精华0积分913金钱7984 荣誉0 人气10 评议0
用命令openserverbrower,前提是要crack Steam
STEAM ID: SilenCe370& && && &&&L4D ID: SilenCe.L
----------------------------------------------------------------------------
Intel Core2 Quad 8200
Gigabyte GA-EP45T-UD3LR
Kingstone DDRIII
Sapphire HD 4870 1G GDDR5 PCI-E QP
Seagate 1T&&7200.12
ViewSonic VX2233wm
Razer Mamba & Razer Imperator&&& Razer Naga&&&&&Logitech G500 G400 嗯,鼠标……
Powered by

参考资料

 

随机推荐