Postman接口测试01|接口测试基础概念、http协议、RESTful风格、接口文档
目录
一、接口测试基础概念
1、什么是接口
2、接口的类型
3、什么是接口测试
4、为什么要做接口测试
5、接口测试的实现方式
6、什么是自动化接口测试?
二、接口返回的数据格式
1、三种格式
2、Json
三、接口协议
1、webservice协议
2、dubbo协议
3、*http协议和https协议(重要)
1️⃣基础概念
2️⃣什么是http协议
3️⃣URL格式
4️⃣http请求
5️⃣http响应
四、传统风格和RESTful风格接口
1、传统风格接口
2、RESTful风格接口
五、接口测试的流程
1、接口文档
1️⃣什么是接口文档
2️⃣作用
3️⃣展现形式
4️⃣结构
2、接口文档解析
1️⃣登录接口为例
2️⃣员工修改接口为例
一、接口测试基础概念
1、什么是接口
电脑:USB、投影仪(为了数据传输)
软件:统称API(application program interface)、微信提现和充值、支付宝支付(调用需要用到鉴权码:token、key、appkey)
接口包括:
- 内部接口:开发人员自己开发的对自身系统提供的接口
- 外部接口:开发系统调用外部的,微信,支付宝等
总结:接口是指一组预定义的函数、方法或协议,是数据交互的通道,允许不同的软件应用程序之间进行交互、数据交换和功能调用。它是软件组件之间的中介,定义了如何通过标准化的方式进行访问、调用和操作某个功能或服务。API接口通常由函数、类、数据结构等组成,并且通过一定的规则或协议提供服务。
2、接口的类型
按划分形式,大致分为3类
①按协议分。协议不同,接口类型不同。HTTP、TCP、UDP、IP、FTP、USB …..
②按语言划分。Java、Python、C++、Php ....
③按范围划分。系统之间和程序内部。
- 系统之间:内部系统之间,内部系统和外部系统之间。
- 系统内部:方法(函数)和方法(函数)之间。类和类之间。模块和模块之间。
3、什么是接口测试
测试系统或组件之间交互的数据的正确性,以及逻辑依赖关系的正确性!
做接口测试需要不借助前端页面或后端代码,就能组织数据并模拟客户端或服务器做接口测试,检查响应数据是否符合预期。
分类:
测试外部接口:是被测系统和外部系统之间的接口。(一般只要正常调用即可)
测试内部接口:是被测系统内部各个模块之间的接口。
①内部接口提供给内部系统使用(一般只要正常调用即可)
②内部接口提供给外部系统使用(测试必须非常全面,考虑各种异常场景或权限控制)
4、为什么要做接口测试
- 提早介入,符合测试的质量控制前移原则
- 接口测试可以发现页面操作发现不了的问题。如:支付密码,输入非数字、特殊字符。
- 低成本高收益(接口的一个bug ,可能对应上层界面 N 个bug)
- 接口测试,不同于传统的单元测试,站在用户的角度展开测试。
总结:
接口的本质是一组函数、方法或协议。
接口测试的本质是测试接口是否能正常的交互数据,权限控制,以及异常场景。
5、接口测试的实现方式
①工具实现:Postman、fiddler、jmeter
②代码实现:Python + UnitTest + request
6、什么是自动化接口测试?
利用工具、代码 代替人工,自动判断响应结果和预期结果 是否一致。依赖断言!
二、接口返回的数据格式
1、三种格式
接口返回的数据格式一共有三种:
- Json格式(80%都使用这个):约定俗成返回三组数据 {error_code:0,msg:"提现成功",data:[]},其中,
error_code表示错误码,0代表成功;
msg代表对错误码的中文说明;
data表示真正的返回数据
- Html格式:
<html>
<title></title>
<body>
<error_code></error_code>
……
</body>
</html>
- Xml格式:
<?xml?version="1.0" encoding="utf-8">
<error_code></error_code>
……
</xml>
2、Json
Json就是一种数据类型。由两组数据组成,且两组数据格式可以相互嵌套
- MAP对象:键值对,{key:value , key:value}
- 数组:[value1,value2,value3,]

