自动化测试框架的搭建详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快   

最近好多小伙伴都在说接口自动化测试,那么究竟什么是接口自动化测试呢?让我们一起往下看就知道了,首先我们得先弄清楚下面这个问题。

为什么要做(自动化)接口测试?

1、由于现在各个系统的复杂度不断上升,导致传统的测试方法成本上升且测试效率大幅下降,而接口测试相对于UI测试更加稳定,且相对容易实现自动化持续集成,可以减少人工回归测试的时间成本,缩短测试周期。

2、接口测试可以更早的介入到项目开发中,一般只要接口定义好了,就可以写代码了。而功能测试必须要等系统提供可测的界面后才能进行。

3、相对于UI测试(某些测试环境搞起来贼麻烦)来说,接口测试可以更简单全面地覆盖到底层的代码逻辑,从而发现一些隐藏bug。

4、从安全层面来说,现在大部分系统前后端框架是分离的,只依赖前端进行限制已经不能满足系统的安全要求,需要后端同步进行控制,所以测试也需要从接口层面进行验证。

5.越来越多的团队开始接收DevOps所倡导的高度协同,研发、测试、运维及交付一体化的思维,对测试效能提出了更高的要求。

接口测试原理

模拟客户端向服务器发送请求,服务器接收后进行处理并向客户端返回应答,客户端再接收应答的过程。

测试范围

  • 业务功能(包括正常、异常场景是否实现)
  • 业务规则(覆盖度是否全面)
  • 参数验证(边界、业务规则是否达到要求)
  • 异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试)
  • 性能测试(响应时间、吞吐量、并发数、资源要求)
  • 安全测试(权限验证、SQL注入等)

一、自动化测试框架规划思路

1.选择语言

  • python
  • java

自己擅长哪个选哪个,推荐python

2.编程工具选型

  • pycharm
  • vscode

自己擅长哪个选哪个

3.测试框架选型

  • unittest ---python自带的测试框架
  • pytest ---unittest升级版,推荐
  • httprunner
  • rf框架 ---关键字

4.报告可视化方案选型

  • htmltestrunner
  • beautifulreport
  • allure

5.持续集成方案

  • jenkins

6.仓库服务器选型

  • github ---服务器在国外
  • gitlab
  • gitee

7.测试管理工具选型

  • 禅道
  • jira

接口自动化测试框架的搭建一般有两种思路:

1.基于工具的

例如:Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins+Git/svn

2.基于代码的

例如:Python+Requests+Pytest+Allure

个人建议:如果是学习阶段,选择基于代码的模式,通过自己一步一步的规划项目、编写代码,可以更好的理解接口自动化的实现原理,之后再学习一些工具会更得心应手。

我这里选择的是: Python+pycharm+pytest+allure+gitlab+jira

规划好方案后就可以创建我们的项目代码工程了(可以与编写测试用例并行,需要提前约定好测试用例的格式,方便后续代码设计)。

二、项目代码工程构建思路

设计框架的原则:

  • 封装基类方法

   对于一些较通用的方法,可以封装,比如发送请求、增、删、改、查。

  • 高内聚低耦合

   每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码。

   模块与模块之间接口的复杂程度尽量低,比如在类内部尽可能减少方法之间的调用,否则一个方法的变动会影响调用它的另一个方法。

  • 脚本分离

   业务代码、测试数据应该相互剥离、灵活调用。理念类似初识PO模式并在Selenium中简单实践中的PO设计模式。代码中应该不出现具体的数据、配置。而是调用对应的数据文件。

三、一个比较完善的项目代码工程结构:

