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数据例子​​

在线校验Json结构等功能的网站:www.bejson.com

三、接口协议

协议:就是规则!要求使用协议的双方,必须严格遵守!

1、webservice协议

接口地址:http://...................?wsdl

restful规则:get获取数据,post提交数据,delete删除数据

由于restful规则的出现,多个接口地址实现的功能可以由一个接口地址实现

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}

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎学习第62天

回顾 我们目前正在开发一把虚拟剑&#xff0c;目的是让角色可以用这把剑进行攻击。最初的工作中&#xff0c;我们使用了一个摇滚位图作为虚拟剑的模型&#xff0c;并且实现了一个基本的功能&#xff1a;角色可以丢下剑。但这个功能并没有达到预期的效果&#xff0c;因为我们想…

AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航

作者&#xff1a;Gengze Zhou, Yicong Hong, Qi Wu 单位&#xff1a;阿德莱德大学&#xff0c;澳大利亚国立大学 论文链接&#xff1a; NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models &#xff08;https://ojs.aaai.org/index.p…

商品线上个性定制,并实时预览3D定制效果,是如何实现的?

商品线上3D个性化定制的实现涉及多个环节和技术&#xff0c;以下是详细的解释&#xff1a; 一、实现流程 产品3D建模&#xff1a; 是实现3D可视化定制的前提&#xff0c;需要对产品进行三维建模。可通过三维扫描仪或建模师进行建模&#xff0c;将产品的外观、结构、材质等细…

JS 异步 ( 一、异步概念、Web worker 基本使用 )

文章目录 异步代码异步执行概念ES6 之前的异步 Web worker 异步 代码异步执行概念 通常代码是自上而下同步执行的&#xff0c;既后面的代码必须等待前面的代码执行完才会执行&#xff0c;而异步执行则是将主线程中的某段代码交由子线程去执行&#xff0c;当交给子线程后&…

Elasticsearch-脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对于其他脚本高出几倍的性…

蓝牙BLE开发——解决iOS设备获取MAC方式

解决iOS设备获取MAC方式 uniapp 解决 iOS 获取 MAC地址&#xff0c;在Android、iOS不同端中互通&#xff0c;根据MAC 地址处理相关的业务场景&#xff1b; 文章目录 解决iOS设备获取MAC方式监听寻找到新设备的事件BLE工具效果图APP监听设备返回数据解决方式ArrayBuffer转16进制…

高仿CSDN编辑器,前端博客模板

高仿CSDN编辑器纯前端模板&#xff0c;使用的js、html、vue、axios等技术&#xff0c;网络请求库已进行封装&#xff0c;可以按需调整界面,需要源码联系(4k左右)。 1.支持代码高亮 2.支持目录点击定位 3.支持文件上传、图片上传&#xff08;需要自己写后端接口&#xff09; 4.M…

01 - 初识 Spring

初识Spring 企业级应用 企业级应用是指那些为商业组织、⼤型企业而创建并部署的解决⽅案及应用。这些⼤型的企业级应用结构复 杂、涉及的外部资源众多&#xff0c;事务密集&#xff0c;数据规模⼤&#xff0c;用户数量多&#xff0c;有较强的安全性考虑和较⾼的性能要求。 …

后端开发如何高效使用 Apifox?

Apifox 是一个 API 协作开发平台&#xff0c;后端、前端、测试都可以使用 Apifox 来提升团队的工作效率。对于后端开发者而言&#xff0c;Apifox 的核心功能主要包括四个模块&#xff1a;调用 API、定义 API、开发与调试 API 以及生成 API 文档。本文将详细介绍后端开发人员如何…

解决 vue3 中 echarts图表在el-dialog中显示问题

原因&#xff1a; 第一次点开不显示图表&#xff0c;第二次点开虽然显示图表&#xff0c;但是图表挤在一起&#xff0c;页面检查发现宽高只有100px,但是明明已经设置样式宽高100% 这可能是由于 el-dialog 还没有完全渲染完成&#xff0c;而你的 echarts 组件已经开始尝试渲染图…

PyQt实战——随机涂格子的特色进度条(十一)

系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序入口QMainWindow&#xff08;三&…

tryhackme-Cyber Security 101-Linux Shells(linux命令框)

目的&#xff1a;了解脚本和不同类型的 Linux shell。 任务1&#xff1a;Introduction to Linux Shells&#xff08;Linux Shell 简介&#xff09; 作为操作系统的常规用户&#xff0c;我们都广泛使用图形用户界面 &#xff08;GUI&#xff09; 来执行大多数操作。只需点击几…

全面Kafka监控方案:从配置到指标

文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口&#xff1a;kafka基本分为broker、producer、consumer三个子项&#xff0c;每一项的启动都需要…

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试 一、打开设备管理器看主机&#xff08;Window系统&#xff09;是否识别出串口&#xff0c;我这边显示的串行通信端口是COM3 二、打开VirtualBox&#xff0c;设置串口和USB设备 串口设置&#xff1a; 启用…

解决PDF.js部署到IIS服务器上后报错mjs,.ftl 404 (Not Found)

一、报错问题描述&#xff1a;部署到IIS服务器上后,浏览器控制台报错报错mjs,.ftl 404 (Not Found)&#xff0c;pdf也浏览不了 二、解决方法&#xff1a;在IIS服务器添加MIME类型 将下面类型添加即可 .mjs application/javascript .ftl application/octet-stream保存后&…

Jmeter下载安装配置教程(多版本)

目录 一、介绍 JMeter的主要特点&#xff1a; 使用场景&#xff1a; 二、下载 (一)下载最新版本 (二)下载历史版本 (三)配置环境变量 ​(四)查看版本 (五)启动方式 一、介绍 Apache JMeter 是一款开源的性能测试工具&#xff0c;主要用于对各种服务进行负载测试和性…

PTA数据结构编程题7-1最大子列和问题

我参考的B站up的思路 题目 题目链接 给定K个整数组成的序列{ N 1 ​ , N 2 ​ , …, N K ​ }&#xff0c;“连续子列”被定义为{ N i ​ , N i1 ​ , …, N j ​ }&#xff0c;其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1…

【路径规划】原理及实现

路径规划&#xff08;Path Planning&#xff09;是指在给定地图、起始点和目标点的情况下&#xff0c;确定应该采取的最佳路径。常见的路径规划算法包括A* 算法、Dijkstra 算法、RRT&#xff08;Rapidly-exploring Random Tree&#xff09;等。 目录 一.A* 1.算法原理 2.实…

在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)

一、概述 记录时间 [2024-12-26] 本文讲述如何在 Vue3 项目中使用计时器组件。具体包括开发环境的配置&#xff0c;ViteVue 项目的创建&#xff0c;Element Plus 插件的使用&#xff0c;以及计时器组件的创建和使用。 想要直接实现计时器组件&#xff0c;查看文章的第四部分。…

简单园区网拓扑实验

1.实验拓扑 2.实验要求 1、按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan 4、上层通过静态路由协议完成数据通信过程 5、AR1为企业出口路由器 6、要求全网可…