在线校验Json结构等功能的网站:www.bejson.com
三、接口协议
协议:就是规则!要求使用协议的双方,必须严格遵守!
1、webservice协议
接口地址:http://...................?wsdl
restful规则:get获取数据,post提交数据,delete删除数据

2、dubbo协议
接口地址以dubbo://......开头
适用于少量数据的传输,大并发。
3、*http协议和https协议(重要)
1️⃣基础概念
接口地址:http://..........开头或者https://..........开头
https=http+ssl安全传输协议
2️⃣什么是http协议
http是超文本传输协议,基于请求和响应模式的应用层协议。主要用于浏览器和服务器之间交互数据,交互有两个部分:
请求:get,post,put,delete
响应:1XX信息,2XX成功,3XX重定向(跳转不传值),4XX客户端错误,5XX服务器错误。
3️⃣URL格式
- URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接 和 传输数据
- URL作用:建立连接、发送数据。
- 语法格式:
①协议:http 和 https
②域名:本质 IP地址(定位网络环境中的一台主机)
③端口号:在网络主机上,定位一个应用。端口号可以省略。没有指定端口号,默认跟随协议
⚪ http 协议默认端口:80
⚪ https 协议默认端口:443
(补充:MySql的默认端口是3306、redis的默认端口是6379)
④资源路径:对应网页的源代码 或 网络中的一个数据资源(例如图片)
⚪ 资源路径可以为空(没有),相当于资源路径为 “/”
⚪ 如有查询参数,资源路径为 ?之前 域名(端口) 之后的所有内容!
⚪ 如果没有查询参数,资源路径,从 域名(端口) 之后,直到结束。
⑤查询参数:传参给网页源代码。
⚪ 以 ? 与 资源路径 隔分
⚪ 查询参数可以有多个,之间用 & 隔分。
⚪ 参数参数的语法 k=v 对儿
4️⃣http请求
- 作用:由 客户端 发送给 服务器;规定了发送给服务器的数据的语法格式
- 完整语法格式:请求行、请求头、空行、请求体
【补充】GET和DELETE请求不包含请求体,需要的参数或资源标识符通过URL指定;POST、PUT请求具有请求体,表示提交或更新的数据。
【补充】怎么查看http请求:任意网页→右键→“检查”→Network→在网页上执行需要的操作→一般出现的第一个就是http请求(→点击左上处🚫按钮即可清空目前请求)
①请求行:
- 作用:指定请求方法、请求资源
- 语法格式: 包含了请求方法、URL、协议版本三部分
- 请求方法:下面是常用的四种
⚪GET:查询。 —— 没有请求体
⚪POST:新增。—— 登录、注册主要使用。有请求体
⚪PUT:修改。—— 有请求体。
⚪DELETE: 删除。 —— 没有请求体
- URL:数据资源的定位符。 协议://域名:端口/资源路径?查询参数&查询参数&...
- 协议版本:指定HTTP协议的版本,HTTP/1.1或HTTP/1.2或HTTP/2.0,主要是HTTP/1.1。
②请求头:
- 作用:向服务器描述 客户端(浏览器)的基本信息。
- 语法:都是“k:v”形式的 键值对儿,需要记的是两对
⚪User-Agent:向服务器描述浏览器的类型。
⚪Content-Type:向服务器描述 请求体 的数据类型!
③空一行:标识请求头结束了
④请求体
- GET、DELETE请求方法,没有请求体。
- POST、PUT 请求方法,有请求体。
- 请求体的数据类型,受 请求头中 Content-Type 的值 影响
5️⃣http响应
- 作用:由 服务器 回发送给 客户端;规定了 服务器回发给客户端的 数据的 语法格式!
- 完整语法格式:响应行(状态行)、响应头、空行、响应体
①状态行:
- 语法格式:包含协议版本、状态码、状态码描述三部分
- 协议版本:指示响应使用的HTTP协议版本HTTP/1.1或HTTP/1.2或HTTP/2.0,主要是HTTP/1.1。
- 状态码:针对http请求,响应的状态
⚪1xx:信息类,表示请求已接受,继续处理
⚪2xx:成功。200 OK
⚪3xx:重定向。数据资源需要重定向访问
⚪4xx:客户端错误。404 Not Found 文件/资源 不存在。 403 Forbidden 文件/资源
存在,但是拒绝被访问(没有权限)
⚪5xx:服务器端错误。
- 状态描述:对状态码的说明
②响应头
- 作用:向客户端描述 服务器的基本信息。
- 语法:k:v 键值对儿
- Content-Type:向客户端描述 响应体 的数据类型!
③空一行
④响应体
- http响应报文,大多数报文都是有响应体!成功的话给数据,不成功的话告诉错误的类型。
- 响应体的数据类型,受 响应头中 Content-Type 的值影响。
- 常见的类型:
⚪json 类型
⚪表单 类型
⚪图片 类型
四、传统风格和RESTful风格接口
1、传统风格接口
- 使用GET、POST 实现所有数据的 增删改查操作。
- 针对 用户的某一个操作,URL 不唯一。
- 状态码 统一使用 200
好处:
- 对开发的技术要求低。 只需要 get、post 方法即可。
- 代码实现灵活。
2、RESTful风格接口
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
REST:即(Representational State Transfer)的缩写。词组的翻译是“表现层状态转化”。如果-I个架构符合REST原则,就称它为RESTful架构。
- 使用GET/POST/PUT/DELETE分别表示查、增、改、删
- 使用一个URL对应一个唯一的资源。
- 状态码,根据实际操作请求加以区分。
界定RESTful风格接口:
- 请求方法 使用 get、post、delete、put 对应 查、增、删、改
- 数据资源的定位符(URL)是否 唯一。
- 在 URL中,不使用动词,替换使用名词。结合 请求方法,界定具体操作。
五、接口测试的流程
- 1. 需求分析结合需求文档,需求分析
- 2. 结合开发提供的接口文件(API文档,可以从开发拿,也可以抓包自己创建,也可以录制后自己创建),进行接口分析
- ①分析:接口地址,接口鉴权(鉴定是否有访问接口的权限)方式,接口入参,出参,是否有完善的错误码机制。
- 3. 结合需求文档和API文档编写接口测试用例以及评审
- 思路:
- 正例:输入正常的入参,接口能够正常返回。(get/post)
- 反例:
- 鉴权反例:必填,鉴权码为空错误的鉴权码,鉴权码已过期……
- 参数反例:必填,参数为为空,参数类型异常,参数的长度异常。
- 错误码覆盖:根据业务而定。
- 其他错误场景:接口黑名单,接口调用次数限制,分页场景。
- 接口的兼容性:一个接口是否能兼容多个版本的前端。
- 4. 执行接口测试用例
- 工具:Postman、fiddler、jmeter
- 代码:Python + UnitTest + requests
- 5. 缺陷(bug)的管理和跟踪,回归i测试
- 6. 生成测试报告
- 7. Postman+Newman+Jenkins+git实现接口自动化持续集成(可选),并且生成测试报告和发送邮件(可选)。
1、接口文档
1️⃣什么是接口文档
也叫 API 文档。是由开发人员编写。描述接口相关信息的文档。
2️⃣作用
- 方便 前端开发人员和后端开发人员,在开发时进行对接。
- 在人员更迭时,方便新入职的员工快速接手项目。
- 方便测试人员编写接口测试用例。
3️⃣展现形式
- 在线文档 (html)
- 离线文档:word、xmind、pdf、Excel
4️⃣结构
- 基本信息:
⚪接口描述
⚪URL:(协议+域名) + 资源路径
⚪请求方法:
- 请求参数:
⚪请求头
⚪请求体(GET、DELETE 没有)
- 返回结果:
⚪状态码、状态描述
⚪响应体
2、接口文档解析
1️⃣登录接口为例
http请求:
- 请求行:
⚪请求方法:POST
⚪URL: http://ihrm-test.itheima.net/api/sys/login
⚪协议版本:默认 http/1.1
- 请求头:
⚪Content-Type : application/json
- 请求体:
⚪{ “mobile”:“13800000002”, ”password” : ”123456” }
http应答:
- 响应行:
⚪状态码、状态描述:200 ok
- 响应头:
⚪无
- 响应体:
⚪第一种情况:{"success":true,"code":10000,"message":"操作成功!","data":"xxx"} 第一 种情况
⚪第二种情况:{"success":false,"code":20001,"message":"用户名或密码错误","data":null}
⚪第三种情况:{"success":false,"code":99999,"message":"抱歉,系统繁忙,请稍后重
试!","data":null}
2️⃣员工修改接口为例
http请求:
- 请求行:
⚪请求方法:PUT
⚪URL:http://ihrm-test.itheima.net/api/sys/user/:target
⚪协议版本:默认 http/1.1
- 请求头:
⚪Content-Type :application/json
⚪Authorization :Bearer f5050a1b-7919-444c-9ec4-3c1a7286536d
- 请求体:
⚪{“username”:“张三”, “password”:“445566”, “departmentId”:“110”}
http应答:
- 响应行:
⚪状态码、状态描述:200 ok
- 响应头:
⚪无
- 响应体:
⚪情况1,成功:{"success":true,"code":10000,"message":"操作成功!", "data":
{"id":"113749504"}}
⚪情况2,失败,权限不足:{"success":false,"code": 10003, "message":"权限不足!", "data":NULL}
⚪情况3,失败,系统繁忙:{"success":false,"code": 99999, "message":"抱歉,系统繁 忙,请稍后重试!", "data": NULL}
相关文章:

Postman接口测试01|接口测试基础概念、http协议、RESTful风格、接口文档
目录 一、接口测试基础概念 1、什么是接口 2、接口的类型 3、什么是接口测试 4、为什么要做接口测试 5、接口测试的实现方式 6、什么是自动化接口测试? 二、接口返回的数据格式 1、三种格式 2、Json 三、接口协议 1、webservice协议 2、dubbo协议 3、…...

Linux系统编程——详解页表
目录 一、前言 二、深入理解页表 三、页表的实际组成 四、总结: 一、前言 页表是我们之前在讲到程序地址空间的时候说到的,它是物理内存到进程程序地址空间的一个桥梁,通过它物理内存的数据和代码才能映射到进程的程序地址空间中ÿ…...

SpringBoot + HttpSession 自定义生成sessionId
SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中,由于默认ID是通过UUID创建的,缺乏足够的安全性,决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下: HttpSe…...

循环对称复高斯分布(Circularly Symmetric Complex Gaussian Distribution)
一、引言 循环对称复高斯分布(Circularly Symmetric Complex Gaussian Distribution,简称CSCG)在无线通信、信号处理等领域具有广泛的应用。作为一种特殊的复高斯分布,CSCG具有独特的性质,如循环对称性、高斯性等&…...

xinput1_3.dll放在哪里?当xinput1_3.dll丢失时的应对策略:详细解决方法汇总
在计算机系统的运行过程中,我们偶尔会遇到一些令人困扰的问题,其中xinput1_3.dll文件丢失就是较为常见的一种情况。这个看似不起眼的动态链接库文件,实则在许多软件和游戏的正常运行中发挥着至关重要的作用。一旦它丢失,可能会导致…...

基于STM32的智能家居环境监控系统设计
目录 引言系统设计 硬件设计软件设计系统功能模块 环境监控模块控制模块显示模块系统实现 硬件实现软件实现系统调试与优化结论与展望 1. 引言 随着智能家居技术的发展,环境监控系统已经成为家居管理的重要组成部分。智能家居环境监控系统通过实时监测室内温度、湿…...

Vscode + gdbserver远程调试开发板指南:
本章目录 步骤环境准备网络配置vscode配置步骤 (全图示例)开发板配置开始调试注意: 每次断开之后,开发板都需要重新启动gdbserver才可调试。 参考链接: 步骤 环境准备 将交叉编译链路径加入$PATH变量:确保系统能够找到所需的工具。 export PATH$PATH:/p…...

大表:适用于结构化数据的分布式存储系统
大家觉得有意义和帮助记得及时关注和点赞!!! 译者序摘要1 引言2 数据模型 2.1 行(Row)2.2 Column Families(列族) 2.2.1 设计2.2.2 column key 的格式:family:qualifier2.2.3 访问控制和磁盘/内存记账(acco…...
深入解析MVCC中Undo Log版本底层存储读取逻辑
一、引言 多版本并发控制(MVCC,Multi-Version Concurrency Control)是一种广泛应用于关系数据库管理系统中的并发控制技术。它通过保存数据的历史版本,使得在事务并发执行时,每个事务都能看到数据的一致性视图。在MVC…...

游戏引擎学习第64天
代码改的我看的比较懵 原视频可以去这个网站去看 https://guide.handmadehero.org/ 回顾我们在模拟区域方面的进展 在目前的情况下,如果有很多任务需要完成,可以进行分解。在昨天收到的改变中,决定将任务分解成模拟区域。模拟区域是可以随时…...
Effective C++ 条款33:避免遮掩继承而来的名称
文章目录 条款33:避免遮掩继承而来的名称为什么避免遮掩?如何避免遮掩?1. 使用 using 声明式2. 使用转交函数 (Forwarding Functions) 总结 条款33:避免遮掩继承而来的名称 在 C 中,派生类(derived class&…...
UEFI Spec 学习笔记---4 - EFI System Table(1)
4 - EFI System Table 本章节主要介绍的是 UEFI Image 的 Entry point(在 UEFI 固件执行的时候,都是直接调用入口函数并且执行从而调用其他的 driver)。 UEFI Image 主要是有三类:UEFI boot service driver、UEFI runtime drive…...

【微信小程序】3|首页搜索框 | 我的咖啡店-综合实训
首页-搜索框-跳转 引言 在微信小程序中,首页的搜索框是用户交互的重要入口。本文将通过“我的咖啡店”小程序的首页搜索框实现,详细介绍如何在微信小程序中创建和处理搜索框的交互。 1. 搜索函数实现 onClickInput函数在用户点击搜索框时触发&#x…...

独一无二,万字详谈——Linux之文件管理
Linux文件部分的学习,有这一篇的博客足矣! 目录 一、文件的命名规则 1、可以使用哪些字符? 2、文件名的长度 3、Linux文件名的大小写 4、Linux文件扩展名 二、文件管理命令 1、目录的创建/删除 (1)、目录的创建 ① mkdir…...
React:前端开发领域的璀璨之星
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...

C/C++ 数据结构与算法【哈夫曼树】 哈夫曼树详细解析【日常学习,考研必备】带图+详细代码
哈夫曼树(最优二叉树) 1)基础概念 **路径:**从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 **结点的路径长度:**两结点间路径上的分支数。 **树的路径长度:**从树根到每一个结点的路径…...

基于NodeMCU的物联网窗帘控制系统设计
最终效果 基于NodeMCU的物联网窗帘控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计(仿智能家居)”项目中的“家电控制设计”中的“窗帘控制”子项目,最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…...

喜报 | 擎创科技入围上海市优秀信创解决方案
近日,由上海市经信委组织的“2024年上海市优秀信创解决方案”征集遴选活动圆满落幕,擎创科技凭借实践经验优秀的《擎创夏洛克智能预警与应急处置解决方案》成功入选“2024年上海市优秀信创解决方案”名单。 为激发创新活力,发挥标杆作用&…...

windows10下使用沙盒多开uiautoanimation可行性验证
文章目录 ⭐前言⭐sandboxie下载使用⭐pyinstaller打包python的uiautoanimation成exe⭐结论⭐结束 ⭐前言 大家好,我是yma16,本文分享windows下使用沙盒多开uiautoanimation可行性验证。 背景 实现多开应用程序从而进行自动化控制,批量处理大…...

电脑报错wsdprintproxy.dll丢失?修复wsdprintproxy.dll文件缺失的实用方法
在使用电脑的过程中,我们可能会遇到各种各样的错误提示,其中之一就是系统提示wsdprintproxy.dll文件丢失。这个DLL文件是Windows操作系统中的一个重要组件,它通常与Windows的打印功能相关。当这个文件丢失或损坏时,可能会导致打印…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...