使用Robot Framework实现多平台自动化测试

本文章出自【码同学软件测试】


基于Robot Framework、Jenkins、Appium、Selenium、Requests、AutoIt等开源框架和技术,成功打造了通用自动化测试持续集成管理平台(以下简称“平台”),显著提高了测试质量和测试用例的执行效率。

码同学公众号:自动化软件测试

码同学抖音号:小码哥聊软件测试


01   设计目标

平台通用且支持不同类型的自动化测试

平台框架轻量、开放、灵活,有强大丰富的测试库,全面支撑PC桌面应用(如核心柜台和网上交易系统)、Web应用(如商城网厅)、APP应用(如手机证券)、接口(如柜台周边接口)、数据库(如Oracle)等自动化测试,便于后续持续测试开发和集中统一管理。

平台支持自动化测试全流程

平台展示界面统一、清晰、简洁,覆盖测试用例设计、测试脚本开发、测试执行、测试报告生成等流程。通过对测试流程实现统一管理,降低测试人员使用平台的门槛。

平台具有良好的扩展性、易维护性

平台支持协同工作、分布式测试执行,能与版本管理工具、软件缺陷管理系统、企业邮件系统等集成,同时在项目不断迭代的过程中,自动化测试脚本能弹性调整和代码复用。


02   架构设计

平台采用组件化的思想和分层架构,可分为4层,每一层都实现特定的功能,并提供接口给其它层调用:

图1 平台架构设计

最底层是被测系统,主要明确被测对象的形态。平台支持APP、Web和PC应用测试,以及接口、数据库等测试。

往上是测试库。平台除提供如进程、字符串、集合、截图处理等基础测试库外,还提供Web、APP、接口等专用测试的扩展测试库,以支持不同的被测系统选择相应的测试库。

中间是测试框架,其作用包括用例管理、测试数据管理、测试运行、测试报告等。

最上面则是持续构建层,负责任务、机器、排队等控制和调度,自动完成整个测试作业过程。


03   平台实现

在自动化框架选型上,我们选择Robot Framework(以下简称“RF”)作为自动化测试平台的核心底层框架,Jenkins作为持续集成与任务调度平台,同时选择AppiumLibrary、Selenium2Library、RequestsLibrary、AutoItLibrary等作为扩展测试库,以应对不同的测试需求。

(1)RF框架

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料


RF是一款功能丰富并且扩展性强的开源自动化测试框架,主要用于轮次较多的回归测试。框架通过关键字的组合形成测试逻辑,最终通过各个底层测试库与被测系统交互,完成测试工作。

RF框架为APP、Web、接口、数据库测试等提供了标准的底层关键字API,测试人员只需在这些关键字的基础上开发自定义脚本,即可满足自身测试的要求。

图2RF架构图

(2)AppiumLibrary

Appium是一个开源、跨多平台多语言的测试框架,相比其它框架,它支持iOS和Android平台上的原生、Web和混合应用自动化测试,可在平台间重用代码,编写测试脚本和运行测试时不需要对源码重新编译,在脚本的编写和实现上对编程语言没有太多要求,测试更轻量灵活。

AppiumLibrary是RF框架基于Appium的第三方扩展应用程序测试库,可支持券商手机证券APP自动化测试开发。

图3Appium架构图

(3)Selenium2Library

Selenium是为了实现多平台Web应用程序测试而专门设计的自动化测试工具套件,具有可扩展、跨平台、多浏览器支持等特性。Selenium 2集成了WebDriver,WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器,测试人员可根据不同的平台、不同浏览器选择不同的WebDriver去执行测试。

Selenium2Library是RF框架基于Selenium2的Web测试库,可支持券商商城、网厅等Web应用自动化测试开发。

图4WebDriver架构图

(4)RequestsLibrary

接口测试一般用于多系统间交互开发,或拥有多个子系统的应用系统开发的测试。Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库,可满足HTTP接口测试需求。RequestsLibrary是RF框架下的API测试库,可支持券商IFS或其它自定义开发接口自动化测试开发。

(5)AutoIt桌面应用测试

AutoIt是一款用于对Windows

GUI进行自动化操作的软件,它可以模拟键盘按键,、鼠标移动以及窗口或控件的操作来实现自动化任务。AutoItLibrary是RF框架基于AutoIt的Win32桌面应用测试库,可支持券商核心柜台、网上交易等桌面应用系统自动化测试开发。

