【Postman工具】

一.接口扫盲

1.什么是接口?

接口是系统之间数据交互的通道。拿小红到沙县点餐为例:小红想吃鸭腿饭。她要用什么语言来表达?跟谁表达?通过什么表达?按照生活习惯应该是:小红根据菜单对服务员用中文表达她想要一份鸭腿饭。这里中文作为小红和服务员的共同语言标准,菜单作为一个规范。迁移到浏览器和服务器上:浏览器和服务器通过http协议(中文)进行通信,通过接口规范文档(菜单)发送符合规定的报文才能得到响应服务。

2.接口测试的意义是什么?

接口测试可以理解为不借助前端,提前对后端接口进行测试,提早发现问题解决问题。

3.什么是接口测试?

接口测试用来校验响应数据与预期结果是否一致、逻辑依赖关系是否正确。(逻辑以来关系:比如退出登录以后再打开订单链接,是否会跳转到登录页面。)

4.什么是自动化接口测试?

自动化接口测试是使用工具和代码代替人工的测试方法,主要依赖断言。

5.接口测试从哪些方面入手?

单接口测试和多接口测试。

单接口测试分为正向测试(必填参数组合、必填+非必填组合)和反向测试(功能异常、数据异常、参数异常)。

多接口测试需要考虑业务场景,如登录后跳转页面。

6.接口测试与手工测试的不同?

手工测试时可以根据页面的功能按钮、输入框来进行测试,而接口测试没有输入框,可以利用抓包工具获取到对应的key,针对key所应对的value值进行测试。

7.接口测试用例怎么写?

单接口测试用例:以登录为例

多接口测试用例:以后台管理用户为例

登录->添加用户->查询->修改用户->查询->删除用户->查询

8.怎么界定RESTful风格的接口?

传统的接口测试只有post和get方法,且url不唯一。

RESTful风格的接口有四种方法:post增加、get查询、delete删除、put修改,且url唯一。

9.接口文档的作用?

帮助前端和后端工作人员进行工作对接。

帮助测试人员编写测试用例。

帮助新入职的员工快速接手项目。

10.f12抓包需要关注的内容

二.HTTP协议

HyperText Transfer Protocol超文本传输协议,是一种用于请求和响应的应用层协议。

协议特点:支持客户端服务器模式,简单快速,无连接无状态(B/S模式)

URL:Uniform Resource Locator 统一资源定位符,用来定位资源。

协议:http、https

域名:IP地址,可以定义到环境中的一台主机

端口号:在主机上定义到具体的应用。默认端口号被省略就跟随协议。

--mysql默认端口号:3306

--redis默认端口号:6379

--http协议默认端口:80

--https协议默认端口:443

资源路径:对应网页源代码或数据资源

--资源路径可以为空

--如果有查询参数,资源路径为?之前 / 之后的所有内容

--如果没有查询参数,资源路径就从端口号到结束

查询参数:传递参数给源代码,一定是k=v格式。

(一).HTTP请求

工具:fiddler进行抓包验证

特点:由客户端发送给服务器

格式:请求行、请求头、空行、请求体(get请求没有请求体)

