百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

技术中台之DevOps自动化测试实践(devops 自动化测试)

ccwgpt 2024-10-24 09:13 20 浏览 0 评论

转载本文需注明出处:微信公众号EAWorld,违者必究。


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中】。欢迎各位小伙伴来沟通RF或者其他自动化测试方案~


关于作者冰糖糯米,普元测试工程师,目前参与Devops项目的功能测试以及接口自动化测试工作。致力于测试技术的研究和开发。

关于EAWorld使能数字转型,共创数智未来!

相关推荐

详解DNFSB2毒王的各种改动以及大概的加点框架

首先附上改动部分,然后逐项分析第一个,毒攻掌握技能意思是力量智力差距超过15%的话差距会被强行缩小到15%,差距不到15%则无效。举例:2000力量,1650智力,2000*0.85=1700,则智力...

通篇干货!纵观 PolarDB-X 并行计算框架

作者:玄弟七锋PolarDB-X面向HTAP的混合执行器一文详细说明了PolarDB-X执行器设计的初衷,其初衷一直是致力于为PolarDB-X注入并行计算的能力,兼顾TP和AP场景,逐渐...

字节新推理模型逆袭DeepSeek,200B参数战胜671B,豆包史诗级加强

梦晨发自凹非寺量子位|公众号QbitAI字节最新深度思考模型,在数学、代码等多项推理任务中超过DeepSeek-R1了?而且参数规模更小。同样是MoE架构,字节新模型Seed-Thinkin...

阿里智能化研发起飞!RTP-LLM 实现 Cursor AI 1000 token/s 推理技术揭秘

作者|赵骁勇阿里巴巴智能引擎事业部审校|刘侃,KittyRTP-LLM是阿里巴巴大模型预测团队开发的高性能LLM推理加速引擎。它在阿里巴巴集团内广泛应用,支撑着淘宝、天猫、高德、饿...

多功能高校校园小程序/校园生活娱乐社交管理小程序/校园系统源码

校园系统通常是为学校、学生和教职工提供便捷的数字化管理工具。综合性社交大学校园小程序源码:同城校园小程序-大学校园圈子创业分享,校园趣事,同校跑腿交友综合性论坛。小程序系统基于TP6+Uni-app...

婚恋交友系统nuiAPP前端解决上传视频模糊的问题

婚恋交友系统-打造您的专属婚恋交友平台系统基于TP6+Uni-app框架开发;客户移动端采用uni-app开发,管理后台TH6开发支持微信公众号端、微信小程序端、H5端、PC端多端账号同步,可快速打包...

已节省数百万GPU小时!字节再砍MoE训练成本,核心代码全开源

COMET团队投稿量子位|公众号QbitAI字节对MoE模型训练成本再砍一刀,成本可节省40%!刚刚,豆包大模型团队在GitHub上开源了叫做COMET的MoE优化技术。COMET已应用于字节...

通用电气完成XA102发动机详细设计审查 将为第六代战斗机提供动力

2025年2月19日,美国通用电气航空航天公司(隶属于通用电气公司)宣布,已经完成了“下一代自适应推进系统”(NGAP)计划下提供的XA102自适应变循环发动机的详细设计审查阶段。XA102是通用电气...

tpxm-19双相钢材质(双相钢f60材质)

TPXM-19双相钢是一种特殊的钢材,其独特的化学成分、机械性能以及广泛的应用场景使其在各行业中占有独特的地位。以下是对TPXM-19双相钢的详细介绍。**化学成分**TPXM-19双相钢的主要化学成...

thinkphp6里怎么给layui数据表格输送数据接口

layui官网已经下架了,但是产品还是可以使用。今天一个朋友问我怎么给layui数据表格发送数据接口,当然他是学前端的,后端不怎么懂,自学了tp框架问我怎么调用。其实官方文档上就有相应的数据格式,js...

完美可用的全媒体广告精准营销服务平台PHP源码

今天测试了一套php开发的企业网站展示平台,还是非常不错的,下面来给大家说一下这套系统。1、系统架构这是一套基于ThinkPHP框架开发的HTML5响应式全媒体广告精准营销服务平台PHP源码。现在基于...

一对一源码开发,九大方面完善基础架构

以往的直播大多数都是一对多进行直播社交,弊端在于不能满足到每个用户的需求,会降低软件的体验感。伴随着用户需求量的增加,一对一直播源码开始出现。一个完整的一对一直播流程即主播发起直播→观看进入房间观看→...

Int J Biol Macromol .|交联酶聚集体在分级共价有机骨架上的固定化:用于卤代醇不对称合成的高稳定酶纳米反应器

大家好,今天推送的文章发表在InternationalJournalofBiologicalMacromolecules上的“Immobilizationofcross-linkeden...

【推荐】一款开源免费的 ChatGPT 聊天管理系统,支持PC、H5等多端

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍GPTCMS是一款开源且免费(基于GPL-3.0协议开源)的ChatGPT聊天管理系统,它基于先进的GPT...

高性能计算(HPC)分布式训练:训练框架、混合精度、计算图优化

在深度学习模型愈发庞大的今天,分布式训练、高效计算和资源优化已成为AI开发者的必修课。本文将从数据并行vs模型并行、主流训练框架(如PyTorchDDP、DeepSpeed)、混合精度训练(...

取消回复欢迎 发表评论: