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

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

01、设计目标
平台通用且支持不同类型的自动化测试

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

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

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

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

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

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

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

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

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

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

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

(1)RF框架

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

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

(2)AppiumLibrary

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

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

(3)Selenium2Library

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

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

(4)RequestsLibrary

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

(5)AutoIt桌面应用测试

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

(6)Jenkins持续集成

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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、桌面应用、接口等自动化测试开发方法展开详细论述,而是提供一种建立通用自动化测试持续集成管理平台的思路,希望对其他券商有一定的启发和借鉴意义。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/277823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D展2D数学原理

今年早些时候,我为 MAKE 杂志写了一篇教程,介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理,并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub,但我在这里编写了对使这一…

【强化学习】基于蒙特卡洛MC与时序差分TD的简易21点游戏应用

1. 本文将强化学习方法(MC、Sarsa、Q learning)应用于“S21点的简单纸牌游戏”。 类似于Sutton和Barto的21点游戏示例,但请注意,纸牌游戏的规则是不同且非标准的。 2. 为方便描述,过程使用代码截图,文末附链…

三天吃透Spring面试八股文

目录: Spring的优点Spring 用到了哪些设计模式?什么是AOP?AOP有哪些实现方式?Spring AOP的实现原理JDK动态代理和CGLIB动态代理的区别?Spring AOP相关术语Spring通知有哪些类型?什么是IOC?IOC的…

Pytorch简介

1.1 Pytorch的历史 PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架。在2016年发布后,PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。下面我们将详细介绍PyTorch的发展历程。 在2016年,Facebook的AI研究团队…

SpringBoot 3.2.0 基于Spring Security+JWT实现动态鉴权

依赖版本 JDK 17 Spring Boot 3.2.0 Spring Security 6.2.0 工程源码&#xff1a;Gitee 为了能够不需要额外配置就能启动项目&#xff0c;看到配置效果。用例采用模拟数据&#xff0c;可自行修改为对应的ORM操作 编写Spring Security基础配置 导入依赖 <properties>&l…

(已解决)(pytorch指定了gpu但还是占用了一点0号gpu)以及错误(cuDNN error: CUDNN_STATUS_INTERNAL_ERROR)

文章目录 错误原因解决问题 错误原因 出现错误cuDNN error: CUDNN_STATUS_INTERNAL_ERROR&#xff0c;从这个名字就可以看出&#xff0c;出错原因其实有可能有很多种&#xff0c;我这里说一种比较常见的&#xff0c;就是&#xff1a;显存不足。 一个困惑点在于&#xff0c;在…

为什么 export 导出一个字面量会报错而使用 export default 不会报错

核心 其实总的来说就是 export 导出的是变量的句柄&#xff08;或者说符号绑定、近似于 C 语言里面的指针&#xff0c;C里面的变量别名&#xff09;&#xff0c;而 export default 导出的是变量的值。 需要注意的是&#xff1a;模块里面的内容只能在模块内部修改&#xff0c;…

联合办公行业即将走向寒冬?如何重拾创业者信心

近年来&#xff0c;联合办公行业固然经历了迅猛发展&#xff0c;但现在似乎遭遇了一个潜在的拐点。面对经济的下行压力&#xff0c;一些人士担忧联合办公行业可能会步入寒冬。就在这个关键时刻&#xff0c;如何重拾创业者的信心成为行业内急需解决的问题。 首先要认识到的是&am…

c语言-位操作符练习题

文章目录 前言一、n&(n-1)的运用场景(n为整数)二、&1 和 >>的应用场景总结 前言 本篇文章介绍利用c语言的位操作符解决一些练习题&#xff0c;目的是掌握各个位操作符的使用和应用场景。 表1.1为c语言中的位操作符 操作符含义&按位与|按位或^按位异或~按位…

猪目标检测数据集VOC格式600张

猪是一种常见的哺乳动物&#xff0c;通常被人们认为是肉食动物&#xff0c;但实际上猪是杂食性动物&#xff0c;以植物性食物为主&#xff0c;也有偶尔食肉的习性。猪的体型较大&#xff0c;圆胖的体型和圆润的脸庞使其显得憨态可掬。它们主要通过嗅觉来感知周围环境&#xff0…