请求行(请求方法、url、协议版本

作用:指定请求方法和请求资源

格式:请求方法(空格)url(空格)协议版本(\r\n)

请求方法:GET查询、POST新增(登录注册用)、PUT修改、DELETE删除

url:数据资源定位符,协议://域名:端口号/资源路径?查询参数&查询参数

请求头

作用:向服务器描述浏览器的基本信息

格式:全是key : value的键值对

要重点记住两个:

User-Agent:向服务器描述浏览器类型

Content-Type:向服务器描述请求体的数据类型

请求体

GET、DELETE没有请求体

PUT、POST有请求体

请求体的数据类型,收请求头中Content-Type的值的影响

复习:

这个是fiddler抓包抓到的请求报文

1是请求行:请求方法是POST,url中http是协议类型,://是协议与域名的分割符,/是域名和资源路径的分割符,HTTP/1.1是协议版本号。

2-16是请求头:其中User-Agent是浏览器的类型,Content-Type是请求体的数据类型:表单类型

17是空行

18是请求体

(二).HTTP响应

特点:服务器发给浏览器(客户端)

格式:响应行、响应头、空行、响应体

响应行

格式:协议版本(空格)状态码(空格)状态码描述\r\n

协议版本:http1.0/ http1.1 / http2.0

状态码:

1xx:信息向

2xx:表成功

3xx:重定向

4xx:客户端错误。404表示数据资源不存在,403表示数据资源拒绝被访问

5xx:服务端错误。

状态描述:比如200ok,404Not Found,403Forbidden

响应头

作用:向客户端描述服务器的信息

语法:k : v键值对

Content-Type:向客户端描述响应体的数据类型

响应体

http报文响应,大多数都有响应体

数据类型受响应头中的Content-Type值影响,常见的类型:json/表单类型/图片类型

三.使用postman进行接口测试

postman是接口调试工具

newman插件可以自动生成测试报告

npm -v 检查是否安装了node.js

npm install -g newman 安装newman

newman -v 检查是否安装成功

npm install -g newman-reporter-html 最后一步

(一).基础使用

1.使用postman发送http请求,访问京东网站上”搜索“功能

2.使用postman向网易邮箱的登录接口发送一个密码错误的登录请求。

(二).管理测试用例collections

(三).导入导出用例

(三).断言

使用postman自带的断言机制,判断响应结果与预期是否一致。

1.断言响应状态码:Status code is 200

pm:postman的一个实例

test():postman的一个实例方法,有两个参数:

①“Status code is 200”,断言完成后的提示信息,可修改。

② function () { pm.response.to.have.status(200);}是匿名函数调用,意思是pm的响应状态有一个码值为200。

2.断言响应体是否包含某个字符串:Response body: Contains string

pm.test("Body matches string", function () {

pm.expect(pm.response.text()).to.include("string_you_want_to_search");

});

3.断言响应体是否等于某个字符串:Response body: ls equal to a string

4.断言json数据:Response body: JSON value check

pm.test("Your test name", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.value).to.eql(100);

});

分析:

var jsonData = pm.response.json();定义一个变量jsonData ,值为json格式的响应体数据

pm.expect(jsonData.value).to.eql(100);pm预期响应结果中xxx(key)的值为xxx

value可替换为:success、code、message、data

to.eql()中的值对应为预期结果:true、"操作成功”...

5.断言响应头:Response headers: Content-Type

四.全局变量和环境变量

全局变量

概念:在postman全局唯一且不可以重复的变量。

设置:pm.globals.set("var_name", value);

获取:

①请求参数(页面)中获取{{var_name}},用来查询参数、请求头、请求体中

②代码中获取:var value = pm.globals.get("var_name");

举例:

var age_tmp = 18;

pm.globals.set("glb_age",age_tmp);

var ret_age = pm.globals.get("glb_age")

环境变量

概念:某个环境中变量不可重复定义,常见的有开发环境、测试环境、生产环境。

设置:pm.environment.set("var_name", value);

获取:

①请求参数(页面)中获取{{var_name}}

②代码中获取:var value = pm.environment.get("var_name");

五.postman请求的前置脚本

1.时间戳

概念:表示当前系统时间。从1970年1月1日00:00:00-现在所经历的秒数

2.请求前置脚本

postman可以在http请求发送之前会自动执行该脚本中的代码,以准备请求发送前的环境和数据。

案例:调用百度首页接口,传时间戳给服务器

步骤:

1.创建“请求前置脚本”用例集和http请求页

2.指定请求方法为GET,百度网址http://www.baidu.com

3.在"Pre-request Script"标签页中写入代码,获取时间戳,写入到全局变量中

4.点击"send"按钮,使"Pre-request Script"标签页中的代码被自动执行,点击小眼睛图标,会发现多出一个全局变量。

5.在URL中借助请求参数使用全局变量。点击发送按钮,发送带有时间戳的请求。

