再来说说强大的Robot Framework

之前写了一篇文章 自动化测试框架究竟哪家最强?侧重介绍了Robot Framework(RF[2])的生态(标准库、扩展库、插件和工具等),使之看起来无所不能,成为一个强大的自动化测试框架。

(Robot Framework的广告:清晰、易用,支持关键字/数据驱动、API扩展)

作为一款自动化测试框架(TAF),基本由下列几个组件构成,如图1,核心是“Harness/IDE”,开发测试脚本,并能集成不同的工具集成。之前STAF(Software Testing Automation Framework [3])算是一个真正的开放的TAF,提供了TAF所需的各种服务,如通信、Cron Job、事件管理、进程调度、队列、监控、变量、日志、邮件服务、文件传输等,但可能过于开放,许多工作需要使用者进行二次开发,这个工作量很大,而没有建立开放的API,这样就没有很好形成生态,2016年之后就停止维护了。而RF不同,就形成了良好生态,是真正的 RPA(open source robotic process automation, 对业务流程、ATDD良好的支持) solution [4],Public API[5]等,得到不少测试人员的喜爱,获得较好应用。

(图1 自动化测试框架构成)

(图2 STAF+STAX 示意图)

下面就重点介绍RF(包括其周围构成的生态)的一些亮点。

1. 良好的生态

这在 自动化测试框架究竟哪家最强?已经详细介绍,支持不同操作系统、远程管理、Telnet、字符串、进程、对话、日期等处理,还支持各种应用及其相关的测试工具(如大家熟知的Selenium、Appium、AutoIT、Watir等),包括web、移动App、数据库、通信协议等测试,支持面向UI和接口的测试。

支持持续集成(CI),如Jenkins、Maven等的集成。

2. 关键字脚本丰富、灵活而强大

之前,像Selenium关键字缺乏循环、条件等语句结构支持,而且在“代码方式(text edit)” 编写时,就成了HTML,而RF关键字丰富,可以灵活自定义新的关键字,变量种类多(如list、Dictionary等)和扩展变量语法,并支持循环、条件语句,如:

   :FOR    ${index}    IN RANGE   1    20    2

表格和text方式的切换自然、清晰,如图3、图4所示。整个脚本的设置灵活、格式清晰,包含文档说明、Tags、变量定义、模板等,有利于维护,如图5所示。

(图3 表格方式编辑,关键字、变量、参数等区分明显,灵活)

   (图4 转换为TEXT方式编辑)

  (图5 RF脚本含文档说明、Tags、变量定义、模板等)

3. 强大的数据驱动

数据驱动方式比较多,除了上面说的@list、&Dic变量来事先准备测试数据之外,支持excel、XML、YAML等格式的外部数据,RF支持变量文件、资源文件……

4. 调试非常方便

脚本调试方便性很重要,毕竟这是经常要做的事,RF给了很好的调试功能,清晰、直观。甚至具有智能特性,如果没有错误,自动折叠起来(即使多个关键字执行结果),如图6、7所示。如果出错,还能自动截屏,帮助我们看当时的问题(如页面还没有加载完毕,图8所示)。

 (图6 从RIDE运行界面点“log” 自动进入日志查看页面)

 (图7  日志查看页面,清晰、操作方便)

 (图8  失败之处自动截屏,发现页面未装载完)

5. 报告清晰

能生成很清晰的报告,如果测试没完全通过,背景是红色的(图9);,如果测试完全通过,背景是绿色的(图10)。

(图9 部分测试未通过的测试报告)

(图10  测试全通过的测试报告)

6. 扩展库强大、关键字丰富

这以SeleniumLibrary为例,就可以见识一下其丰富与能力,如图11、12所示。

(图11  SeleniumLibrary关键字)

 (图12  SeleniumLibrary有关“断言、验证”的关键字)

还有很多亮点,如支持标准的数据库接口、支持面向Restful web service接口测试等等,无法一一道来,大家用起来是硬道理,最好的参考文档就是官方的用户手册[6],更何况由大家熟悉的python支持,何乐而不为呢?没必要再重新造轮子。

[1]  自动化测试框架究竟哪家最强?

[2] http://robotframework.org/ 

[3] http://staf.sourceforge.net/ 

[4] http://robotframework.org/rpa/

[5] https://robot-framework.readthedocs.io/en/latest/

[6] http://robotframework.org/robotframework/#user-guide

[7] https://github.com/robotframework/robotframework

[8] https://bitbucket.org/robotframework/webdemo

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我
  • 上海市嘉定区曹安公路4800号同济大学软件学院
  • kerryzhu@vip.163.com