五分钟学会接口自动化测试框架

news2024/11/17 8:21:04

今天,我们来聊聊接口自动化测试是什么?如何开始?接口自动化测试框架怎么做?

自动化测试

自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。

特别是在敏捷模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个变化过程(迭代快,加班多)。测试人员如何快速响应并保证产品在上线后的质量能够满足市场要求(如何在上线一个新功能的同时快速对旧功能快速进行回归,保证旧功能不被新功能影响而出现严重的Bug?)。

针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率。

随着行业内卷越来越严重,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现自动化测试的字眼,因此也是我们跳槽面试、升职加薪必备利器。

自动化测试又可分为接口自动化、Web UI自动化、App自动化,今天我们就来聊聊接口自动化测试。

接口自动化测试的价值

  1. 相比于UI自动化测试,接口自动化的维护成本更低,主要体现在以下几个方面

    • 在分层测试金字塔模型中,接口测试属于第二层服务集成测试,与UI自动化测试相比,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。
    • 前端页面变化快,而且UI自动化比较耗时,比如等待页面元素加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间,因此UI自动化实施起来比较困难。
    • 接口较稳定,接口的响应时间基本上都是秒级、毫秒级别,速度快,并且接口自动化本身也可以做一些有关联的操作、全流程的操作,比如:注册 --> 登录 --> 修改个人信息。
  2. 测试复用性

  3. 快速回归(提高回归的覆盖率、效率、稳定性)

  4. 可以运行更多更繁琐的测试,自动化的一个明显的好处是可以在较少的时间内运行更多的测试

接口自动化测试如何开展

工具选择

  • Python/Java + Requests + Unittest/Pytest + HTMLTestRunner/Allure
  • RobotFramework:关键词驱动的自动测试框架
  • 基于Web的自动化测试平台(公司自主研发,成本较高,方便不懂编程也能使用)

自动化测试工具有很多,每种工具都有各自的优缺点,选择适合自身实际情况的框架,落地实施才是重点,具体选择哪种工具放在其他文章再说。

这里使用 Python + Requests + Pytest + Allure

举个栗子

接口文档(找了一个开放的接口用于测试)

接口信息:

名称:全国高校信息查询接口
描述:用于查询全国高校信息
Host: www.iamwawa.cn
Request URL:/home/daxue/ajax
Request Method:POST
Content-Type: application/x-www-form-urlencoded
headers:user-agent:Chrome

参数:

在这里插入图片描述
请求示例:

POST /home/daxue/ajax HTTP/1.1
Host: www.iamwawa.cn
user-agent: Chrome
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23
Content-Length: 54

type=name&keyword=四川轻化工大学

响应示例:

{
    "status": 1,
    "info": "查询成功!",
    "data": [
        {
            "id": "2181",
            "name": "四川轻化工大学",
            "code": "4151010622",
            "department": "四川省",
            "city": "自贡市",
            "level": "本科",
            "remark": ""
        }
    ]
}

线性脚本

import requests

res = requests.post(url="https://www.iamwawa.cn/home/daxue/ajax",
                    headers={"user-agent": "Chrome"},
                    data={"type": "name", "keyword": "四川轻化工大学"})
assert res.status_code == 200
res_json = res.json()
print(res_json)
assert res_json["status"] == 1

使用以上代码,最基础最简单的接口测试就做起来了,好的开始就是成功的一半。

但是,问题也随之而来,线性脚本的缺点也暴露出来了:

  1. 测试的输入和断言都是捆绑在脚本中,易读性差
  2. 无共享或重用脚本,可复用性低
  3. 线性脚本修改代价大,维护成本高,不便于后期优化
  4. 容易受软件变化的影响,容易受意外事件的影响,引起整个测试失败

所以,下一步就是如何优化线性脚本,也就是如何实现代码的高内聚低耦合,也是接口自动化测试框架要解决的问题。

3 接口自动化测试框架

GitHub开源代码:关注我的公众号获取

在这里插入图片描述

  • base_api.py:对Requests库进行二次封装,完成对api的驱动

  • api:继承base_api,将http请求接口封装成Python方法

  • utils:CommonUtil,公共模块,将一些公共函数、方法以及通用操作进行封装,如:日志模块、yaml操作模块、时间模块

  • config:配置文件模块,配置信息存放,如:URL、Port、Headers、Token、数据库信息等

  • data:测试数据模块,用于测试数据的管理,数据与脚本分离,降低维护成本,提高可移植性,如:yml文件数据

  • cases:测试用例模块,用于测试用例的管理,这里会用到单元测试框架,如:Pytest、Unittest

  • run.py:批量执行测试用例的主程序,根据不同需求不同场景进行组装,遵循框架的灵活性和扩展性

  • logs:日志模块,用于记录和管理日志,针对不同情况,设置不同的日志级别,方便定位问题

  • reports:测试报告模块,用于测试报告的生成和管理,如:基于Allure生成的定制化报告

在这里插入图片描述
最后:下方这份完整的自动化测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

)

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

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

相关文章

怎么从零搭建vue项目(使用webpack手动搭建)

目录一、前提条件二、手动搭建vue项目的步骤:1. 创建项目2. 生成package.json文件3. 引入webpack和创建webpack.config.js文件4. 创建index.html,main.js文件5. 使用webpack命令编译6. 引入vue2,修改index.html,main.js文件7. 引入…

物理机不能访问虚拟机kali的web服务解决方案记录

目录 环境 问题描述 解决方案 知识补充 效果测试 其他思路 环境 kali(nat模式),物理机,可互ping 问题描述 kali的web服务器不能在物理机上访问。 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web …

Python基础知识——列表

列表 列表是可以存放任何数据,包括整型,浮点型,字符串,布尔型等等,是常用的数据类型之一。 1.列表的创建 列表也是一个可迭代对象 1. 普通形式l [1,2,3,4,5] ---整型列表l ["a","b","c&…

一篇搞懂tcp,http,socket,socket连接池之间的关系

前言 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之…

激光雷达上车「热」背后的焦虑

激光雷达的上车节奏正在加速。 高工智能汽车研究院监测数据显示,从2022年9月至今,中国市场乘用车月度前装标配搭载激光雷达一直保持在1.5万台以上,其中,去年12月更是单月冲破3万台大关。 本周,Luminar宣布扩大与梅赛德…

实现小说自由,国产浏览器出手了,吊打各类阅读软件

喜欢看小说的朋友都知道,有时候看小说看到一定的章节就要收费了,那我们怎么实现小说阅读自由,免费看完整部小说呢?下面给大家分享可以免费看小说的良心浏览器,吊打各类阅读软件,真的是巨好用。无论是古代穿…

【读论文】THFuse

【读论文】THFuse介绍网络架构多分支CNN特征提取块基于VIT的全局特征提取快图像重建块损失函数总结参考论文: https://www.sciencedirect.com/science/article/abs/pii/S0925231223000437如有侵权请联系博主介绍 一篇基于CNN和VIT的关于红外可视图像融合的论文&…

【wpf】ItemsControl 的Binding 小技巧

ItemsControl 非常常用和好用的控件,我经常将之用于配置界面! 比如这么一个配置界面: 整体是一个ItemsControl,每个子界面就是其中的一个Item。 ItemsControl 的 ItemsSource 绑定到 ParameterInfo 的集合 public ObservableCo…

最简单的微信多开防撤回方式

微信,大家工作中生活中用的最多的一款应用;很多公司喜欢用微信来作为工作沟通的工具,官方原版只支持登陆一个微信,这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便。另外有的时候别人撤回了一些重要消息&#xf…

目前医疗器械数据库有哪些?最推荐哪些?

在英特网发达的今天,医疗器械信息查询应该是一件便捷的事情,但不知道大家有没有遇到过这种类似情况,就是在查询医疗器械信息时,如果通过百度去检索,查到的结果往往会不尽人意,比如信息陈旧、太分散、来源不…

Spring security 个人理解

改文章写的很好:https://zhuanlan.zhihu.com/p/342755411 Spring security 分为两个部分 登陆认证权限认证 登陆认证 其实就是就是登陆注册,然后获取登陆凭证的问题 操作如下 登陆账号密码,通过账号查询出用户数据,然后密码进…

如何使用DeadFinder寻找失效链接

关于DeadFinder DeadFinder是一款功能强大的链接分析工具,该工具可以帮助广大研究人员快速地寻找目标页面中的无效链接(死链)。所谓死链,即一个页面中存在的无法被连接的一条链接。这些链接如果一直保留在页面中的话,…

Hive中的高阶函数(二)

1、UDTF之explode函数 explode(array)将array列表里的每个元素生成一行; explode(map)将map里的每一对元素作为一行,其中key为一列,value为一列; 一般情况下,explode函数可以直接使用即可,也可以根据需要结…

[python入门(53)] - python中的OS模块(包) - 2

目录 ❤ OS模块和path模块(函数) ❤ os模块中操作目录以及文件的函数 ❤ os模块中遍历目录数 ❤ 一些表现形式参数 ❤ 获取在进程的控制终端上登录的用户的名称: os.getlogin() (即此时pc登录的用户名) ❤ 总结 ❤ os.listdir()…

3月4日线下讲座《项目经理五项管理锦囊》

在项目管理过程中,你是否有过因为人际关系紧张,而导致团队协作不顺畅? 项目团队内耗严重,成员之间缺乏信任冲突较多,影响士气项目质量及项目周期等问题? 为什么会导致这样的结果?如何避免踩坑&a…

TAS5411QPWPRQ1引脚图LP873220RHDRQ1汽车应用开关稳压器

8W单声道汽车类D类音频放大器:TAS5411QPWPRQ1引脚图 【概述】TAS5411-Q1是一款单声道D类音频放大器,非常适用于汽车类紧急呼叫(eCall)、远程信息处理、仪表板应用。该器件采用14.4VDC汽车电池供电,可在负载为4Ω且THDN不超过10%的情况下提供高…

MQTT的学习之Mosquitto集群搭建

文章钢要: 1、进行双服务器搭建 2、进行多服务器搭建 一、Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简单的Mosquitto集群模式。 首…

Win11搜索栏无法使用怎么办?

随着Windows 11的正式发布,许多用户已经升级了他们的操作系统。但是安装Win11系统之后,人们发现它有一些问题。例如,Win11搜索栏无法使用,这极大地影响了用户体验。那我们该如何解决Windows搜索栏用不了这一问题?方法1…

Matplotlib精品学习笔记002-Pyplot详解,快速绘图

Matplotlib精品学习笔记002-Pyplot详解, matplotlib.pyplot集合了一系列功能,运行起来和MATLAB相似。 每个pyplot功能都会对画布(figure)进行修改:包括创建画布,在画布上创建一个画图区,向画图…

【JVM】垃圾回收器

垃圾回收器 Serial收集器 单线程,进行垃圾收集工作时必须暂停其他所有的工作线程。STW造成了不好的用户体验。 新生代采用复制算法,老年代采用标记整理算法。 Serial Old Serial 收集器的老年代版本,它同样是一个单线程收集器。它主要有两…