企业级,搭建接口自动化测试框架思路分析,8年测试老鸟整理...

news2024/11/28 3:28:32

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。

无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。

1、接口自动化测试项目框架简介

搭建接口自动化测试框架的技术栈如下:

语言:Python,简洁高效,上手容易,无压力;人生苦短,我用 python;

测试框架:Unittest,封装自定义断言方法进行验证,如:eq\lt\lte\gt\gte\neq\str_eq等等;

接口调用:Requests库,提供不同的HTTP请求方法,支持session和cookies,支持失败请求重发等;

数据驱动:数据驱动测试(DDT),以用例数据来生成测试用例;

数据管理:Openpyxl,用于进行Excel数据的读写,同时支持CSV、JSON、YAML、TXT等数据格式;

依赖管理:封装各类强大的工具库,如正则、jsonpath、字典取值的方式获取请求数据、响应数据;

变量管理:封装全局变量,临时变量,环境变量,动态管理各类变量,动条调用函数,前后置脚本等;

动态脚本:封装PM对象,让动条变量除了可以使用{{args}} 或{{func(*args,**kwargs)}}的方法使用变量外,还要能够类似postman一样灵活编写python动态代码;

数据库交互:PyMySQL,根据不同数据库选择相应的第三方模块来完成交互;

数据格式转换:Eval,JSON,用于将数据在不同格式之间进行转换;

日志处理:Logging,统一日志输出格式,记录渠道、级别和执行结果,便于问题定位;

持续集成:Jenkins,通过配置定时执行测试用例、查看测试通过率,解决重复发版带来的重复工作,并使用插件unittestreport生成HTML报告和发送邮件;

2、接口测试流程

接口测试步骤可以概括如下:

获取接口文档:首先要与开发团队协作,获取接口文档,了解每个接口的功能和参数要求。

设计接口测试用例:根据接口文档,设计接口测试用例,覆盖正常场景、异常场景以及边界值等情况。

编写接口测试代码:使用Python Unittest框架,结合Requests库发起接口调用,并在测试用例中进行断言验证。

执行接口测试用例:执行编写好的接口测试用例,对接口进行验证。

发现问题与跟踪:如果发现接口问题,及时记录并提交至缺陷管理平台,与开发团队协作解决问题。

性能测试:对接口的并发情况和响应时间进行测试,确保接口性能满足要求。

3、接口测试用例设计

接口测试用例设计要从以下几个方面入手:

正常场景验证:保证接口按照需求返回正确结果,根据接口文档的参数要求传入合适的数据,验证接口返回结果是否符合预期。

参数组合验证:对于接口有多个参数的情况,验证不同参数组合下接口的行为是否正确,包括必填和可选参数的组合。

异常验证:测试接口对异常情况的处理,例如输入异常值、多输入、少输入参数等,确保接口能正确处理异常情况并返回合理结果。

安全性验证:对于涉及安全的接口,例如登录接口,验证用户名和密码的加密是否安全可靠。

性能测试:测试接口的并发情况和响应时间,确保接口能在高负载下稳定运行。

4、接口测试执行中的数据库校验

为了确保接口返回的数据与数据库中的数据一致或者业务流程脚本编写,有时候需要使用数据库:

数据库预置数据:在测试前,可以预先在数据库中插入需要的测试数据,然后接口测试用例执行时,校验接口返回的数据与预置的数据是否一致。

接口调用比对:接口测试用例执行时,通过调用数据库查询的方式,获取接口需要的数据,然后与接口返回的数据进行比对,确保一致性。

数据清理:在接口测试用例执行完毕后,进行数据清理,将测试过程中产生的垃圾数据从数据库中删除,以保持数据库的干净和整洁。

流程数据预埋:执行某些接口前,先插入固定数据,流程开始后读取固定数据,实现业务流的运转,最好再删除数据。

5、接口测试质量评估标准

接口测试的质量评估八股文如下:

业务功能覆盖是否完整:确认接口测试用例是否覆盖了所有的业务功能点。

业务规则覆盖是否完整:检查接口测试用例是否涵盖了所有的业务规则和边界情况。

参数验证是否达到要求:验证接口对不同参数的处理是否符合预期,包括参数边界和业务规则。