- common  #包文件,公共模块,存放一些通用方法- baseapi.py- class BaseApi()#基类- 方法1:发送请求- 方法2:增- 方法3:删- 方法4:改- 方法5:查
- libs  #包文件,存放业务层代码- login.py #登陆模块- class Login(BaseApi) #继承基类里的BaseApi- 方法1:发送登陆请求- 方法2:发送登出请求- logout.py #登出模块- class Logout(BaseApi)
- configs  #包文件,存放配置- config.py- HOST='xxx'#用于切换测试环境- url='xxx'
- datas #文件夹,存放数据/测试用例- xxx.xls- xxx.yaml
- testCase #包文件,存放测试用例代码,注意符合pytest命名规范- test_login.py- class Test_login- 方法1:test_login01- 方法2:test_login02- test_logout.py- - class Test_logout- 方法1:test_logout01- 方法2:test_logout02
- outFiles #文件夹,输出文件- logs #存放log文件- report #存放报告- screenShot #存放截图
- tools #包文件,工具类- handle_data.py - handle_excel.py- handle_path.py- handle_yaml.py
- docs #文件夹,存放说明类文档- 代码规范.doc- 需求文档.doc

框架搭建:

四、后续代码编写思路:

框架写好后的代码编写思路,大体上为

1.基类封装,把一些常用的方法比如发送请求、增、删、改、查放到我们的基类里。

2.编写业务层的接口代码

3.编写测试用例代码,过程中发现缺什么就去写什么方法,思考这个方法应该放在具体业务内还是基类还是tools内,这个过程是对代码不断优化的过程。直到我们的用例代码写完。

  • 比如,写测试用例代码过程中需要读取yaml文件,就在tools内加一个get_yml_data的方法
  • 再比如,两个业务模块之间需要关联,需要A方法返回对象给B方法用,则去优化A方法,给出返回值。
  • 再再比如,一些关键节点需要截图,则去补充截图的方法。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

重拾CSS,前端样式精读-媒体查询

前言 本文收录于CSS系列文章中,欢迎阅读指正 说到媒体查询,大家首先想到的可能是有关响应式的知识点,除此之外,它还可以用于条件加载资源,字体大小,图像和视频的优化,用户界面调整等等方面&am…

4TS Series TVS 的解析

4TS Series 400W Transient Voltage Suppressor指的是时源芯微(TimeSource)生产的一系列瞬态电压抑制二极管(Transient Voltage Suppressor,TVS),这些二极管专门设计用于保护敏感电子设备免受雷电、电源浪涌…

语义分割数据增强,图像和标签同步对应详细增强教程(附代码)

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《图像增强》 &a…

本地部署 OpenHands

本地部署 OpenHands 0. 引言1. 部署 OpenHands2. 访问 OpenHands3. 验证 OpenHands 0. 引言 OpenHands 是一个由人工智能驱动的软件开发代理平台。 OpenHands 代理可以执行人类开发人员可以执行的任何操作:修改代码、运行命令、浏览网页、调用 API,甚至…

amber分子动力学

分子动力学模拟是分子模拟中最接近实验条件的模拟方法,能够从原子层面给出体系的微观演变过程,直观的展示实验现象发生的机理与规律,促使学术研究向着更高效、更经济、更有预见性的方向发展。可以解决和研究DNA的折叠和性质、蛋白与配体的识别…

丹摩征文活动 |通过Pycharm复现命名实体识别模型--MECT模型

文章目录 🍋1 引言🍋2 平台优势🍋3 丹摩平台服务器配置教程🍋4 实操案例( MECT4CNER-main)🍋4.1 MECT4CNER-main模型🍋4.2 环境配置🍋4.3 训练模型🍋4.4 数据…

嵌入式系统的利器C++

一、嵌入式 C 概述 嵌入式 C 在嵌入式系统开发中占据着至关重要的地位。它是 C 的一个子集,由日本 CPU 大厂于 1996 年提出,目标是在保持 C 面向对象特性的同时,减小代码体积、提升执行效率并简化编译器。 在嵌入式系统开发中,嵌…

【计算机网络】【网络层】【习题】

计算机网络-传输层-习题 文章目录 13. 图 4-69 给出了距离-向量协议工作过程,表(a)是路由表 R1 初始的路由表,表(b)是相邻路由器 R2 传送来的路由表。请写出 R1 更新后的路由表(c)。…

C/C++精品项目之图床共享云存储(2):MySql连接池

一:介绍 C/C精品项目之图床共享云存储(1) 我们项目的第一个文章讲解了很多的基础组件,包括线程池。我们都知道线程池是为了资源的复用,提高效率。而我们的MySql连接池也是一样的,是为了维持管理固定数量的…

