您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
技术中台之DevOps自动化测试实践
 
 
   次浏览      
 2021-7-2
 
编辑推荐:
本文主要介绍了 为什么采用RobotFramework? 什么是RobotFramework? RF如何做接口测试? 如何在DevOps中执行rf脚本并生成测试报告 。
本文来自于维科号,由火龙果软件Linda编辑推荐。

Devops作为技术中台的重要组成部分之一,其下“自动化测试”功能也是不可或缺的一环,如何结合DevOps自身提供的自动化测试功能,做好DevOps的接口自动化呢?首先要先了解DevOps为自动化测试提供了哪些功能,如何使用该功能进行自动化测试,以及如何设计测试框架等等,本文将会为大家一一解答。

DevOps作为技术中台的“效率&精益“平台,集成了多方测试工具供使用。目前集成的自动化测试工具有:robot-framework 、Jmeter。

目录:

1.为什么采用RobotFramework?

2.什么是RobotFramework?

3.RF如何做接口测试?

4.如何在DevOps中执行rf脚本并生成测试报告

一、为什么采用RobotFramework?

针对接口、web网页、app自动化测试的工具有很多:selenium、jmeter、soapui、robotFramework、postman等,如何选择适合自己的自动化测试工具?此时便要看具体需求和业务。

应需求:为DevOps产品做自动化接口测试,那DevOps自身集成了jmeter和rf框架,且采用jmeter或者rf工具,能使自动化测试过程在DevOps中“数据可视化”,每次执行后的各项测试数据指标(包括测试结果、测试报告、成功率、失败率等)直接在DevOps中进行展示、更是省略了自行配置jenkins进行自动化执行部署等操作,对于管理人员以及测试人员而言,均有受益。

又考虑到测试人员技术水平,相对而言,rf简单易上手,所以rf突出重围,成为此次自动化工具角逐的“冠首”。

二、什么是RobotFramework?

Robot Framework是一款python编写的功能自动化测试框架,可导入各第三方测试库(例如:Selenium2Library、RequestsLibrary、DatabaseLibrary、HttpLibrary.HTTP),通过关键字进行web或接口自动化测试。

RF特性:

1、rf测试用例支持文本文件保存,使用制表符分隔数据,可方便使用任何文本编辑器,或者excel编辑测试用例,也可使用HTML格式创建用例;

2、测试用例支持变量使用,可使用IF、ELSE以及For循环语句;

3、支持关键字驱动、数据驱动和行为驱动;

4、利用已有关键字,测试人员可进一步“封装”,形成更高级别的行为;

5、测试人员可使用Python编写自己所需的关键字;

6、测试报告和日志为HTML格式,便于阅读;

7、使用简单,更好理解以及上手等

三、RF如何做接口测试?

1、RF脚本编辑工具:可通过RED工具(该工具百度文献参考多,这里不做介绍)或者eclipse来编辑Robot FrameWork测试用例;个人用的eclipse,更方便进行关键字的查看,具体可参考文献:https://www.cnblogs.com/Simple-Small/p/9229397.html。

2、准备好rf环境【python环境、robotframework安装、JDK1.8+Eclipse+RED插件】;

3、安装第三方库,提供接口测试的关键字:RequestsLibrary(在rf中,python语言的接口测试库名称为RequestsLibrary)、DatabaseLibrary、HttpLibrary.HTTP等;

若导入httplibrary库出错,可参考以下文献进行调试:

4、在robot脚本中引入所需各库:

5、认识RequestLibrary以及DatabaseLibrary中的关键字。

掌握各关键字含义以及用法,是利用RF做自动化测试的核心。在.robot文件中,鼠标悬浮在关键字上,会显示该关键字用法,或者按住CTRL键,鼠标点击可进入到py文件中,直接查看该关键字的实现和描述,RF接口测试主要用到以下红框关键字,还有其他语法例如FOR循环、json数据格式转换等需要掌握。RF基本语法以及关键字用法此处不做详细解析,对此有兴趣者可通过各学习网站搜索关键字:robotframework,查看对应视频学习即可;接下来主要以笔者实践rf接口自动化框架的二次封装为主线展开(为笔者个人实践,多处还有待后期改善,不完善处请谅解)。

6、下图为笔者根据使用场景和需求,设计的RF接口自动化的基本框架:

这里将rf框架封装为5层:工具类层、关键字层、基础数据层、测试数据层和用例层。

工具类层:若rf已存的关键字不满足需求,可自行编写py函数实现;

关键字层:将复用率高的代码块进行提取封装,成为新关键字。例如:

connectDatabase -连接数据库;

initDocData -执行数据库脚本;

点击“Test cases”Tab页,可以表格形式展示rf测试用例;也可切换到“source”Tab页,直接以源码形式展示,看个人习惯选择视图编写脚本即可;

