RFUI-PC端自动化测试实践

前言

【易测试201604】 用Robot Framework构建全端UI自动化测试框架介绍了RFUI的基本概念,结构和功能。RFUI是一个基于Robot Framework(关键字驱动+分层抽象)、跨平台(Web/Android/iOS/Desktop)的UI自动化框架。这里对PC/Desktop端(以Windows 7为例) 使用RFUI 搭建Win APP自动化测试框架、自动化脚本实践、部署持续结成作一个小结,欢迎大家一起讨论。

基本介绍

这个世界正在被移动颠覆,但是大家别忘了我们的90%以上的工作,还在PC端完成。在PC上有,我们曾共同熬夜写过毕业论文、通宵打过游戏、还有一起看过的那些片。 Windows桌面上还有辣么多的应用,包括易信、企业易信、popo、闪电邮、云音乐、有道云协作、、某Q、某微,..., 他们还有 MAC/各种Linux 版本。 我们的RFUI 要不要覆盖? 必须啊。找了一遍github, 选了SikuliX, 至于原因? 我想是因为缘分。 各位看官,如果想知道是否与SikuliX有缘分,请轻轻的使用一下我们的RFUI框架的 DesktopLibrary。

环境搭建

1. 测试环境框图示意

2. 安装步骤 (Windows 7-64bit)

<1>. 安装JAVA JVM or JRE

<2> 安装Robotframework 及 测试库

 pip install robotframework
 pip install robotframework-ride
 pip install robotframework-desktoplibrary

PC 端RFUI自动化框架 说明

RFUI是基于关键字驱动的测试框架,PC端关键字封装在SikuliLibrary中,根据关键字名称以及注释就能清楚知道其用法。 本库采用的元素定位方式为 Imaged-Based/图片元素定位 RFUI采用分层抽象的设计模式。下图是具体用例的层次关系。通过这样的 层层调用可以实现: 增加脚本可读性 增加用例可维护性 脚本复用性增强

1. 上层测试框架搭建 - RFUI-PC 框架示范


2. 底层测试框架说明 - SikuliX

SikuliX介绍

Sikuli(在印第安土著语言中是“上帝之眼”的意思)是由美国麻省理工学院开发的一种新型图形化编程技术,使得编程人员可以使用截图替代代码,从而简化代码的编写流程。以Jython为基础实现,利用图像匹配原理,完成对GUI元素的识别和对于用户操作的模拟。

官方介绍:

http://www.sikuli.org/

http://sikulix.com/quickstart/

3. DesktopLibrary介绍

我们封装测试库robotframework-desktoplibrary,是基于SkiuliX1.1.0,参考了robotframework-SikuliLibrary,重新封装了一层自定义关键字,结构如下:

 

本测试库,通过RobotFramework的Remote(远程库),将基于JAVA实现的测试库,轻松的导入到RF测试框架。 对用户来说,就像Python原生写的RF 测试库一样。

4. 元素定位 (图片定位)

<1> 截图 (任何工具)

文件名:应用入口_企业易信.png

<2> 指定图片元素路径,定义图标变量指向图片文件

*** Variables ***
   ${IMAGE_DIR}      ${CURDIR}\\..\\Images
   ${系统桌面_易信企业版图标}    应用入口_企业易信.png
    Desktop Set Image Path    ${IMAGE_DIR}

<3> 使用Desktop_xxxAction 来操作

    Desktop Double Click    ${系统桌面_易信企业版图标}

产品实践 - 企业易信PC端APP UI自动化

1. 一个登录用例 示范

一个用例运行实例:

2. 持续集成

使用Jenkins,可以方便配置 PC UI 执行集Job。 

注:尚遗留问题:

<1> 代码变动打包的部署Job,暂未实现;需要与开发在测试分支定义好配置,并在Test Node上配置好相应的打包环境

<2> 持续集成Job,建议仅运行稳定的脚本用例

结束语

基于SiKuliX的DesktopLibrary,具有强移植性,支持主流PC系统,

<1> Windows XP,win7, win 8 and 10 (32-Bit or 64-Bit)

<2> Mac OS X >= 10.6 (64-Bit only)

<3> Linux/Unix (32-Bit or 64-Bit) 具体详见 robotframework-desktoplibrary。 本文,仅作抛砖用,欢迎各位大侠试用!交流自动化经验。

本文来自网易实践者社区,经作者汪洋旦授权发布。