图5Au3Info识别GUI对象示例

(6)Jenkins持续集成

Jenkins是一种开源的持续集成工具,它支持svn、Git等多种SCM配置管理工具,可根据项目要求设置定时构建(如每小时、每次间隔时间或每天晚上几点钟等)或触发构建(如源代码提交触发),支持Shell脚本、Windows批处理、Ant构造等多种构建方法,从而满足在不同操作系统上运行。

Jenkins支持分布式构建(类似于Selenium Grid),可实现多主机多任务并行执行。Jenkins还提供丰富的插件支持,安装Robot Framework plugin插件后可执行RF自动化测试用例。

图6Jenkins+RF+AppiumLibrary自动化测试示例


04   平台的创新点

1、平台架构灵活、适应场景广,满足多种不同类型自动化测试

平台基于轻量的RF开源框架,具有良好的扩展性,通过集成不同的开源扩展测试库可满足不同类型、不同平台和应用的测试:

RF+AppiumLibrary可实现APP自动化测试,且可在iOS和Android之间重用代码,只需要编写出一个统一的测试脚本就可以运行在不同的平台上,这种方式将极大提高自动化测试脚本的使用率,节省编写和调试测试脚本的时间;

RF+Selenium2Library则可实现Chrome、IE、Firefox等多浏览器下的Web应用程序自动化测试;


免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料


RF+AutoItLibrary可实现一般Win32桌面应用程序自动化测试;

RF+RequestsLibrary可实现接口自动化测试,等等

所以该平台具有相当强的灵活性、兼容性和易用性,尤其适用于核心柜台、网上交易、手机证券等界面变化不大、软件生命周期长,经常推出新版本的产品自动化测试。

2、平台实现端到端自动化测试管理,一站式图形展示信息

平台支持用例管理、脚本开发调试、任务分布式调度执行、测试报告呈现全流程

图7平台测试管理

图8 测试日志及报告

3、基于数据和关键字驱动的自动化测试,灵活应对被测试系统变更

平台克服了传统自动化框架录制回放模式脚本高耦合性的缺点,具有高健壮性、高复用性和良好的维护性:

支持数据驱动模式,测试数据和脚本分离,测试数据变更无需修改脚本,提高了自动化测试脚本的可复用性。

实现界面元素统一管理,界面元素和测试脚本分离,应用程序界面变动只要修改失效的界面元素即可,无需大量修改脚本,提高了脚本的可维护性。

业务流程测试基于可以灵活组合的关键字脚本进行控制,通过增加关键字即可实现测试框架的功能扩展。

脚本结构釆用分层设计思想,将自动化测试脚本分成用例层、流程层、页面元素层和变量集合层,方便实现高内聚、低耦合的测试脚本设计。

图9 分层自动化测试


05    平台的实施效果

1、提高测试用例设计质量和业务场景的覆盖度

东莞证券自动化测试项目自实施以来,用例粒度和覆盖度得到了较大改善,手机APP交易、接口、Web(网厅/商城/有财贷)、核心柜台、网上交易的测试用例分别达到1645、153、76、569和1168个,用例规模平均增长近8倍,基本覆盖所有交易类业务。平均自动化率达65%以上,极大提升了产品研发团队的质量信心。

2、提升测试用例执行效率,加快产品投产速度

自动化测试提高了测试用例执行的效率和准确性,降低了生产应用系统的故障率。另外持续集成尽早地介入,减少了版本延迟发布的可能性。以东莞证券手机APP交易自动化测试为例,之前版本迭代周期是2-3个月,开展自动化测试后缩短至1个月;以往一轮15人天的手动测试改为自动化执行后不到2人天。按平均每月迭代一次计算,全年可省近150人天的测试资源。如对接独立的测试柜台(支持7*24执行)并增加多台设备并行执行,自动化测试效率还可大幅提升;该项目已投入近20轮版本迭代测试,发现缺陷17个。


06    总结

东莞证券基于开源的RF框架从0到1建立起通用自动化测试体系,并在手机APP、核心柜台、网上交易、接口、商城、网厅等项目中落地,同时结合Jenkins实现自动化测试持续集成和分布式构建,有效支撑了敏捷和快速迭代过程

限于篇幅,本文并未就APP、Web、桌面应用、接口等自动化测试开发方法展开详细论述,而是提供一种建立通用自动化测试持续集成管理平台的思路,希望对其他券商有一定的启发和借鉴意义。


END

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容