【持续更新ing】uniapp+springboot实现个人备忘录系统【前后端分离】

目录 &#xff08;1&#xff09;项目可行性分析 &#xff08;2&#xff09;需求描述 &#xff08;3&#xff09;界面原型 &#xff08;4&#xff09;数据库设计 &#xff08;5&#xff09;后端工程 接下来我们使用uniappspringboot实现一个简单的前后端分离的小项目----个…

TinyXml2基础操作大全,tinyxml深度解析,一文精通tinyxml之xml中的操作

&#x1f4cb; 前言 &#x1f5b1; 博客主页&#xff1a;在下马农的碎碎念&#x1f917; 欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;✍ 本文由在下马农原创&#xff0c;首发于CSDN&#x1f4c6; 首发时间&#xff1a;2021/12/25&#x1f4c5; 最近更新时…

Dockerfile - 基于 SpringBoot 项目自定义镜像(项目上线全过程)

目录 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 1.2、打包项目&#xff08;jar&#xff09; 1.3、编写 Dockerfile 文件&#xff0c;构建镜像 1.4、运行镜像并测试 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 a&#xff09;简…

手把手教你自己动手使用ONLYOFFICE制作2024年历日记本

手把手教你自己动手使用ONLYOFFICE制作2024年历日记本 又到了岁末年初的时候了&#xff0c;按照自己的习惯&#xff0c;是又该上淘宝买一个年历日记本了&#xff1a; 这也太便宜了吧&#xff01;这里我坚决要把价格打上去&#xff01; 把价格打上去&#xff0c;就是亲自动手制…

NFC物联网智能购物车设计方案

智能购物车是综合利用计算机网络、射频识别技术、数据库技术、单片机于一体的设备具有先进性、便于管理性、经济性、普适性。基于NFC (Near Field Communication&#xff0c;近场通信)技术的智能购物车&#xff0c;能够大幅缩短结账排队时间&#xff0c;实现“无感支付”。NFC是…

【C++】题解:三道只出现一次的数字问题

文章目录 只出现一次的数字i只出现一次的数ii只出现一次的数iii总结 本文介绍了三道只出现一次的数字问题的解法&#xff0c;分别是使用异或运算的方法、使用位运算的方法和使用异或运算和位运算相结合的方法。这三种方法都满足了题目中要求的线性时间复杂度和常数额外空间的条…

【教程】自动检测和安装Python脚本依赖的第三方库

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景说明 对于新python环境&#xff0c;要运行某个脚本&#xff0c;可能需要安装很多库&#xff0c;一般可以通过提供的requirements.txt来自动安装。但如果没有这个txt&#xff0c;那就得手动一个一个安装&#…

这一年,熬过许多夜,也有些许收获 | 2023年终总结

大家好&#xff0c;我是小悟 时间如白驹过隙&#xff0c;一如流光匆匆&#xff0c;转瞬即逝。它如同沙漏中的细沙&#xff0c;无声无息地从指间溜走&#xff0c;留给我们无尽的思索。 我们总是无知地忙碌着&#xff0c;而忽略了时间无形的步伐&#xff0c;却发现它已经一去不…

8个plotly绘图技巧

文章目录 什么是Plotlyplolty绘图如何添加标题&#xff0c;及控制标题的颜色和大小&#xff1f;plotly绘图如何自定义x轴和y轴的名称饼图如何同时显示百分比和数值柱状图宽度如何添加注释如何绘制多子图如何添加图例以及控制其颜色、大小、位置等桑基图Python技术资源分享1、Py…

打开3d模型时显示不匹配怎么办---模大狮模型网

当3d模型打开时&#xff0c;显示不匹配的情况可能有以下几个原因和解决方法&#xff1a; 文件格式不匹配&#xff1a;检查您所使用的3D软件是否支持打开该模型文件格式。不同的软件支持不同的文件格式&#xff0c;如果文件格式不匹配&#xff0c;可能无法正确加载和显示模型。尝…