测试数据层:分为“sql脚本” 和“ py文件”两类。

sql脚本中存储insert语句,为“删改查”接口准备基础数据,在测试用例执行之前进行数据库脚本初始化操作(使用Suite Setup);

Py文件 : LIST__addIDoc为新增接口的测试数据,其校验数据对应为:LIST__assertAddIDoc。.py文件中存储list类型数据,作为“增”[post]接口的测试数据以及各接口的校验数据;如图所示,其中“删改查”[delete/put/get]接口的校验数据需根据sql中的数据进行设计,一条测试数据对应一条校验数据,其List下标相同,保证进行数据遍历时测试数据和校验数据能一一对应。

测试用例层:使用关键字,编写测试用例脚本。

获取测试数据组,利用FOR循环,根据测试数据的List长度【即测试数据组数】遍历请求参数:

发送相应请求,获取返回值,同时校验返回值是否与预期相符:

关键字assertResult:为自定义关键字,参数有三个:接口返回值response、当前接口校验数据List、测试数据下标,若返回值状态码与预期状态码一致,则继续通过testcase关键字校验responseContent值是否与预期值相等,若状态码不相等,则直接跳过进入下一循环【这里校验和测试数据需严格按照“下标一一对应”规则 ,否则在校验时则无法正确匹配,且测试数据有几组,则校验数据也应有几组,否则将报错】。

关键字testcase:有两个参数:response返回值和对应的校验数据,主要用作responseContent内容与校验数据的比对,若校验数据中所有key对应的value值,都与responseContent里同一key的value值相同【responseContent包含校验数据】,则校验通过。

总结:

1、预置测试数据和校验数据(通过sql脚本和Py文件中存储List类型数据) ;

2、通过testcase前置条件,连接数据库并执行sql脚本初始化数据,且进行登录操作,将“认证”值设置为全局变量,供后续接口使用;

3、编写测试用例,利用for循环遍历测试数据,发送请求,并获取同List下标的校验数据,进行返回值的校验;

至此整个测试流程结束。小伙伴们get到我的整个框架设计了吗?

四、如何在DevOps中执行RF脚本并生成测试报告

到这里可能会有人问:测试报告和日志如何处理?这时候就要结合我们的DevOps产品,前言讲过DevOps为自动化测试做了哪些工作,是的,就是利用DevOps集成的rf任务,和拉取代码库代码任务,进行rf脚本的执行,执行完毕后,会将生成的测试报告存储在:与发布到nexus的工件路径一致。

1)添加Robotframework任务,输入测试用例路径以及介质仓库,选择测试执行机(测试执行机需提前安装好robotframework运行环境),点击执行。

2)robotframework任务执行完毕后,点击进入“自动化测试”tab页,显示本次运行相关信息(包括测试环境、运行开始结束以及持续时间)和测试报告、日志链接。

查看每次运行后的测试报告。这就让我们的自动化工作变得更加简单,只考虑如何将测试用例写好即可,无需考虑CICD工作。

题外话:

普元devops产品,以自身提供的RF自动化测试功能为基础,极大程度的简化了自动化测试的CICD工作,让测试工程师更专注于维护测试用例和框架的编写,且提供自动化测试报表,让自动化过程透明化。整个rf框架历时两个月,中间不断修正,在这个过程中又接触到其他的自动化测试方案,还有很多需要完善和更改的地方,期待后面的框架订正吧【测试数据将更改为写在excel中,从excel中读取测试数据,并将每条测试用例的测试结果写在excel中】。

 

   
次浏览       
相关文章

DevOps转型融入到企业文化
DevOps 能力模型、演进及案例剖析
基于 DevOps 理念的私有 PaaS 平台实践
微软开发团队的DevOps实践启示
相关文档

DevOps驱动应用运维变革与创新
运维管理规划
如何实现企业应用部署自动化
运维自动化实践之路
相关课程

自动化运维工具(基于DevOps)
互联网运维与DevOps
MySQL性能优化及运维培训
IT系统运维管理
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
DevOps 道法术器,立体化实施框架
DevOps 中高效测试基础架构的最佳实践
DevOps 在公司项目中的实践落地
如何基于 Kubernetes 构建完整的 DevOps 流水线
阿里云Kubernetes实战
最新课程
DevOps体系实践、工具与平台
基于Kubernetes的DevOps实践
互联网运维与DevOps
基于Kubernetes构建企业容器云
企业级DevOps工作体系与平台
更多...   
成功案例
北京 DevOps体系实践、工具与平台
神龙汽车 DevOps体系实践、工具与平台
中国移动通信 网络规划与管理
某航空公司 IT规划与企业架构
某金融公司 IT服务管理(ITIL V3)
更多...