接口自动化测试很难掌握吗?不!一小时学完

news2024/11/24 19:40:13

一. 什么是接口测试

接口测试是一种软件测试方法,用于验证不同软件组件之间的通信接口是否按预期工作。在接口测试中,测试人员会发送请求并检查接收到的响应,以确保接口在不同场景下都能正常工作。

就工具而言,常见的测试工具有Jmeter、Postman等。但这类工具往往更是做接口调试,对于做自动化以及测试集成却不够理想,因此便有了接口测试脚本,Java、Python、GO等语言都能支持。

然而语言总归是要学习成本的,因此陆续开始有了各类测试平台。为什么做测试平台?即将接口测试工具与接口测试脚本结合起来,实现像测试工具做接口调试一样简单,同时也能更好的支撑场景化测试、持续集成测试。

二. 接口测试的要素有哪些

接口测试其实无外乎就是将请求发送出去并验证响应结果。我们常做的接口测试主要是HTTP协议,针对这类接口,其请求数据,主要构成是:请求方法,请求地址,请求头,请求参数。

请求方法即是常见的GET/POST/PUT/DELETE等,根据接口文档来维护即可,只是定义了不同的请求方式而已。

至于请求地址,在做自动化测试时,又可以拆分为请求域名和请求路由,一般来说不同的环境域名会产生变化,但是路由一般是固定的,因为我们在做测试集成时为保证一个接口请求能在多个环境下执行,会选择将域名提出来放在环境中管理,而每个接口对应的域名通常可以根据路由的值来匹配即可。当然在微服务架构中,我们也可以给每个接口打上微服务的标识,而同一个微服务的接口无论在任何环境下其域名应当是一致的。因此除了通过路由匹配,我们也可以通过微服务标识来匹配,我称之为域名标识。

​此外,接口测试最重要的一点就是登录验证,通常会有四种方式。RestAPI最常见的是Session/Cookies和Token,OpenAPI一般是OAuth,最古老的鉴权则是HTTP Basic Authorization。对于Cookies和Token,一般我们都是通过放在请求头中发送出去,Session一般都是作为状态管理员来保存,通常编程语言的HTTP包会自带该方法,我们需要做的无外乎就是在登录后保存这个Session即可。至于OAuth,通常是需要加密成一个签名来做校验,我会在后面单独开一篇文章来介绍具体的使用。

对于请求数据,一般有三种方式,分别是:查询参数、路由参数以及请求体。查询参数即将参数转变为name=value的形式放在请求地址后面,以?号分隔多个参数中间加&符。路由参数往往是将参数值放在路由中,因此路由的值往往会是动态的,且路由数量也是不定的。至于请求体则比较好理解,一般常用的是表单和json串。当然古老的接口也有文本格式/XML格式等,另外就是文件上传的接口会是二进制流。

最最重要的一点就是,无论什么业务,接口测试一定要有断言,没有断言的接口测试用例就是在耍流氓。因此接口还有一个重大要素就是编写断言,断言的方式有很多,可以断言接口的响应数据,对于数据增删改的接口同样也可以去断言数据库的内容。

三. 如何用开源工具平台来做接口自动化测试

前面了解了接口自动化测试基本原理之后,我们用一款开源测试平台来快速的实现一个简单的接口自动化测试用例编写,接下来我们合并图文来介绍用法:

第一步:创建环境,如上所述,环境是接口测试用例为了能在多环境复用下不可缺少的一部分。环境创建完成后,还需要在环境下创建域名,域名匹配规则在上文介绍过,可以通过路由匹配和域名标识匹配。

新增环境

第二步:创建接口,我们在做自动化测试时,接口需要单独维护和管理,从而做到当接口发生变化时,只需要维护接口管理处的接口,所有引用该接口的用例都能随之变化,提升维护效率。在创建接口前,我们可以先创建接口所属的业务模块,同样的也方便后期快速找到接口。

