Postman接口测试项目实战

第 1 章

什么是接口测试

1.1、为什么要进行接口测试

目前除了特别Low的公司外,开发都是前后端分离的,就是说前端有前端的工程师进行编码,后端有后端的工程师进行编码,前后端进行数据基本都是通过接口进行交互的。

1.2、接口测试

接口测试就是针对软件向外提供的服务接口的输入和输出进行测试,以及软件内部接口与接口之间相互依赖关系的测试,总的说来接口测试就是验证接口功能与接口文档所描述的是否一致。

接口测试的原理是基于http\https等协议模拟客户端向服务端发送请求。

1.3、什么是URL

URL就是统一资源定位符,获取服务器资源的一种,80端口可以不写。

标准格式:协议://服务器IP:端口/路径1/路径N?key1=value1&key2=value2。

示例鹰迅课堂PC端网站:

http://www.yxclass.net:80/index

http://www.yxclass.net/index

第 2 章

B/S架构和C/S架构

2.1、B/S架构

B/S架构即(浏览器-服务器)架构模式,类似鹰迅课堂PC端网站,网址:http://www.yxclass.net,依赖网络环境,UI动画等需要网络加载快,使用才不会卡顿。

B/S架构的优点是不管是什么系统,都是一套代码,而且不用考虑兼容性的问题,缺点是体验感不好,但只要网络足够好,就接近原生开发了,体验感就能接近C/S架构了。

2.2、C/S架构

C/S架构就是(客户机-服务器)架构模式,即Client-Server(C/S)结构,就像手机的APP一样,体验功能更舒服;但是缺少通用性,有bug修复,或者功能升级就需要重新发布,用户需要下载安装新的依赖包,而且还要考虑各个系统之间的兼容性,要开发多个版本,这增加了维护和管理的难度。

第 3 章

HTTP协议

3.1、HTTP协议

HTTP是HyperText Transfer Protocol的简写,中文意思是超文本传输协议。

协议就是一种约定,规定好一种信息的格式,如果发送方按照某种请求格式发送信息,那么接收端就要按照这样的格式解析数据,这就是协议。总的说来就是我们约定好的一种规范,我按照这种协议发送给你,你就要用这种协议进行解析,不然就会失败。

3.2、常见的协议

常见的协议有json协议和xml协议

json协议

图片

xml协议

图片

3.3、HTTP的九种请求方法

http1.0定义了三种:

  1. Get:向服务器获取资源,比如常见的查询请求。比如需要查询鹰迅课堂的课程列表,就用get请求。

  2. Post:向服务器提交数据而发送的请求,比如说测试鹰迅课堂的注册登录功能,我们就需要向服务端提交账号密码,就要用到Post请求。

  3. Head:和get类似,返回的响应中没有具体的内容,用于获取响应报文的头部信息。

http1.1定义了六种

  1. Put:一般是用于更新请求,比如更新个人信息、商品信息全量更新。

  2. Patch:Put 方法的补充,更新指定资源的部分数据。

  3. Delete:用于删除指定的资源。

  4. Options: 获取服务器支持的HTTP请求方法,服务器性能、跨域检查等。

  5. Connect: 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据源返回给用户,网页开发基本不用这个方法,如果是http代理就会使用这个,让服务器代理用户去访问其他网页,类似Nginx等反向代理中介。

  6. Trace:回显服务器收到的请求,主要用于测试或诊断。

3.4、Http请求消息结构

http请求消息体分为三部分:请求行,请求头,请求体。

  1. 请求行

  • 协议名

  • URL地址

  • 请求方法

2、请求头

  • 报文头包含若干个属性 格式为“属性名:属性值”。

  • 服务端据此获取客户端的基本信息。

3、请求体

  • 请求的参数,可以是json对象、xml对象,也可以是前端表单生成的key=value&key=value的字符串。

3.5、常见的请求头

图片

  • Accept:览器支持的 MIME 媒体类型, 比如 text/html, application/json, image/webp等等。

  • Accept-Encoding:浏览器发给服务器,声明浏览器支持的编码类型,gzip, deflate。

  • Accept-Language:客户端接受的语言格式,比如 zh-CN。

  • Connection:keep-alive , 开启HTTP持久连接。

  • Host:服务器的域名。

  • Origin:告诉服务器请求从哪里发起的,仅包括协议和域名 CORS跨域请求中可以看到。Response有对应的Header,Access-Control-Allow-Origin

  • Referer:告诉服务器请求的原始资源的url,其用于所有类型的请求,并且包括:协议+域名+查询参数;很多抢购服务会用这个做限制,将这个http请求发给服务器后,如果服务器要求必须是某个地址或者某几个地址才能访问,而你发送的referer不符合他的要求,就会拦截或者跳转到他要求的地址,然后再通过这个地址进行访问。

  • User-Agent:服务器通过这个请求头判断用户的软件的应用类型、操作系统、软件开发商以及版本号、浏览器内核信息等;风控系统、反作弊系统、反爬虫系统等基本会采集这类信息做参考。

  • Cookie:表示服务端给客户端传的http请求状态,也是多个key=value形式组合,比如登录后的token令牌等。

  • Content-Type:HTTP请求提交的内容类型,一般只有post提交时才需要设置,比如文件上传,表单提交等。

