接口测试——接口协议抓包分析与mock_L1

目录:

  1. 接口测试价值与体系
  2. 常见的接口协议
  3. 接口测试用例设计
  4. postman基础使用
  5. postman实战练习

1.接口测试价值与体系

接口测试概念

  • 接口:不同的系统之间相互连接的部分,是一个传递数据的通道
  • 接口测试:检查数据的交换、传递和控制管理过程

 

 接口测试的价值

  • 传统的测试方法成本急剧上升
  • 测试效率下降

 

分层测试体系

  • 越往上,发现 Bug 的时间越晚,成本越高
  • 接口测试(Service)相比 UI 测试,可以更早发现问题,更快的质量反馈

 

接口测试学习路线

 

接口测试与 mock 学习路线

形式章节描述
知识点接口测试价值与体系了解接口测试的知识体系与学习路线
知识点常见的接口协议了解常见接口协议、重点掌握 HTTP 协议
知识点接口测试用例设计掌握接口测试用例设计思路
知识点postman 基础使用掌握 postman 的安装和基础使用
实战postman 实战练习使用 postman 完成接口测试
知识点抓包工具 charles掌握 charles 的安装和基础配置
知识点抓包工具 fiddler掌握 fiddler 的安装和基础配置
知识点抓包工具证书配置抓包工具证书配置 https 协议数据抓包
实战App 抓包实战练习对雪球实现抓包
实战接口测试实战练习结合 postman 完成对宠物商店的接口测试
知识点弱网测试使用 charles 完成弱网测试
知识点mock 的价值与意义了解 mock 测试的价值与意义
实战mock 实战练习雪球 mock 实战练习
知识点使用 curl 发送请求【选修】了解 curl 命令的参数
知识点tcpdump 与 wireshark 的使用【选修】了解 tcpdump 与 wireshark 的基本使用

2.常见的接口协议

网络模型

 OSI七层模型:

  1. 物理层:物理层负责传输比特流,即0和1的电信号或光信号。它涉及到电气、机械和定时接口的规范,如电缆、集线器和中继器的使用。这一层的主要目的是确保原始数据可以在各种物理媒体上传输。
  2. 数据链路层:数据链路层负责将比特流组合成帧,并对帧进行错误检查和寻址。它定义了如何在网络硬件之间传输帧,包括如何使用物理层提供的服务来传输帧。这一层还包括诸如以太网、令牌环和点对点协议等具体的协议。
  3. 网络层:网络层负责将数据包从源地址发送到目的地址。它处理路由和转发,负责在数据链路层的基础上选择最佳路径,并将数据包从一个网络传输到另一个网络。网络层协议包括互联网协议(IP)、互联网控制消息协议(ICMP)和传输控制协议(TCP)。
  4. 传输层:传输层负责在源端和目的端之间建立、管理和终止会话。它将数据分段并重新组装,以确保数据的完整性和可靠性。同时,它还提供了错误检查和流量控制功能。传输层协议主要有传输控制协议(TCP)和用户数据报协议(UDP)。
  5. 会话层:会话层负责建立、管理和终止网络连接上的会话。它负责同步和对话控制,以及数据交换和分布式事务的处理。会话层还包括诸如远程过程调用(RPC)和SQL等协议。
  6. 表示层:表示层负责对数据进行编码和解码,以确保发送方和接收方之间的数据格式一致。它处理诸如数据压缩、加密和解密等数据转换操作。表示层协议包括MIME、TLS和SET等。
  7. 应用层:应用层负责处理用户和应用程序之间的通信。它为用户提供了网络服务接入点,允许应用程序使用网络进行通信。应用层协议包括HTTP、FTP、SMTP、DNS和Telnet等,这些协议为用户提供了访问网络资源的接口。

TCP/IP四层模型:

  1. 网络接口层(比特):这一层是物理层和数据链路层的统称,负责在物理媒体上传输原始的比特流。主要涉及电缆、集线器和中继器等硬件设备的规范和管理。
  2. 网络层(数据帧):网络层负责将数据包从源地址发送到目的地址。它处理路由和转发,负责在数据链路层的基础上选择最佳路径,并将数据包从一个网络传输到另一个网络。本层的功能通常由IP协议来实现。
  3. 传输层(数据包):传输层负责在源端和目的端之间建立、管理和终止会话。它将数据分段并重新组装,以确保数据的完整性和可靠性。同时,它还提供了错误检查和流量控制功能。本层的功能通常由TCP或UDP协议来实现。
  4. 应用层(数据段):应用层负责处理用户和应用程序之间的通信。它为用户提供了网络服务接入点,允许应用程序使用网络进行通信。本层的协议非常丰富,包括HTTP、FTP、SMTP、DNS和Telnet等,这些协议为用户提供了访问网络资源的接口。

 五层体系结构:

  1. 应用层:这一层包括了所有能与用户直接交互的程序,比如网页浏览器、电子邮件客户端、聊天工具等等。应用层的协议包括HTTP、FTP、SMTP、POP3、IMAP等。
  2. 传输层:这一层的任务是确保数据能够在源端和目的端之间进行交换。传输层协议包括TCP和UDP两种,其中TCP是一种基于连接的协议,能够确保数据在发送端和接收端之间传输完整;而UDP则是一种无连接协议,它不会确保数据在发送端和接收端之间传输完整。
  3. 网络层:网络层负责确定数据包在网络中的路径,其协议包括IP、ICMP和ARP等。IP协议负责将数据包发送到正确的目的地;ICMP协议负责报告网络中的问题,例如丢失的数据包;ARP协议用于在网络中查找IP地址。
  4. 数据链路层:这一层的任务是在两台计算机之间传输数据。常见的协议包括以太网和无线局域网,以太网是最常用的数据链路层协议,它使用网线将计算机连接到网络;无线局域网使用无线信号将计算机连接到网络。
  5. 物理层:这一层包括了所有物理媒体,比如电缆、集线器、中继器等等。物理层的协议包括RS-232、USB和Fiber Channel等,RS-232是一种通过串行线将计算机连接到网络的协议;USB是一种通过USB接口将计算机连接到网络的协议;Fiber Channel是一种通过光纤将计算机连接到网络的协议。

常见接口协议

 

RPC 协议

  • RPC(Remote Procedure Call)
  • 以本地代码调用的方式实现远程执行
  • 主要用于公司内部的服务调用
  • 优点:传输效率更高、性能损耗更低、自带负载均衡策略、更好的服务治理能力
  • 常见的 RPC 协议
    • Dubbo:Java 基础之上的高性能 RPC 协议
    • gRPC:高性能通用 RPC 框架,基于 Protocol Buffers。PB 是一个语言中立、平台中立的数据序列化框架
    • Thrift:与 gRPC 类似的多语言 RPC 框架

 HTTP 协议

  • 请求
    • 请求行:method url protocol
    • 请求方法:GET、POST、PUT、DELETE、HEAD
    • 请求头: Host Cookie User-Agent
    • 请求参数 query
    • 请求体:JSON XML FORM
  • 响应:
    • 响应状态行
    • 响应头
    • 响应体

URI 和 URL

  • URI,统一资源标识符,用来唯一的标识一个资源。
  • URL,统一资源定位符,它是一种具体的 URI
  • URL 结构:https://www.baidu.com/s?wd=海贼王&rsv_spt=1
    1. 协议:http
    2. 域名:www.baidu.com
    3. 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
    4. 路径:/s
    5. 请求参数:wd=海贼王&rsv_spt=**1

HTTP 请求报文

> GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
> Host: baidu.com
> Accept-Encoding: deflate, gzip
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
> User-Agent: Mozilla/5.0 
(Macintosh; Intel Mac OS X 10_15_0)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
> Accept: image/webp,image/apng,image/*,*/*;q=0.8
> Referer: https://sougou.com/
> Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
> Cookie: user_id=xx;_homeland_session=xx;
>

 HTTP 响应报文

< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Thu, 12 Mar 2020 09:13:44 GMT
< Content-Type: image/png
< Content-Length: 11390
< Connection: keep-alive

 HTTP 响应状态码

  • 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
  • 2xx 表示成功,接受或知道了
    • 200 成功
  • 3xx 表示重定向,要完成请求还必须才去进一步的行动
    • 301 永久移动
    • 302 临时移动
  • 4xx 表示客户端请求错误
    • 403 未授权
    • 404 未找到
  • 5xx 表示服务端错误
    • 500 服务器内部错误
    • 503 服务不可用

RESTful 架构

  • Restful:Representational State Transfer
  • 借助于 HTTP 协议的基本请求方法代表资源的状态切换
    • GET:获取资源
    • POST:新增或者更新
    • PUT:更新资源
    • DELETE:删除资源

3.接口测试用例设计

接口测试流程

接口测试用例设计思路

 

接口测试用例要素

  • 用例名称
  • 接口地址
  • 请求方式
  • 前置条件
  • 请求头部
  • 请求参数
  • 响应状态码
  • 预期响应结果 

4.postman基础使用

Postman 介绍

  • 快速构建请求
  • 提供响应结果的比较功能
  • 查看测试结果
  • 批量运行
  • 设置环境变量

Postman 安装

  • 官网下载地址
    • https://www.postman.com/downloads

Postman 使用

  • 发送 GET 请求
    • 新建请求
    • 填写请求方式:GET
    • 填写请求参数: para_key = para_value
  •  发送 POST 请求
    • 请求方式:POST
    • 请求参数
      • FORM 格式:Body –> form-data
        • JSON 格式:Body –> raw –> JSON
      • 文件格式:Body –> form-data –> File

 操作头信息

  • 添加请求头
  • 修改请求头

 

查看接口响应

  • 响应体
  • 响应头
  • 响应状态

5.postman实战练习

测试流程:

  • 宠物商店接口文档分析
  • 接口测试用例设计
  • Postman 完成接口测试

宠物商店接口文档分析

  • 接口文档:https://petstore.swagger.io
  • 宠物的增删改查

接口测试用例设计

  • 宠物的增删改查冒烟测试用例

 

文档地址:template: 用来存放开发模版 - Gitee.com 

 Postman 完成接口测试

  • 创建测试集
  • 编写断言
  • 运行测试集
  • 查看测试结果 

新增宠物 

 

查询宠物

 

更新宠物:

 

删除宠物:

断言

  • 验证响应状态码
  • 验证响应体中是否包含某个字符串
  • 验证 JSON 中的某个值是否等于预期的值
  • 验证响应体是否与某个字符串完全相同
  • 验证响应头信息中的 Content-Type 是否存在
  • 验证响应时间是否小于某个值
// Status Code:Code is 200
// 验证响应状态码
pm.test("响应状态码为 200", function () {pm.response.to.have.status(200);
});// Response Body:contains string 
// 验证响应体中是否包含某个字符串
pm.test("响应体中包含预期的字符串", function () {pm.expect(pm.response.text()).to.include("doggie");
});// Response Body:JSON value check
// 验证 JSON 中的某个值是否等于预期的值
pm.test("宠物名称为 doggie", function () {var jsonData = pm.response.json();pm.expect(jsonData[0].name).to.eql("doggie");
});// Response Body:Is equal to a string
// 验证响应体是否与某个字符串完全相同
pm.test("响应体正确", function () {pm.response.to.have.body("response_body_string");
});// Response Body:Content-Type header check
// 验证响应头信息中的 Content-Type 是否存在
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});// Response time is less than 200ms
// 验证响应时间是否小于某个值
pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200);
});

新增宠物断言:

json压缩转义成字符串:

 

查询宠物断言:

更新宠物断言:

json压缩转义成字符串:

删除宠物断言:

 运行测试集

  • 测试集页面 -> Run 按钮

 

宠物商店运行结果:

 