而接口需要维护的数据也很简单,即前面所述的四大请求数据即可完成最基础的接口信息维护。当然为了后期记忆,我们最好还是给接口起个名字加个描述。同时,如果希望使用域名标识,则给接口绑定上一个微服务的标识即可。

新增接口

第三步:做好了接口维护,那就可以开始写接口用例了。接口用例其实不过是在接口上面再套一层壳罢了,之所以套上这层壳,主要目的还是为了做业务逻辑的验证,可能一个业务逻辑的验证需要执行多个接口,将多个接口加入到一个用例中,即可完成。如果多个接口之间数据有依赖关系,也可以通过一些关联参数的引用实现,这在后面的文章我会单独介绍。

新增用例

第四步:接口加进来后,直接调试。选择之前维护的环境执行即可。调试成功后,维护一下用例的基本信息,如给用例起个名字,写一段描述,点击保存,即完成一条接口自动化用例的编写。

调试用例

四. 总结

通过上述的几个步骤,不难看出,在使用平台后,完全可以抛弃代码编写接口测试脚本那一套方案,而且便捷程度不属于postman等工具。最大的好处是,用例保存服务端,我们可以任意编排用例去执行,从而验证不同的需求。只要用例数据设计得当,即便是换产品经理来验证,选好用例直接执行也能完成自动化测试。

Python接口自动化测试零基础入门到精通(2023最新版)

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

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

相关文章

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 6》(10)

《Linux操作系统原理分析之Linux 进程管理 6》(10) 4 Linux 进程管理4.6 Linux 管道4.6.1 管道的概念4.6.2 无名管道1.终端使用2.程序中使用 4.6.2 命名管道1.终端使用2.程序中使用 4 Linux 进程管理 4.6 Linux 管道 4.6.1 管道的概念 1、管道是 linu…

浅谈智能配电房电力运维平台的开发与应用

