接口测试基础知识

news/2025/2/13 5:12:46/

一、接口测试简介

什么是接口测试?

接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试的重点:

  • 检查数据的交换,传递和控制管理过程;
  • 检查系统间的相互逻辑依赖关系等。

为什么做接口测试?

什么是微服务

在这里插入图片描述

微服务的特点

复杂度可控
  • 服务边界清晰
  • 体积小、复杂度低
  • 开发、维护简单
容错性更高
  • 可以使故障隔离在单个服务中
技术选型更灵活
  • 可以结合业务特性自由选择技术栈
可扩展性更强
  • 根据每个微服务的性能要求和业务特点来对服务进行灵活扩展
  • 独立部署,使得发布更高效

接口测试的目的

  1. 控制住接口质量,终端问题会少很多
  2. 提高回归测试效率,保证质量
  3. 发现更底层的问题
  4. 更早的发现问题
  5. 缩短测试周期
  6. 基于接口层面实现脱离手工的方式高效执行测试
  7. 接口自动化目的是提升效率

二、HTTP请求与RESTful API

HTTP请求常见请求方法

请求方法GETPOSTPUTDELETEPATCH
CURDReadCreate/UpdateUpdate/CreateDeleteUpdate
意义请求指定的页面信息,并返回实体主体向指定资源提交数据进行处理请求,POST 请求可能会导致新的资源的建立和/或已有资源的修改从客户端向服务器传送的数据取代指定的文档的内容请求服务器删除指定的资源用来更新局部资源

HTTP请求—请求报文

一个HTTP请求报文由请求行、请求头、空行和请求体4个部分组成:

请求行由三部分组成:请求方法,请求URL,HTTP协议版本
请求头用来说明服务器要使用的附加信息
空行通知服务器请求头结束
请求体可以添加任意的其他数据

HTTP响应—响应报文

响应报文由 状态行、响应头、空行和响应体组成

响应行1)响应的协议和版本号(2)响应状态码(3)响应状态描述符
响应头类似请求头,告知客户端的附加信息,是一系列 key-value 值
空行类似请求,用来分隔响应头和数据。
响应体响应的数据

HTTP响应–常见状态码

状态码说明
200OK:客户端请求已被成功接收,理解,接受。
400Bad Request:客户端请求有语法错误,不能被服务器所理解。
401Unauthorized :请求未经授权,这个状态代码必须和WWW-Authenticate 报头域一起使用。
403Forbidden:服务器收到请求,但是拒绝提供服务。
404Not Found:请求资源不存在,举个例子:输入了错误的URL。
500Internal Server Error:服务器发生不可预期的错误。
503Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

三、接口测试策略

接口功能测试

接口功能测试用例设计的重点,在于功能性的业务逻辑检查参数检查

(1) 针对输入,可参考参数类型进行设计;
(2) 针对接口处理,可按照逻辑进行用例设计;
(3) 针对输出,可根据结果进行分析设计;

接口测试用例设计应该满足需求文档,且对异常场景进行友好处理;且测试
这个接口是否按照接口文档进行开发。

接口文档测试

接口文档测试也就是接口文档规范。

通过文档获取接口的说明、请求参数、响应参数以及一些依赖关系。
一般包括接口名、接口描述、接口地址、请求方式、请求参数和格式、响应参数和格式等。

接口异常测试

  • 非法参数测试
  • 幂等测试
  • 并发测试
  • 事务测试
  • 环境异常测试
  • 大数据量时测试

接口安全测试

  • API十大安全风险:
  • 失效的对象级别授权
  • 失效的用户身份验证
  • 过度的数据暴露
  • 资源缺乏和速率限制
  • 失效的功能级授权
  • 批量分配
  • 安全配置错误
  • 注入
  • 资产管理不当
  • 日志和监视不足

接口性能测试

用户视角

感受到的网站响应速度的快和慢。

开发视角

主要关注包括系统吞吐量,并发处理能力,系统稳定性,响应延迟等。

运维视角

主要关注基础设施性能和资源利用率。

如何设计接口压力测试方案

确定并发数:

可以通过尝试的方式。第一次设置自己预期接口需要达到的并发数,进行压力测试。然后通过二分法进行调整。

确定总请求次数:

可以尝试用现有线上业务每天产生的数量乘以一定的天数,作为接口压力测试的总请求次数

选取压力测试数据:

通常随机选择数据。但是要注意重复进行压力测试对性能的影响。

四、接口测试流程

阶段功能测试接口测试
需求熟悉业务,业务问题沟通,测试范围讨论自动化可行性研究,潜在自动化技术问题讨论
设计功能测试范围,参与人员 计划排期技术选型、排期、范围
开发测试用例编写、评审和优化编写和调试接口自动化脚本以及自动化场景
测试测试执行、问题追踪、复测接口测试执行、CICD集成
运维生产环境验证、问题跟踪线上接口自动化巡检、服务可用性检查

http://www.ppmy.cn/news/1254833.html

相关文章

LLM;超越记忆《第 2 部分 》

一、说明 在这篇博客中,我深入研究了将大型语言模型(LLM)提升到基本记忆之上的数学框架。我们探索了动态上下文学习、连续空间插值及其生成能力,揭示了 LLM 如何理解、适应和创新超越传统机器学习模型。 LLM代表了人工智能的重大飞…

基于SSH的员工管理系统(一)——包结构

基于SSH的员工管理系统(一)——包结构 包结构 1、整体包结构 2、action包 3、domain实体包 4、service层 5、dao层 6、util工具包 7、页面层

【每日OJ —— 572. 另一棵树的子树】

每日OJ —— 572. 另一棵树的子树 1.题目:572. 另一棵树的子树2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:572. 另一棵树的子树 2.解法 2.1.算法讲解 通过深度优先遍历,来判断二叉树root的每个节点的值是否和subRoot的每个节点…

PHP+ajax+layui实现双重列表的动态绑定

需求:商户下面有若干个门店,每个门店都需要绑定上收款账户 方案一:每个门店下面添加页面,可以选择账户去绑定。(难度:简单) 方案二:从商户进入,可以自由选择门店&#…

C#编程题分享(5)

判断质数问题 输⼊⼀个正整数&#xff0c;判断该数是否是质数。如果为质数输出 yes&#xff0c;如果不是输出no 样例输⼊113 输出yes int n Convert.ToInt32(Console.ReadLine()); int count 0; for (int i 1; i < n 1; i) {if (n % i 0) // 判断该数能被整除{coun…

MySQL数据库从小白到入门(一)

MySQL概述&#xff1a; MySQL连接&#xff1a; 打开cmd窗口 window r 输入 cmd输入mysql -u用户名 -p密码&#xff1b; 示例&#xff1a;mysql -uroot -p1234&#xff1b; 这种方式登录mysql&#xff0c;会出现警告&#xff0c;建议使用下面这种。mysql -uroot -p 然后回车…

Android预加载Apk时注意事项

1.对于Apk中存在依赖的so库时&#xff0c;编写预加载库mk文件时需要将Apk解压的库链接过来&#xff0c;否则就会出现找不到so或者找到so库但是无法正常使用的情况(系统apk查找库的方式是先查找链接库后查找system/lib目录下的库&#xff0c;且采用预加载库方式apk中依赖的库默认…

SSH:安全的远程登录和数据传输工具

SSH&#xff1a;安全的远程登录和数据传输工具 引言 在我们日常的网络操作中&#xff0c;经常需要远程控制服务器或者传输文件。如果你是一个系统管理员、开发者或者任何需要远程登录服务器的用户&#xff0c;那么SSH&#xff08;Secure Shell&#xff09;是你不可或缺的工具…