接口异常场景覆盖是否完整:测试接口在异常情况下的处理是否正确,确保系统在异常情况下能正确稳定运行。

接口覆盖率是否达到要求:确认接口测试用例是否覆盖了所有接口,包括不同的场景和输入组合。

代码覆盖率是否达到要求:检查接口测试代码的覆盖率,确保所有关键逻辑都得到验证。

性能指标是否满足要求:对接口的性能进行测试,确保在高负载下接口仍能稳定运行。

安全指标是否满足要求:验证接口的安全性,确保数据传输和存储的安全性。

6、接口测试中依赖第三方数据的处理

如果依赖第三方数据的接口有时候难以直接调用接口处理时,可如下处理:

使用Mock工具:利用Mock工具(如:JSON Server、Easy Mock)模拟第三方数据接口的返回数据,降低对第三方数据的依赖性,加快开发和测试速度。

编写虚拟接口:在接口测试用例中,编写虚拟接口,直接返回模拟的第三方数据,以达到测试的目的。

编写代理接口:如果无法模拟第三方数据,可以编写代理接口,将测试请求转发到真实的第三方数据接口,并在接口测试用例中校验代理返回的数据是否正确。

直接往数据库中插入数据或者更改某条数据的信息,达到模拟第三方接口正常的情况

如果有一些回调接口,直接利用第三方回调的参数格式修改某些变量,自己手动触发回调修改数据,提高稳定。

7、接口测试项目的数据管理

在接口测试项目中,不同类型的数据需要灵活地进行管理和存储:

Excel数据管理:对于较小规模的数据或者静态数据,可以使用Excel来管理测试数据 (1万条数据以内比较推荐)。Python中的Openpyxl库可以很方便地读取和写入Excel数据,同时支持其他数据格式的转换。

yaml文件:对于非常小规模的数据或者配置文件数据,可以使用yam来管理测试数据 (数据量200以内可以考虑)。Python中yaml库读取和写入yarm文件还是很方便的。同时这个文件可以注释。

数据库交互:对于大规模的数据或者需要频繁变更的数据,可以使用数据库来存储测试数据。Python中的PyMySQL库可以实现与数据库的交互,方便数据的读取和写入。

数据驱动思想:数据驱动测试(DDT)是一种测试方法,通过读取测试数据源来动态生成和执行测试用例。这种方式可以使得测试数据和测试用例分离,降低代码的冗余。

数据缓存:在测试过程中,为了提高测试效率,可以将已经处理过的数据进行缓存,下次测试时直接使用缓存数据,避免重复请求或计算。

配置文件:一些接口测试中的配置信息,例如接口URL、账号密码等,可以单独放在配置文件中,便于管理和修改。

8、解决接口文档缺失问题

遇到接口文档缺失的情况,解决思路如下:

与开发沟通:与开发人员直接沟通,了解接口的参数和预期结果,根据开发人员提供的信息编写测试用例。

抓包分析:通过抓包工具(如Fiddler、Wireshark)来分析接口的请求和响应,从中提取接口的参数和数据,以及接口的行为和返回结果。

数据库查询:对于接口数据存储在数据库中的情况,可以通过查询数据库来获取接口的数据,并根据数据设计测试用例。

源码接口分析:对于代码能力强的童鞋,可以直接拉去开发的项目代码去分析有哪些接口及参数去设计测试用例(有这个能力还写个毛接口测试)

日志分析:通过日志查询(如elk,tail)等等获取接口的请求和响应,从而设计测试用例。

9、自动化测试框架的好处

搭建一个自动化测试框架对于接口测试项目有很多好处:

提高测试效率:自动化测试可以快速执行大量测试用例,提高测试效率和执行速度。

减少重复工作:通过自动化测试,可以减少人工测试中的重复性工作,提高测试人员的生产力。

提高测试准确性:自动化测试可以避免人为因素对测试结果的影响,提高测试的准确性。

持续集成和持续交付:通过自动化测试框架,可以实现持续集成和持续交付,加快软件的开发和交付速度。

灵活性和可扩展性:自动化测试框架可以根据项目的需要进行定制和扩展,适应不同项目的需求。