安科瑞 华楠 摘 要:近年来,我国对电能的需求不断增加,智能电网建设越来越多。为实现对智能配电房设备运行状态的实时监测、态势觉察和态势可视化集中显示,基于智能配电房传感器和配电自动化站所终端单元(DTU&#xf…

Transformers实战——文本相似度

文章目录 一、改写文本分类1.导入相关包2.加载数据集3.划分数据集4.数据集预处理5.创建模型6.创建评估函数7.创建 TrainingArguments8.创建 Trainer9.模型训练10.模型评估11.模型预测 二、交互/单塔模式1.导入相关包2.加载数据集3.划分数据集4.数据集预处理5.创建模型&#xff…

K 最近邻算法

K 最近邻算法 简单 KNN海伦约会手写数字识别KNN 算法的优缺点 K 最近邻(K-NearestNeighbor,KNN)算法,是 1967 年由 Cover T 和 Hart P 提出的一种用于分类与回归的方法。 基本原理:存在一个带标签的数据集(…

用二维码展示产品信息,轻松解决产品宣传难题

为了方便客户更好的了解产品,提升产品宣传效率,可以搭建产品信息二维码系统。为每一类产品生成一个二维码,上传文字、图片、音视频等内容,将二维码印刷在产品外包装、画册、样品卡或说明书上,用户使用微信扫码就能查看…

4G自动变焦云台球机摄像头如何解决低功耗问题?

目前也很多4G球机,不过对于工业的应用,可能还需要有针对性的球机方案? 比如,大家关心的功耗问题,在无电无网的情况下,偏远山区,对于一些油田的管控,输线电路可视化监控,天然气管道的…

怎么快速制作一本出色的电子期刊!

比起传统纸质期刊,电子期刊有着众多的优势,它打破了以往的传播形式和人们传统的时空观念,从而更加贴近人们的生活,更好地满足新时代人们对文化生活的更高要求。如何制作电子期刊呢? 其实很简单,只需要使用…

动态规划背包问题总结

背包问题分类繁多,对刚学习动态规划的新手的来说难度不小,接下来就来仔细理一理背包问题 首先我们先不管背包问题有几种分类,反正讲了也不会有什么深刻的认识,只有你真正做题遇到了,你来能感受到他大概是怎么样的 回到最初的起点,我们需要搞明白的是: 什么是背包问题? 我们…

扩散模型实战(十三):ControlNet结构以及训练过程

推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四&#xff…

Android : 获取、添加、手机联系人-ContentResolver简单应用

示例图: MainActivity.java package com.example.mygetdata;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat;import android.Mani…

vue项目通过HBuilder打包成apk,实现apk自动更新下载

vue 项目通过 HBuilder 打包成 apk,实现 apk 自动更新下载 1、vue 项目通过 HBuilder 打包成 apk vue 项目在终端执行 npm run build 打包成 dist 文件,生成的 dist 文件在 项目根目录下 在 HBuilder 中 新建一个项目 默认选择 5APP 的默认模板项目…

【多属性对象“{a:1,b:2}”】与【单属性对象的数组“[{a:1},{b:2}]”】的相互转换

前端开发的某些场景(比如用echarts开发某些可视化图表)经常需要将【多属性对象,如“{a:1,b:2}”】与【单属性对象的数组,如“[{a:1},{b:2}]”】做相互转换,以下是不通过循环,简洁实现这种转换的方法&#x…

广州华锐互动:线上3D低碳环保主题展厅,沉浸式体验有助于培养环保意识

随着科技的飞速发展,环保已经成为了全球关注的焦点。为了让更多的人了解环保科技的重要性,许多城市都建立了线上3D低碳环保主题展厅。这些展馆通过虚拟现实技术,让人们身临其境地感受到环保科技的魅力,从而提高人们的环保意识。 线…

卡码网语言基础课 | 14. 链表的基础操作Ⅱ

题目: 构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。 要求: 1. 使用自定义的链表数据结构 2. 提供一个 linkedList 类来管理链表,包含构建链表、输出…

自动标注好用吗?基于SAM和Label Studio搭建半自动实例分割标注平台

文章目录 一、半自动标注二、缺点三、安装方法1、 python版本要求2、下载playground3、SAM安装4、SAM权重下载5、安装label-studio-ml6、启动SAM接口7、SAM启动日志8、安装并启动label-studio9、label-studio启动日志 四、半自动标注使用方法1、创建project并导入数据2、标签设…

多元系的复相平衡

多元系的复相平衡 多元系的吉布斯函数 G-{T,p,n}系统 吉布斯关系 多元系的热力学基本方程

使用Three.js创建导航立方体

什么是导航立方体? 导航立方体是一个交互式的3D控件,它允许用户通过点击和拖动立方体的各个面来改变3D视图的方向。这是一种非常直观的方式,让用户能够轻松地在3D空间中导航。 创建导航立方体 下面是一个基本的步骤,说明如何使用Three.js创建一个导航立方体: // 创建场景…

ICCV 2023 | 动态蛇形卷积(内含即插即用的代码及测试用例)

论文链接: https://arxiv.org/abs/2307.08388 代码链接: https://github.com/YaoleiQi/DSCNet 下面直接上代码,并且源码中也给了测试用例,是一个即插即用的模块 import os import torch import numpy as np from torch impor…

怎么做excel表格的二维码?文件快速做二维码的教程

Excel表格怎么做成二维码来扫码插看呢?Excel是工作中常用的一种文件格式,想要将表格内容分享给其他人查看,那么将表格生成二维码的方法会更加的方便快捷,其他人只需要扫描二维码就可以查看或者下载文件。表格excel二维码可以通过文…

Rust语言入门教程(六) - 字符串类型

在Rust中, 字符串类型其实是一个比较复杂的话题。在Rust的标准库中,至少都提供了6种字符串类型,我们平常使用的最多的是其中的两种。这两种类型互相之间也有所关联: str: 字符串切片String 字符串 其中, 字…