6.点击菜单栏中view->ShowPostman Console中查看

六.postman关联

1.介绍:postman关联可以借助全局变量或环境变量来解决接口和接口之间的依赖问题。

2.实现步骤:

以A接口返回的数据供B接口使用为例

①.组织A接口http请求数据,发送A接口的请求

②.将A接口返回的响应数据存到全局/环境变量中

③.组织B接口http发送数据,从全局/环境变量中获取A接口返回的数据

3.案例:请求查询手机号接口,提取结果中返回的城市,将城市名给百度搜索接口使用。

①.查询手机号的页面以及url:https://api.wetools.com/tool/phoneNumber

②组织A接口http请求数据,发送A接口的请求

//获取响应数据
var jsonData = pm.response.json()
//获取城市名
var city = jsonData.data.detail["所属地区"]
//写入全局变量
pm.globals.set("glb_city", city)

③B接口获取到全局变量城市名,在百度中进行搜索

4.批量执行用例集

iterations:指定迭代次数(执行几次)

delay:用例执行延迟时间

data:导入外部数据文件,实现“参数化”

七.postman测试报告

步骤:

1.先把测试用例集导出

2.在用例集所在目录打开cmd,使用newman生成测试报告的完整命令:

newman run 测试用例集名.json -e 环境变量文件 -d 数据文件 -r html -- reporter-html-export 测试报告名称.html

ps: -e 环境变量文件 -d 数据文件,如果没有可省略

ps:可以复制路径到postman中

①:右键复制路径,选择bash

② 导入到postman中

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

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

相关文章

联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台

各位小伙伴晚上好,我是联通数字科技有限公司数据智能事业部的王兴杰。 更好的阅读体验可前往原文阅读:巨人肩膀 | 联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台 今天,我将和大家聊一聊联通数字科技有限公司是如何基于Apache Dol…

k8s创建secret并在container中获取secret

k8s创建secret并在container中获取secret 本文使用的deployment和service与我的上一篇文章一样。link也放在下面了,如果不懂什么事deployment和service,可以先看我的上一篇文章。 k8s使用kustomize来部署应用 下面我们将通过创建secret开始。secret是我…

保姆教程篇:手把手教你从零开始本地部署Dify

本教程将指导您在个人电脑上安装和配置 Dify。 为什么需要Dify 在开始具体的教程之前,先搞清楚为什么要选择 Dify。 6 月份,阿里巴巴全球数学竞赛中,首次接受AI参赛。结果令人大跌眼镜:AI选手们的表现完全无法与人类选手相提并…

萌啦数据软件价格多少,萌啦数据软件价格是多少

在当今这个数据驱动的时代,无论是企业运营、市场分析还是个人研究,都离不开高效、准确的数据处理与分析工具。萌啦数据软件,作为业界一颗璀璨的新星,凭借其强大的功能、友好的用户界面以及灵活的数据处理能力,赢得了众…

[SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)

打开题目所给的环境我们可以看到这样一句话: 这里我先尝试访问/hint.php ,但是发现什么都没有发生, F12查看源代码也并没有发现什么,到这里来看的话似乎没有思路了,但是这个题的题目已经给了我们很明显的提示&#xff…

类和对象(中)(1)

类和对象(中)(1) 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。 ⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是…

云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本

一、python环境搭建 确保拥有阿里云镜像 查看python环境 [rootpython ~]# yum list installed | grep python 查看epel是否安装 [rootpython ~]# yum list installed | grep epel 安装epel [rootpython ~]# yum -y install epel-release.noarch 查看是否安装python3 [rootpyt…

【数据结构】mapset详解

🍁1. Set系列集合 Set接口是一种不包含重复元素的集合。它继承自Collection接口,所以可以使用Collection所拥有的方法,Set接口的实现类主要有HashSet、LinkedHashSet、TreeSet等,它们各自以不同的方式存储元素,但都遵…

OceanBase V4.2特性解析:MySQL模式下GIS空间表达式的场景及能力解析