3.6、Http响应消息结构

1、响应行

报文协议及版本、状态码 。

2、响应头

响应报文头包含若干个属性,格式为“属性名:属性值” 。

3、响应正文

响应报文体,是我们接口测试需要看到的内容,有多种形式比如html、json、图片、视频文件等。

3.7、常见的HTTP响应头

  • Allow: 服务器支持哪些请求方法。

  • Content-Length: 响应体的字节长度。

  • Content-Type: 响应体的MIME类型。

  • Content-Encoding: 设置数据使用的编码类型。

  • Date: 设置消息发送的日期和时间。

  • Expires: 设置响应体的过期时间,一个GMT时间,表示该缓存的有效时间。

  • cache-control:与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据,优先级高于Expires,控制粒度更细,如max-age=240,即4分钟。

  • Location:表示客户应当到哪里去获取资源,一般同时设置状态代码为3xx。

  • Server: 服务器名称。

  • Transfer-Encoding:chunked 表示输出的内容长度不能确定,静态网页一般没有,基本出现在动态网页里面。

  • Access-Control-Allow-Origin: 定哪些站点可以参与跨站资源共享。

3.8、常见请求/响应头content-type类型

1、Content-type: 用来指定不同格式的请求和响应信息,俗称 MIME媒体类型。

2、常见的取值

  • text/html :HTML格式。

  • text/plain :纯文本格式。

  • text/xml:XML格式。

  • image/gif :gif图片格式。

  • image/jpeg :jpg图片格式。

  • image/png:png图片格式。

  • application/json:JSON数据格式。

  • application/pdf :pdf格式。

  • application/octet-stream :二进制流数据,一般是文件下载。

  • application/x-www-form-urlencoded:form表单默认的提交数据的格式,会编码成key=value格式。

  • multipart/form-data:表单中需要上传文件的文件格式类型。

HTTP中文文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP

3.9、Http常见响应状态码HttpCode

  • 1XX: 收到请求,需要请求者继续执行操作,比较少用。

  • 2XX: 请求成功,常用的 是200。

  • 3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取,重定向的好处有:网站改版、域名迁移等,多个域名指向同个主站导流。

  • 301:永久性跳转,比如域名过期,换个域名。

  • 302:临时性跳转。

  • 4XX: 客服端出错,请求包含语法错误或者无法完成请求。

  • 400: 请求出错,比如语法协议。

  • 403: 没权限访问。

  • 404: 找不到这个路径对应的接口或者文件。

  • 405: 不允许此方法进行提交,Method not allowed,比如接口一定要POST方式,而你是用了GET。

  • 5XX: 服务端出错,服务器在处理请求的过程中发生了错误。

  • 500: 服务器内部报错了,完成不了这次请求。

  • 503: 服务器宕机。

第 4 章

GET请求和POST请求

4.1、get请求

请求地址:http://www.yxclass.net/detail?id=wVsv1zgh

请求参数:id=wVsv1zgh

图片

get请求特点:

  • 参数和url通过"?"隔开;

  • 参数是以键值对的形式,例如:name=鹰迅;

  • 可以传递多个参数,参数与参数之间通过"&"隔开。例如:tel=18888888888&password=yxclass.net。

4.2、Post请求

请求地址:http://49.234.106.116:8080//api/v1/user/login

请求参数:

{

    "tel": "18888888888",

    "pwd": "yxclass.net"

}

json传参需要在Headers这里加上Conten-Type。

图片

图片

4.3、Get请求和Post请求的区别

1、get请求一般是获取数据,post请求一般是提交数据。

2、post请求比get请求安全。

3、本质区别是传参的方式不一样:

  • get请求在地址栏后面以?的方式传参,多个参数之间用&分隔(地址直接暴露在url上面了,不安全)。

  • post请求是在body以表单的方式传参,相对来说更安全一些。

第 5 章

环境变量

5.1、什么是环境变量

