之前写了一篇文章 自动化测试框架究竟哪家最强?侧重介绍了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