当然,很多童鞋会觉得市面那么多开源工具及框架,直接拿来主义使用就好,为啥还要自己整呢?

嗯确实没错,但是在座的各位还是得考虑一下换工作(被迫换工作)时,坐在你对面的面试官要怎么应付吧…

10、解决接口产生的垃圾数据

数据库回滚:在测试用例执行完成后,使用数据库事务回滚将数据还原到测试前的状态,确保数据不会对接口环境产生影响。

数据清理脚本:编写数据清理脚本,定期执行数据清理操作,删除过期或不再需要的测试数据,保持数据库的整洁。

定时任务:设置定时任务,定期执行数据清理操作,避免测试数据过多导致数据库性能下降。

自动化数据清理:在自动化测试框架中集成数据清理功能,确保每次测试执行后都能自动清理产生的垃圾数据。

接口闭环调用:对于有新增增删改的接口,执行增改接口后,标记数据id等关键信息,在teardown 部分执行批处理调用删除接口。

11、针对第三方接口常见的测试思路

第三方接口这玩意不文档,面试或者工作中遇到的还是比较多。

使用Mock数据:可以使用Mock工具来模拟第三方接口的返回数据,以便于测试独立进行,不受第三方数据影响。

数据备份与还原:在接口测试之前,先对第三方数据进行备份,测试完成后再进行数据还原,确保测试对第三方数据没有实质性影响。

数据协调:与第三方数据提供方进行协调,请求提供稳定的测试数据,或者在测试时提供临时的测试环境,避免影响到正式环境数据。

容错设计:在测试时,要考虑到第三方数据不稳定的情况,设计容错机制,使得接口在部分数据缺失或异常时也能正常运行,不影响整体测试流程。

日志监控:监控第三方数据接口的日志,及时发现异常情况,与第三方数据提供方沟通解决。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每个人都有无尽的潜力,只是需要被发掘和激发出来。给自己定下目标,坚持不懈地追求,你会发现自己的能力远超乎想象,一定能实现心中的梦想。

成功并不是一蹴而就的,而是需要持之以恒的努力和付出。每一滴汗水都会铸就辉煌,只要你坚持走下去,总有一天你会站在山顶上俯瞰这个世界。

你的价值并不取决于别人的眼光,而是你自己内心的定义。坚守自我,为自己的梦想而奋斗,让每一天都充满激情和动力,你将创造出属于自己的精彩人生。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python海洋专题四十一】海洋指数画法--渐变填色图

【python海洋专题四十一】海洋指数画法–渐变填色图 数据:AMO_index 图片展示: 往期推荐: 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修…

认识计算机-JavaEE初阶

文章目录 一、计算机的发展史二、冯诺依曼体系(Von Neumann Architecture)三、CPU基本工作流程3.1 算术逻辑单元(ALU)3.2 寄存器(Register)和内存(RAM)3.3 控制单元(CU)3…

Jupyter Notebook 闪退

造成这个的原因非常非常多! 比如什么环境变量没有配置,或者说jupyter和python版本不兼容,库不兼容等等。 但是我呢,以上都不是。 我是因为手残,删掉了不该删的文件: 这个操作就是打开"Anaconda Prom…

【miniconda+jupyter环境安装】

minicondajupyter环境安装 下载miniconda创建第二个环境修改jupyternotebook的默认路径先写到这儿!拜拜~ 下载miniconda 网址:https://docs.conda.io/en/latest/miniconda.html 运行下载安装,安装文件夹要英文名 打开终端:winR&…

软件测试面试会问哪些问题?

软件测试面试,一般会被问到下面这九类问题。 1、基础问题 2、Linux命令 3、数据库 4、功能测试 5、Python基础 6、接口测试 7、自动化测试 8、性能测试 9、人事问题 接下来,以上9类问题,我都会分别结合2个案例,附上答案&#xff0…

【腾讯云 HAI域探秘】借助HAI,轻松部署StableDiffusion环境拿捏AI作画-体验实验赢大奖

爆火的Ai生图你体验到了吗? 没有绘画能力、摄影能力也能随心所欲的创作出自己的作品! 但是很多人因为高昂的硬件和繁琐的安装对它望而却步。 腾讯云的高性能应用服务 HAI (Hyper Application Inventor)是一款专门为AI和科学计算…