查看测试结果:

 

变量

  • Postman 中变量的种类与作用域
    • Data:在测试集中上传的数据
    • Environment:环境范围
    • Collection:集合范围
    • Global:全局范围
    • Local:在脚本中设置的变量

 变量定义

  • 全局变量:Environments -> Globals
  • 测试集变量:测试集页面 -> Variables
  • 环境变量:Environments -> +

 

全局变量: 

全局变量的使用:

变量的使用

  • 请求 URL, Params 参数或 Body 表格或JSON/XML 文本中通过 {{变量名}} 使用
  • 在 Pre-request Script 和 Tests 脚本中使用封装好的语句获取或者设置对应变量

 全局变量的使用:

Pre-request Script

在脚本中获取全局变量 

 

测试集变量:

测试集变量的使用:

 

环境变量

环境变量的使用:

 变量的优先级

  • 优先级从高至低为:Data -> Enviroment -> Collection -> Global -> Local

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

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

相关文章

VUE build:gulp打包:测试、正式环境

目录 项目结构 Gulp VUE使用Gulp Vue安装Gulp Vue定义Gulp.js package.json build文件夹 config文件夹 static-config文件夹 项目结构 Gulp Gulp是一个自动化构建工具&#xff0c;可以帮助前端开发者通过自动化任务来管理工作流程。Gulp使用Node.js的代码编写&#xff…

使用Git把项目上传到Gitee的详细步骤

1.到Git官网下载并安装 2.到Gitee官网进行注册&#xff0c;然后在Gitee中新建一个远程仓库 3.设置远程仓库的参数 4.返回Gitee查看仓库是否生成成功 5.新建一个文件夹作为你的本地仓库 6.将新建好的文件夹初始化成本地仓库 第一步&#xff1a;右键点击刚创建的本地仓库&#…

Tomcat 的部署和优化

目录 1、什么是Tomcat 1.1、静态页面的选择 2、Tomcat是怎么运行的 3、安装jdk &#xff06; 部署jdk环境 & Tomcat 安装 1、安装jdk 2、配置jdk环境变量 3、tomcat安装 4、Tomcat启动 5.优化tomcat启动速度 6.Tomcat的主要命令 7.Tomcat 配置虚拟主机 8.Tomca…

第2章_freeRTOS入门与工程实践之单片机程序设计模式

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

AMS爆炸来袭,上线即巅峰

1.关于首发项目Antmons(AMS)空投结果 Gate.io Startup 首发项目Antmons代币AMS于Aug15th,AM 07:00开始下单&#xff0c;24小时内下单同等对待总共有15,950人下单&#xff0c;下单总价值超过1,000万美金分发系数约为0.001640495298341。根据上线规则AMS项目认购成功&#xff0c;…

刷一下算法

记录下自己的思路与能理解的解法,可能并不是最优解法,不定期持续更新~ 1.盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容…

linux查看进程对应的线程(数)

首先&#xff0c;top或ps查看进程列表&#xff0c;确定要查看的进程pid&#xff0c;如下面40698 查看进程的线程情况 查看进程&#xff1a;top -p 40698 查看线程&#xff1a;top -p 40698 -d 3 -H 其中-d是刷新频率 可看到此进程共211个线程&#xff0c;运行中的是211个。…

QStandardItem通过setCheckable添加复选框后无法再次通过setCheckable取消复选框的问题

前言 如题所示&#xff0c;通过setCheckable添加复选框后&#xff0c;想要通过setCheckable(false)取消复选框&#xff0c;你会发现根本没有作用的。 问题复现 #include "widget.h" #include "ui_widget.h" #include <QList>Widget::Widget(QWidg…

DockerCompose

DockerCompose Docker Compose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器&#xff01; 初识DockerCompose Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。格式如下&#xff1a; version: &…

Spring注解家族介绍: @RequestMapping