正规公司的网站都有三套环境,分别是开发测试环境、准发布环境和生产环境,在进行接口测试时,多套环境之间的切换可以通过设置不同的环境变量来实现,而不是每次切换环境都去修改请求里面的参数。

5.2、设置环境变量

1、本地变量——dev

图片

环境变量的使用:在两个花括号里面放变量名。

示例:{{变量名}}

图片

2、集合变量

集合变量就是一个集合里面的变量,在其他集合是没法使用。

图片

示例:设置了集合变量,不选择本地变量,发送请求也是成功的。

图片

3、全局变量——globals

全局变量作用于全局,就是作用于整个Postman所有请求的变量。

图片

设置了全局变量,在没有设置环境变量的集合里面发送请求也是成功的。

图片

5.3、当三者冲突时如何取值

冲突时的取值:环境→集合→全局。

当集合变量和环境变量和全局变量冲突的时候,优先使用环境变量,当集合变量和全局变量冲突的时候优先使用集合变量。

对于冲突问题,我总结的经验是看谁的作用域小就优先选择谁。

第 6 章

预处理脚本和断言

6.1、预处理脚本

预处理脚本是接口请求发起前执行请求的某些前置工作,类似JMeter的BeanShell预处理程序,以及Selenium自动化测试时,每一次调用测试方法的时候,都会先执行setUp完成自动化测试初始化工作。

图片

6.2、断言

预处理脚本是接口请求发起前执行,Tests断言是接口请求发起之后执行,对接口请求发起之后对响应结果进行处理。

图片

断言主要测试的目的是确定系统给定的参数是否正常工作。为了对功能参数进行更准确的判断,我们在测试运行期间使用实际值来确定预测值。

总的说来就是断言可以帮助我们在测试运行期间确定期望值和实际值是否匹配。如果实际值和预期值不匹配,则测试将失败,并且输出指向失败。

图片

第 7 章

集合测试

7.1、集合测试项目实战

集合测试就是一次测试多个接口,这样不用每个接口都去单独运行了。

图片

Iterations的测试次数可以填100,1000等次数来进行性能测试,但是性能测试一般是使用JMeter。

图片

点击运行就可以看到集合里所有的接口请求的请求结果了。

图片

7.2、外部文件作为参数

外部文件可以使用txt或者CSV文件。

  • txt:

  • 第一行变量名,变量名之间通过(英文状态下)逗号分隔开,最后一个变量不需要加逗号。

  • 第一行以后就是变量的值,变量和变量的值上下对应,变量值之间的格式和变量名书写格式相同。

图片

  • CSV:

  • 第一行变量名。

  • 第一行之后时变量的值。

  • 变量名和变量值之间上下对应。

图片

使用外部文件作为参数要将编码改为utf-8,我使用的是EditPlus,导入文件后编码选择utf-8,然后保存即可。

图片

保存好文件后,在集合中添加保存的文件。

图片

7.3、使用Postman生成集合的在线API文档

图片

7.4、沙箱预处理和断言综合实战

Postman沙箱是一个JavaScript执行环境,当为接口请求编写预请求脚本或测试脚本时,编写的脚本就在这个沙箱中进行执行。

登录和获取用户信息接口综合实战:

1、登录接口测试

图片

发送请求后登录响应结果的data内容就保存到环境变量里了。

图片

2、测试获取用户信息

图片

3、集合测试

两个接口都测试通过后,之后每次回归时,就可以进行集合测试了。

图片

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

IDEA:如何在idea中设置自动导包

这里使用的是idea2020版本,但是不同版本操作不会有较大的差别. 在Editer中展开General之后,选中Auto Import,最后勾选中Add unambiguous imports on the fly.

Java Web|day5.MyBatis

MyBatis 定义 它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低 **ORM: **Object Relation Mapping,…

培训学校课程管理系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

Java面试--框架--Spring MVC

Spring MVC 目录 Spring MVC1.spring mvc简介2.spring mvc实现原理2.1核心组件2.2工作流程 3.RESTful 风格4.Cookie,Session4.1 会话4.2 保存会话的两种技术 5.拦截器5.1过滤器、监听器、拦截器的对比5.2 过滤器的实现5.3 拦截器基本概念5.4 拦截器的实现 1.spring …

如何使用unittest和pytest进行python脚本的单元测试

1. 关于unittest和pytest unittest是python内置的支持单元测试的模块,他提供了核心类,TestCase,让单元测试 代码的编写不再是从0开始,不再是作坊式,而是标准化,模板化,工厂化。 pytest是第三方…

