基于Robot Framework框架的测试架构设计及示例

基于Robot Framework框架的测试架构设计及示例

  • 1.Robot Framework的架构
  • 2.Robot Framework的测试驱动模式
  • 3.测试脚本结构设计(以Web UI测试为例)
    • 3.1 Page Object模式介绍
    • 3.2 脚本结构整体展示
    • 3.3 UI架构设计
    • 3.4 功能架构设计
    • 3.5 用例架构设计
  • 4.测试脚本及用例demo
    • 4.1 测试用例示例
    • 4.2 功能操作类示例
    • 4.3 UI控件封装套件示例
    • 4.4 自定义开发关键字示例
    • 4.5 Report示例
    • 4.6 Log示例

1.Robot Framework的架构

Robot Framework 的架构是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD)。它通过易于使用的表格和关键字来组织测试过程和测试数据。其架构如下图:
基于Robot Framework框架的测试架构设计及示例_第1张图片
Robot Framework 的操作系统和应用独立框架。核心框架是使用Python 和运行在Jython(JVM)和IronPython(.NET)。

Robot Framework的优势还在于,其支持异常丰富的第三方测试类库,包括Selenium Library、Android Library、IOS Library、Appium Library、AutoIt Library、Http Library和Database Library等等。

2.Robot Framework的测试驱动模式

RF使用关键字驱动的测试方法。如下表格:
基于Robot Framework框架的测试架构设计及示例_第2张图片
对于上面的例子来说,open browser 、input text、click button 和close browser,都是“关键字”,这些关键字由robotframework-selenium2library 类库所提供。当然,我们也可以自定义关键字。

关键字:一个能够测试被测系统的函数或方法。
关键字驱动测试也被称为“表格驱动测试”或“操作名测试”,他是一种软件自动化测试的方法论。
下图通过一个例子描述了关键字及其分层:
基于Robot Framework框架的测试架构设计及示例_第3张图片
关键字驱动模式相比较于数据驱动和模块驱动的模式,有着以下优势:

  • 测试用例简洁,可读性高,易于修改
  • 关键字被自动化人员开发完成后,手工测试人员几乎不需要学习成本就可以复用关键字,进行用例设计以及执行测试,也就是说有很强的可扩展性
  • 不依赖于开发语言
  • 可以对自动化测试划分抽象层级

3.测试脚本结构设计(以Web UI测试为例)

3.1 Page Object模式介绍

Page Object就是页面对象,Page Object模式也就是把界面定位和业务操作分开。我目前设计的是三层模式,把UI自动化分为了对象库层,操作层和业务层。Page Object思想对界面交互细节进行了封装,这样可以使测试用例更关注业务,而非界面细节,提高了测试案例的可读性,同样也可以为测试用例的扩展性和维护性打好基础。

3.2 脚本结构整体展示

基于Robot Framework框架的测试架构设计及示例_第4张图片

3.3 UI架构设计

将UI布局模块中的页面元素封装成对应的控件Locator套件(对象库层),然后将控件Locator套件封装成布局模块基本功能元素类(操作层),然后通过一个类似UI工厂类的套件将操作层的套件再封装成布局模块UI类(业务层),这么做是为了后面的基本功能操作可以使用到所有的UI元素,同时也便于对新增元素的管理,对于业务模块相对较小的项目比较高效,符合增量模型,如下图:
基于Robot Framework框架的测试架构设计及示例_第5张图片

3.4 功能架构设计

功能模块方面先引入原生的类库,如Selenium2Library,AutoIt Library等,加入一些全局变量或测试初始化的变量,如选择浏览器等。同时引入之前封装好的UI的套件,封装成原生方法的套件,类似于原生方法工厂,就可以开始根据布局模块中的功能模块,通过原生方法(关键字)+页面元素进行基本功能操作封装,形成测试用例。如下图:
基于Robot Framework框架的测试架构设计及示例_第6张图片

3.5 用例架构设计

通过输入的数据+基本功能操作组合+输出结果校验组合成一个基本的测试用例。用例之间以功能模块划分为主,分3级,功能模块测试用例组->功能测试用例组->具体功能测试用例。测试用例之间可以组合成新的测试用例再进行业务流程上的测试。测试步骤完成后输出测试报告,并根据测试报告的结果分析是web的bug还是自动化脚本测试用例的bug,根据分析得到的结果联系到对应负责人员。

测试用例架构设计如下图:
基于Robot Framework框架的测试架构设计及示例_第7张图片

4.测试脚本及用例demo

4.1 测试用例示例

测试方式是以关键字进行驱动的,所以测试用例也非常简洁明了,如下图:
基于Robot Framework框架的测试架构设计及示例_第8张图片
由上图可以看出,测试用例非常易于维护和扩展,如果交由手动测试人员,也可以很快地编写并执行新的测试用例。

4.2 功能操作类示例

功能操作类的封装示例如下图:
基于Robot Framework框架的测试架构设计及示例_第9张图片
由上图可以看出,封装功能操作类,主要是制定输入输出参数,制定操作方法,包括使用测试库内置关键字以及自定义开发新的关键字,来完成一套完整的业务操作流程。

4.3 UI控件封装套件示例

UI控件实际是以变量的形式进行封装的,Selenium操作控件的前提是先找到控件,所以这些变量都封装的是控件的地址信息,包括name、id、xpath和css等等。我将Web端日历管理页面的各个控件全部进行了封装,如下图:
基于Robot Framework框架的测试架构设计及示例_第10张图片
将控件单独进行封装的好处就是,如果项目后期界面元素变多,或者元素位置发生改变,在这里都能很方便地进行添加或者维护,而不会影响操作层和业务层。这种封装方式也不会受实现该页面的框架的影响,不管是原生的DOM,还是使用jQuery、Angular或者React等框架开发的页面,都可以完成元素的定位。

4.4 自定义开发关键字示例

Robot Framework以及Selenium提供的内置的类库中的关键字其实是有限的,很多并不能完全符合项目的测试要求,例如在我这个Web页面,对于下拉菜单的操作和对于表格的遍历和查看操作,都没有现成的方法可以用,如下图:
基于Robot Framework框架的测试架构设计及示例_第11张图片
基于Robot Framework框架的测试架构设计及示例_第12张图片
所以我使用Python开发了新的关键字(实际就是开发新的方法函数)用以满足测试需求,如下图:
基于Robot Framework框架的测试架构设计及示例_第13张图片
通过自定义开发的关键字,可以很好地满足项目各种测试需求,不过对自动化测试人员的编程能力有一定要求,手动测试人员的学习成本较大。

4.5 Report示例

obot Framework的测试Report是HTML格式的,查看方便,并且可以详细地显示出测试运行的时间信息、用例分类信息、用例通过/失败数量、测试用例通过率等,如下图:
基于Robot Framework框架的测试架构设计及示例_第14张图片

4.6 Log示例

Robot Framework的测试Log同样是HTML格式,而且功能非常强大,可以将各个用例->各个步骤->各个关键字的操作过程都完整地记录下来。如果测试过程中产生了任何异常,Robot对于异常的封装也会很清晰准确地记录在log里,方便测试人员对bug进行分析和跟踪。Log如下图:
基于Robot Framework框架的测试架构设计及示例_第15张图片

你可能感兴趣的:(Robot,Framework)