前言&#xff1a; 今天我们来介绍RequestMapping这个注解&#xff0c;这个注解的内容相对来讲比较少&#xff0c;篇幅会比较短。 目录 前言&#xff1a; RequestMapping 应用场景&#xff1a; 总结&#xff1a; RequestMapping RequestMapping 是一个用于映射 HTTP 请求…

Jprofiler的使用查看oom

一、安装 idea安装插件 安装客户端 链接 IDEA配置Jprofiler执行文件 二、产生oom import java.util.ArrayList; import java.util.List;//测试代码 public class TestHeap {public static void main(String[] args) {int num 0;List<Heap> list new ArrayList&l…

超详细!魔改为中文sqlmap的使用教程

超详细&#xff01;魔改为中文sqlmap的使用教程 1.SQLMAP介绍2.Qitian基础信息3.Qitian绕过WAF 魔改了一版中文版的SQLMAP&#xff0c;如下图&#xff1a; 1.SQLMAP介绍 Sqlmap是一个自动化的sql注入工具&#xff0c;其主要功能是扫描、发现并利用给定url的SQL注入漏洞&#…

【SpringMVC】JSR303与拦截器的使用

文章目录 一、JSR3031.1 JSR303是什么1.2 JSR 303的好处包括1.3 常用注解1.4 实例1.4.1 导入JSR303依赖1.4.2 规则配置1.4.3 编写校验方法1.4.4 编写前端 二、拦截器2.1 拦截器是什么2.2 拦截器与过滤器的区别2.3.应用场景2.4 快速入门2.5.拦截器链2.6 登录拦截权限案例2.6.1 L…

Docker搭建ELK日志采集服务及Kibana可视化图表展示

架构 ES docker network create elkmkdir -p /opt/ELK/es/datachmod 777 /opt/ELK/esdocker run -d --name elasticsearch --net elk -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -v /opt/ELK/es/plugins:/usr/share/elasticsearch/plugins -v /opt/…

蓝桥杯2023年第十四届省赛真题-更小的数--题解

目录 蓝桥杯2023年第十四届省赛真题-更小的数 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-更小的数 时间限制: 3s 内存限制: 320MB 提交: 895 解决: 303 题目描述 小蓝有一个长度均为 n 且仅由数字…

RK3588 点亮imx586摄像头

一.硬件原理图 mipi摄像头硬件确认点&#xff1a; 1.供电&#xff1a;5V&#xff0c;2.8V&#xff0c;1.2V&#xff0c;1.8V&#xff0c;reset脚&#xff08;硬拉3.3&#xff0c;上电的时候从低到高&#xff09;&#xff0c;pwron脚外接 3.3V。 2,时钟&#xff1a;MCLKOUT是2…

Linux 文件创建、查看

touch、cat、more命令 ①touch命令——创建文件 ②cat命令——查看文件内容全部显示 这是txt.txt文件内容 使用cat命令查看 ③more命令——查看文件内容支持翻页 在查看的过程中&#xff0c;通过空格翻页&#xff0c;通过q退出查看

基于Xml方式Bean的配置-初始化方法和销毁方法

SpringBean的配置详解 Bean的初始化和销毁方法配置 Bean在被实例化后&#xff0c;可以执行指定的初始化方法完成一些初始化的操作&#xff0c;Bean在销毁之前也可以执行指定的销毁方法完成一些操作&#xff0c;初始化方法名称和销毁方法名称通过 <bean id"userService…

linux万字图文学习进程信号

1. 信号概念 信号是进程之间事件异步通知的一种方式&#xff0c;属于软中断。 1.1 linux中我们常用Ctrlc来杀死一个前台进程 1. Ctrl-C 产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束就可以接受新的命令,启动新的进程。2. S…

微服务架构介绍

系统架构的演变 1、技术架构发展历史时间轴 ①单机垂直拆分&#xff1a;应用间进行了解耦&#xff0c;系统容错提高了&#xff0c;也解决了独立应用发布的问题&#xff0c;存在单机计算能力瓶颈。 ②集群化负载均衡可有效解决单机情况下并发量不足瓶颈。 ③服务改造架构 虽然系…