产品化的GPT,能否为“百模大战”照亮未来?

这两天,AI圈都处在一种莫名的震撼感当中。 北京时间 11月7日,OpenAI 举办了首次DevDay开发者日活动。活动现场发布了非常多内容,其中有一些按部就班的,比如技术上更新了最新版本的GPT-4 Turbo。也有一些让从业者目瞪口呆&#xff…

时序预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BP-Adaboost的BP神经网络结合AdaB…

苹果CMS首涂第30套可装修DIY主题模板免授权版 苹果v10首涂模板

这是一款可以装修的主题,类似淘宝店装修一样,可以针对首页、栏目页、详情页、播放页进行自定义装修,内置10个模块自由选择、添加、修改、删除、排序操作,后续升级还会增加更多实用和个性模块供选择,主题内包含的导航、…

CH11_重构API

将查询函数和修改函数分离(Separate Query from Modifier) function getTotalOutstandingAndSendBill() {const result customer.invoices.reduce((total, each) > each.amount total, 0);sendBill();return result; }function totalOutstanding() …

微信公众号H5在手机上分享功能不生效

病情描述: 在代码里配置了分享功能updateAppMessageShareData和updateTimelineShareData,在开发者工具里看log都是成功的,通过手机打开H5链接后,分享的功能不生效,分享出去的是一个链接地址。 在开发者工具里看都是成…

SQL Server SSIS ETL job执行相关操作

创建SSIS项目 Excel导入SQL Server 构建Excel源 配置Excel源信息 配置SQL Server目标 双击“ADO NET目标” job执行 新建job 右键“SQL Server代理”的“作业”,点击“新建作业”,弹出“新建作业”的选项页 首先是“常规”选项页,…

CodeWhisperer--轻松使用一个超级强大的工具!

CodeWhisperer 简介 CodeWhisperer 是亚⻢逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。 CodeWhisperer 有以下几个主要用途: 解决编程问题,提供代码建议,学习编程知识等等,并且 CodeWhisperer 会…

在Node.js中,什么是Promise?如何使用Promise处理异步操作?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【华为】防火墙核心知识梳理

一、概述 在通信领域,防火墙是一种安全设备。它用于保护一个网络区域免受来自另一个网络区域的攻击和入侵,通常被应用于网络边界,例如企业互联网出口、企业内部业务边界、数据中心边界等。 防火墙根据设备形态分为,框式防火墙、盒…

COGI控制删除按钮增强

1、业务需求 COGI在SAP中主要用于解决生产订单异常的问题。通常发生在生产订单执行过程中,当出现了特定的异常情况时,需要进行处理。这些异常情况可能包括物料缺失、数量不匹配、质量问题等等。 当这些异常情况发生时,系统会生成异常记录并…

【计算机网络基础实验】实验二 有线IP互通网络实践

任务一 IP路由协议实现企业路由器通信 目录如下: 任务一 IP路由协议实现企业路由器通信2.1.1 任务描述2.1.2 任务目的2.1.3 任务实施实验需求实验步骤步骤1:更改每台设备的名称步骤2: 给R1接口配置相应IP地址步骤3: 给R2接口配置相…

康耐视VisionPro 9.0 R2破解安装教程

文章目录 说明下载安装VisionPro破解匹配的Visual Studion将VisionPro的控件添加到VS工具箱中 说明 康耐视VisionPro 9.0 R2 破解版仅用于个人学习使用,如企业中需要请自行购买正版哦。 下载 百度网盘链接:https://pan.baidu.com/s/1rreSzpe8r2Gz8qSp…

TSINGSEE青犀AI智能分析网关V4人员离岗识别算法的说明及应用

人员离岗AI识别算法,是基于计算机视觉深度学习神经网络技术,通过配合现场部署的监控摄像头,自动识别人员是否在工位或作业区域内,结合离岗时间的配置,可以触发人员离岗告警。该算法目前可应用在监控室、、值班室、中控…

sqlserver查询表结构

SELECT 表名case when a.colorder1 then d.name else end, 表说明case when a.colorder1 then isnull(f.value,) else end, 字段序号a.colorder, 字段名a.name, 标识case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end, 主键case when exists(SELECT 1…