接口测试基础知识
一、接口测试简介
什么是接口测试?
接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点:
- 检查数据的交换,传递和控制管理过程;
- 检查系统间的相互逻辑依赖关系等。
为什么做接口测试?
什么是微服务

微服务的特点
复杂度可控
- 服务边界清晰
- 体积小、复杂度低
- 开发、维护简单
容错性更高
- 可以使故障隔离在单个服务中
技术选型更灵活
- 可以结合业务特性自由选择技术栈
可扩展性更强
- 根据每个微服务的性能要求和业务特点来对服务进行灵活扩展
- 独立部署,使得发布更高效
接口测试的目的
- 控制住接口质量,终端问题会少很多
- 提高回归测试效率,保证质量
- 发现更底层的问题
- 更早的发现问题
- 缩短测试周期
- 基于接口层面实现脱离手工的方式高效执行测试
- 接口自动化目的是提升效率
二、HTTP请求与RESTful API
HTTP请求常见请求方法
| 请求方法 | GET | POST | PUT | DELETE | PATCH |
|---|---|---|---|---|---|
| CURD | Read | Create/Update | Update/Create | Delete | Update |
| 意义 | 请求指定的页面信息,并返回实体主体 | 向指定资源提交数据进行处理请求,POST 请求可能会导致新的资源的建立和/或已有资源的修改 | 从客户端向服务器传送的数据取代指定的文档的内容 | 请求服务器删除指定的资源 | 用来更新局部资源 |
HTTP请求—请求报文
一个HTTP请求报文由请求行、请求头、空行和请求体4个部分组成:
| 请求行 | 由三部分组成:请求方法,请求URL,HTTP协议版本 |
|---|---|
| 请求头 | 用来说明服务器要使用的附加信息 |
| 空行 | 通知服务器请求头结束 |
| 请求体 | 可以添加任意的其他数据 |
HTTP响应—响应报文
响应报文由 状态行、响应头、空行和响应体组成
| 响应行 | 1)响应的协议和版本号(2)响应状态码(3)响应状态描述符 |
|---|---|
| 响应头 | 类似请求头,告知客户端的附加信息,是一系列 key-value 值 |
| 空行 | 类似请求,用来分隔响应头和数据。 |
| 响应体 | 响应的数据 |
HTTP响应–常见状态码
| 状态码 | 说明 |
|---|---|
| 200 | OK:客户端请求已被成功接收,理解,接受。 |
| 400 | Bad Request:客户端请求有语法错误,不能被服务器所理解。 |
| 401 | Unauthorized :请求未经授权,这个状态代码必须和WWW-Authenticate 报头域一起使用。 |
| 403 | Forbidden:服务器收到请求,但是拒绝提供服务。 |
| 404 | Not Found:请求资源不存在,举个例子:输入了错误的URL。 |
| 500 | Internal Server Error:服务器发生不可预期的错误。 |
| 503 | Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
三、接口测试策略
接口功能测试
接口功能测试用例设计的重点,在于功能性的业务逻辑检查和参数检查。
(1) 针对输入,可参考参数类型进行设计;
(2) 针对接口处理,可按照逻辑进行用例设计;
(3) 针对输出,可根据结果进行分析设计;
接口测试用例设计应该满足需求文档,且对异常场景进行友好处理;且测试
这个接口是否按照接口文档进行开发。
接口文档测试
接口文档测试也就是接口文档规范。
通过文档获取接口的说明、请求参数、响应参数以及一些依赖关系。
一般包括接口名、接口描述、接口地址、请求方式、请求参数和格式、响应参数和格式等。
接口异常测试
- 非法参数测试
- 幂等测试
- 并发测试
- 事务测试
- 环境异常测试
- 大数据量时测试
接口安全测试
- API十大安全风险:
- 失效的对象级别授权
- 失效的用户身份验证
- 过度的数据暴露
- 资源缺乏和速率限制
- 失效的功能级授权
- 批量分配
- 安全配置错误
- 注入
- 资产管理不当
- 日志和监视不足
接口性能测试
用户视角
感受到的网站响应速度的快和慢。
开发视角
主要关注包括系统吞吐量,并发处理能力,系统稳定性,响应延迟等。
运维视角
主要关注基础设施性能和资源利用率。
如何设计接口压力测试方案
确定并发数:
可以通过尝试的方式。第一次设置自己预期接口需要达到的并发数,进行压力测试。然后通过二分法进行调整。
确定总请求次数:
可以尝试用现有线上业务每天产生的数量乘以一定的天数,作为接口压力测试的总请求次数
选取压力测试数据:
通常随机选择数据。但是要注意重复进行压力测试对性能的影响。
四、接口测试流程
| 阶段 | 功能测试 | 接口测试 |
|---|---|---|
| 需求 | 熟悉业务,业务问题沟通,测试范围讨论 | 自动化可行性研究,潜在自动化技术问题讨论 |
| 设计 | 功能测试范围,参与人员 计划排期 | 技术选型、排期、范围 |
| 开发 | 测试用例编写、评审和优化 | 编写和调试接口自动化脚本以及自动化场景 |
| 测试 | 测试执行、问题追踪、复测 | 接口测试执行、CICD集成 |
| 运维 | 生产环境验证、问题跟踪 | 线上接口自动化巡检、服务可用性检查 |
相关文章:
接口测试基础知识
一、接口测试简介 什么是接口测试? 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点: 检查数据的交换,传递和控制管理过程;检查系统间的相互…...
C++多线程之通过成员函数作为线程入口
说明: 通过类里面的函数作为线程入口,我个人难理解的地方在于给线程传递参数的时候,怎么找到Main函数。后面会做分析。 首先创建类:创建MyThread类,其中公有函数Main作为入口。这个类的传教比较简单,成员…...
word、excel文件转PDF(documents4j方式,简单)
1 documents4j方式 引入pom <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.1.12</version></dependency><dependency><groupId>com.documents4j</g…...
【Linux】:信号(三)捕捉
信号捕捉 一.sigaction1.基本使用2.sa_mask字段 二.可重入函数三.volatile四.SIGCHLD信号 承接上文 果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下: 用户程序注册了SIGQUIT信…...
数据结构 / 队列 / 循环队列 / 概念
1. 定义 为充分利用向量空间,克服假溢出现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储…...
elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内闭坑指南)
es自2020年的8.x版本以来,就提供了机器学习的能力。我们可以使用es官方提供的工具eland,将hugging face上的NLP模型,上传到es集群中。利用es的机器学习模块,来运维部署管理模型。配合es的管道处理,来更加便捷的处理数据…...
vue中中的动画组件使用及如何在vue中使用animate.css
“< Transition >” 是一个内置组件,这意味着它在任意别的组件中都可以被使用,无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发: 由 v-if 所触发的切换由 v-show 所触…...
MATLAB 模型参考自适应控制 - Model Reference Adaptive Control
系列文章目录 文章目录 系列文章目录前言一、参考模型二、扰动与不确定性模型三、直接 MRAC名义模型参数更新间接 MRAC估计器模型和控制器增益参数更新学习修正参考文献 前言 模型参考自适应控制模块计算控制动作,使不确定的受控系统跟踪给定参考被控对象模型的行为…...
【如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程】
如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程 写个Bat 批处理文件,现自动编译Keil工程和C# Visual Studio工程。这样可以结合Python 实现复杂的操作。 编译Keil工程: echo off set UVC:\Keil_v5\UV4\UV4.exe set UV_PRO_PATHD:\worksp…...
大模型的实践应用11-“书生”通用大模型的搭建与模型代码详细介绍,以及快速使用方法
大家好,我是微学AI,今天给大家介绍一下大模型的实践应用11-“书生”通用大模型的搭建与模型代码详细介绍,以及快速使用方法。“书生” 通用大模型是上海人工智能实验室研制的大模型,并且已经开源了“书生浦语”大模型70亿参数的轻量级版本InternLM-7B。InternLM-7B模型主要…...
【开发PaaS】基于Postgresql的开发平台Supabase
Supadase是开源的。我们选择可扩展的开源工具,使其易于使用。 Supadase不是Firebase的1对1映射。虽然我们正在构建Firebase提供的许多功能,但我们不会以同样的方式进行: 我们的技术选择大不相同;我们使用的一切都是开源的&#…...
前端开启gzip优化页面加载速度
生成gizp的打包资源,可以优化页面加载速度 打包的时候开启gzip可以很大程度减少包的大小,页面大小可以变为原来的30%甚至更小,非常适合线上部署, 但还记得需要服务端支持 1、前端配置compression-webpack-plugin 先安装:npm install compres…...
用Java写一个俄罗斯方块
目录 游戏规则 小方块类:Cell 七种图形类:I、J、L、O、S、T、Z J L O S T Z 俄罗斯方块游戏主类:Tetris 效果展示 游戏规则 由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它…...
应用于智慧金融的AI边缘计算盒子+AI算法软硬一体化方案
传统金融营业厅存在运营管理模式落后、资源投放不平衡、从业人员培训效果不达预期、客户体验割裂等普遍现象; 部署英码数字金融解决方案,将助力企业从传统金融模式快速向数字金融模式转变,可针对每一个客户定制个性化“一对一”服务ÿ…...
目标检测——Faster R-CNN算法解读
论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 链接:https://arxiv.org/abs/1506.01497 代码:https://github.com/rbgirsh…...
Wireshark (一)安装入门 —— 软件介绍
文章目录 Wireshark是什么?为什么要使用Wireshark?相关网络分析工具软件对比 Wireshark是什么? Wireshark是一种开源网络协议分析器,它可以捕获和分析网络中传输的数据包。 用户可以使用Wireshark来诊断网络问题、了解网络协议的…...
Web框架与Django路由层
Web框架 一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…...
什么是CAS, 什么是AQS
文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer, 是juc 下一个核心的抽象类,用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…...
蓝桥杯每日一题2023.12.1
题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题目而言思路较为重要,实际可以转化为求两个数字对应的操作,输出最前面的数字即可 #include<bits/stdc.h> using namespace std; int main() {for(int i 1…...
正则表达式从放弃到入门(1):“正则表达式”是什么?
正则表达式从放弃到入门(1):“正则表达式”是什么? 本博文转载自 这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。 如果你已经掌握了”正则表达式”,就不用再…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