【深度解析】WRF-LES与PALM微尺度气象大涡模拟

查看原文>>>【深度解析】WRF-LES与PALM微尺度气象大涡模拟 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气模式、地形影响和…

Linux - 模拟实现 shell 命令行解释器

目录 简介 shell 的重要性 解释为什么学习 shell 的工作原理很重要 模拟实现一个简单的 shell 循环过程 1. 获取命令行 2. 解析命令行 3. 建立一个子进程(fork) 4. 替换子进程(execvp) 5. 父进程等待子进程退出(wai…

合宙LuatOS AIR700 IPV6 TCP 客户端向NodeRed发送数据

为了验证 AIR700 IPV6 ,特别新建向NodeRed Tcp发送的工程。 Air700发送TCP数据源码如下: --[[ IPv6客户端演示, 仅EC618系列支持, 例如Air780E/Air600E/Air780UG/Air700E ]]-- LuaTools需要PROJECT和VERSION这两个信息 PROJECT "IPV6_SendDate_N…

Jupyter安装指南:最简便最详细的步骤

一.介绍 JupyterNotebook 是一个款以网页为基础的交互计算环境,可以创建Jupyter的文档,支持多种语言,包括Python, Julia, R等等。一般来说,如果是使用R语言的话,使用Rstudio居多,使用Python的话&#xff0…

开源的数据库增量订阅和消费的中间件——Cancl

目录 工作原理 MySQL主备复制原理 Canal 工作原理 主要功能和特点 应用场景 实验准备 安装JDK11 下载MySQL8.0 配置canal.admin 配置canal-deployer 测试数据读取 新增一台主机用做被同步的目标机器测试 官方地址:https://github.com/alibaba/canal?ta…

【gitlab】gitlab-ce:17.3.0-ce.0 1:使用docker engine安装

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

宝塔面板实现定时任务删除 logs文件 加条件删除 只删除一个月前的日志

我们在开发中难免用到了日志功能,随着日志越来越多导致占用我们的内存 下面是一个简单的 使用宝塔面板里面的定时任务来实现删除日志案例 第一步 首先我的日志文件目录 都在log文件夹里面, 每个月生成一个日志文件夹 文件夹命名是年月来命名的 第二…

探索深度学习的力量:从人工智能到计算机视觉的未来科技革命

目录 1. 引言 2. 人工智能的历史背景 3. 深度学习的崛起 3.1 深度神经网络的基本原理 4. 计算机视觉的发展现状 4.1 传统计算机视觉与深度学习的结合 5. 深度学习在计算机视觉中的应用 5.1 图像分类 5.2 目标检测 6. 深度学习引领的未来科技创新与变革 7. 结论 引言…

【vue3+Typescript】手撸了一个轻量uniapp导航条

最近公共组件写到导航条,本来打算拿已有的改。看了下uniapp市场上已有的组件,一是不支持vue3typescript,二是包装过重。索性自己手撸了一个导航条,不到100行代码全部搞定,因为自己的需求很简单: 1&#xf…

pycharm2023.1破解

下载解压文件,文件夹 /jetbra 复制电脑某个位置 注意: 补丁所属文件夹需单独存放,且放置的路径不要有中文与空格,以免 Pycharm 读取补丁错误。 点击进入 /jetbra 补丁目录,再点击进入 /scripts 文件夹,双…

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…

鸿蒙内核源码分析——(自旋锁篇)

本篇说清楚自旋锁 读本篇之前建议先读系列篇 进程/线程篇. 内核中哪些地方会用到自旋锁?看图: 概述 自旋锁顾名思义,是一把自动旋转的锁,这很像厕所里的锁,进入前标记是绿色可用的,进入格子间后,手一带&#xff0c…

10分钟学会LVM逻辑卷

华子目录 前言认识LVMLVM基本概念LVM整体流程LVM管理命令pvs,vgs,lvs命令pvs基本用法选项示例 vgs基本用法选项示例 lvs基本用法 pvcreate,vgcreate,lvcreate命令pvcreate示例 vgcreate基本用法示例选项 lvcreate基本用法示例 pvr…

Python爬虫入门教程(非常详细)适合零基础小白

一、什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等。 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术,将…

【电路笔记】-无源衰减器总结

无源衰减器总结 文章目录 无源衰减器总结1、概述2、L-型无源衰减器设计3、T-型无源衰减器设计4、桥接 T 型衰减器设计5、π型无源衰减器设计无源衰减器是一个纯电阻网络,可用于控制输出信号的电平。 1、概述 无源衰减器是一种纯电阻网络,用于削弱或“衰减”传输线的信号电平…