1. 背景 1.1. OceanBase Mysql gis空间表达式的应用场景及能力 在OceanBase 4.1版本中,mysql模式下支持了gis数据类型以及部分空间对象相关的表达式,随着客户使用空间数据的需求日益增长,需要快速地补齐空间数据存储和计算分析的能力&#…

实景三维:解锁地理信息新维度,引领未来城市智慧之钥

在这个信息爆炸与科技日新月异的时代,地理信息与遥感技术正以前所未有的速度改变我们认知世界的方式。在推动“实景三维平台”这一前沿科技的构建上,它不仅是地理信息的立体呈现,更是智慧城市的基石,打开了通往未来城市规划、管理…

C++设计模式(代理模式)

1. 电话虫 在海贼中,有一种神奇的通信工具叫做电话虫(Den Den Mushi),外形如蜗牛,身上带有斑点或条纹或通体纯色,壳顶上有对讲机或按键,不接通时会睡觉,接通时会惊醒,并发…

数据结构之链表

写在前面 链表是一种常用的线性数据结构,在jdk中也提供具体的实现类java.util.LinkedList。本文来看下其相关内容。 1:链表的特点 链表是一种由很多个节点组成的线性数据结构,每个节点都有一个指向下一个节点的引用,从而构成链…

Unity(2022.3.38LTS) - 下载,安装

目录 A. 简介 B. 下载和安装UnityHub C. 下载安装unity编辑器 安装页面 选择版本 添加模块 D.总结 A. 简介 Unity 是一款广泛使用的跨平台游戏开发引擎。 一、主要特点 跨平台性: 支持多种主流平台,包括 Windows、Mac、Linux、iOS、Android、Xb…

LeetCode_sql_day15(262.行程与用户)

描述:262. 行程和用户 - 力扣(LeetCode) 取消率 的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)。 编写解决方案找出 "2013-10-01" 至 "2013-10-03" 期间非禁止…

Vue 应用实例的关键方法与配置案例一

目录 createApp createSSRApp app.mount app.unmount app.component app.directive Vue3.X自定义全局指令 Vue2.X自定义全局指令 app.use app.mixin 非 VIP 用户能够免费下载博文资源 createApp createApp 是 Vue 3.0 中用于创建应用实例的方法。它接收一个…

127. Go反射基本原理

文章目录 反射基础 - go 的 interface 是怎么存储的?iface 和 eface 的结构体定义(runtime/iface.go):_type 是什么?itab 是什么? 反射对象 - reflect.Type 和 reflect.Value反射三大定律Elem 方法reflect.…

mysql中select的执行流程

目录 引言 SELECT查询语句的重要性 ​编辑引言部分重写示例: MySQL架构概览 MySQL架构概述 Server层的核心功能模块 知识点图文结合示例: 连接器的作用 连接器的职责 连接器职责 查询缓存的工作原理 查询缓存的概念 查询缓存的工作机制 查询…

虚幻引擎 C++ 实现平面阴影

1、平面阴影介绍 平面阴影是一种相对简单的渲染阴影的方式,可以理解为对一个模型渲染两次,一次是渲染模型本身,另一次是渲染模型的投影。渲染投影可以看作是将模型的顶点变换到地面的投影空间再渲染,可以理解为渲染了一个“压扁”…

Linux内核编程(十二)热插拔

本文目录 一、知识点1. 热插拔概念2. 热插拔机制3. Netlink机制 二、内核发送uevent事件到用户空间1. kobject发送uevent事件2. udevadm命令查看★示例代码:★优化:完善kset_uevent_ops(热插拔事件结构体) 三、用户空间使用Netlin…

Dubbo源码深度解析(四)

接上篇博客《Dubbo源码深度解析(三)》,上篇博文,主要讲的是DubboBootstrap#start()方法中调用到的其他方法,以及讲到ServiceConfig#export()方法的调用链路。其中讲到最核心的方法为ServiceConfig#doExportUrlsFor1Protocol(),还没…