网安数学基础-同余关系

文章目录 参考等价关系实例 同余同余和等价同余的运算 乘法逆元一次同余方程消去律 剩余类中国剩余定理欧拉函数欧拉定理 费马小定理 参考 【一口气学完】密码学的数学基础2,《同余关系》,一小时学完 等价关系 三角形里的全等关系 等价关系定义 下面这…

工业主板市场现状和主要市场驱动因素概述

工业主板市场是计算机硬件行业中的一个重要细分市场,专注于供应专为工业应用而设计的主板。与消费级主板不同,工业主板可承受极端条件,包括高温、连续运行以及暴露在灰尘和潮湿环境中。工业主板对于制造、自动化、医疗、国防和能源等行业中使…

舌尖上的传统美味 —— 食家巷白吉饼

第一眼看到食家巷白吉饼,就被它朴实的外表所吸引。圆润的形状,淡淡的麦色,没有过多的装饰,却散发着一种让人安心的质朴之美。 🎈拿起一个白吉饼,轻轻一掰,“咔” 的一声,那酥脆的外…

OpenHarmony-1.启动流程

OpenHarmony启动流程 1.kernel的启动 流程图如下所示:   OpenHarmony(简称OH)的标准系统的底层系统是linux,所以调用如下代码: linux-5.10/init/main.c: noinline void __ref rest_init(void) {struct task_struct *tsk;int pid;rcu_sch…

ANR分析实例

目录 一、ANR出的问题原因 二、日志分析 2.1 CPU 负载 2.2 内存 2.3 堆栈信息 三、案例分析 3.1 主线程无卡顿,处于正常状态堆栈 3.2 主线程执行耗时操作 3.3 主线程被锁阻塞 3.4 CPU被抢占 3.5 内存紧张导致ANR 3.6 系统服务超时导致ANR 3.7 Input dis…

知识库搭建:高企创新创业的智慧引擎与未来趋势

在当今这个科技迅猛发展的时代,高新技术企业(简称“高企”)作为推动经济社会进步的重要力量,正面临着前所未有的创新挑战与机遇。知识库,这一信息时代的关键工具,不仅汇聚了高企内部的丰富知识与经验&#…

D67【python 接口自动化学习】- python基础之数据库

day67 Python操作MySQL基础使用 学习日期:20241113 学习目标:MySQL数据库-- 136 Python操作MySQL基础使用 学习笔记: pymysql 创建MySQL的数据库链接 执行sql语句 总结 Python中使用第三方库:pymysql来操作MySQL,…

容器管理平台KubeSphere的使用

在之前的课程中我们是在minikube中安装了K8S环境,然后通过kubectl命令来管理K8S的,这种用命令来管理的方式虽然对程序员来说看起来很炫酷,但有时候用起来还是挺麻烦的。这节课程给大家介绍一款企业级容器管理平台KubeSphere,使用它能更方便地管理K8S中的容器,希望对大家有…

低代码可视化-uniapp气泡弹窗组件可视化-代码生成器

气泡弹窗组件是产品设计中常用的控件之一,以下是对uniapp气泡弹窗组件可视化的详细解析: 一、组件定义 气泡弹窗组件(diy-popover )指的是当触发某项操作时,在页面上方或特定位置展示的弹出层容器,容器内…

Unity3D学习FPS游戏(11)敌人AI巡逻(NavMesh)

前言:前面两篇博客已经实现了简单的敌人,但是呢,这样很无趣。因为敌人只会站在原地被攻击,所以本篇我们将实现敌人AI巡逻,让敌人动起来。 敌人AI巡逻 场景丰富一下导航网格NavMesh构建导航网格导航网格优化玩家被当作…

遇到“msvcr120.dll丢失”要怎么解决?详解msvcr120.dll的解决方法

遇到“msvcr120.dll丢失”错误通常表明你的系统缺少一个关键的DLL文件,这是Microsoft Visual C 2013的一部分。这个问题可能导致某些程序无法运行,影响电脑性能。不过,解决这一问题并不复杂。接下来,本文将向你展示几种简单的修复…