接口测试——接口协议抓包分析与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.mzph.cn/news/81096.shtml

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

相关文章

设计模式之职责链模式

职责链模式:使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 这里发出这个请求的客户端并不知道这当中的哪一个对象最终处理这个请求&am…

TCP详解之三次握手和四次挥手

TCP详解之三次握手和四次挥手 1. TCP基本认识 1.1 什么是 TCP TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 1.2 TCP协议段格式 我们先来看看TCP首部协议的格式 我们先来介绍一些与本文关联比较大的字段&#xff0c;其他字段不做详细阐述。 序列号&#xff1a…

2023面试知识点一

1、新生代和老年代的比例 默认的&#xff0c;新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 )&#xff0c;即&#xff1a;新生代 ( Young ) 1/3 的堆空间大小。老年代 ( Old ) 2/3 的堆空间大小。其中&#xff0c;新生代 ( …

213. 打家劫舍 II

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 213. 打家劫舍 II 题目解读 你是一个专业的小偷&#xff0c;现在要偷一排屋子&#xff0c;但是你不能偷相邻的两间屋子&#xff08;这一排房子的首尾是相连的&…

什么是性能调优?方法有哪些?流程是怎样的?

一、性能调优的含义 性能调优通俗来讲就是对计算机硬件、操作系统和应用有相当深入的了解&#xff0c;调节三者之间的关系&#xff0c;实现整个系统&#xff08;包括硬件、操作系统、应用&#xff09;的性能最大化&#xff0c;并能不断的满足现有的业务需求。 在判定软件存在…

Hadoop-Hbase

1. Hbase安装 1.1 安装zookeeper、 hbase 解压至/opt/soft&#xff0c;并分别改名 配置环境变量并source生效 #ZK export ZOOKEEPER_HOME/opt/soft/zk345 export PATH$ZOOKEEPER_HOME/bin:$PATH #HBASE_HOME export HBASE_HOME/opt/soft/hbase235 export PATH$HBASE_HOME/b…

浅显易懂理解傅里叶变换

说起电子硬件专业&#xff0c;那不得不提的就是傅里叶变换了。 大学课程中应该吓倒了很多人&#xff0c;谈傅里叶色变了。 本次就来重新认识一下电子硬件中的傅里叶变化。 首先理解之前&#xff0c;当然是需要先知道傅里叶这位大牛的人物百科啦。 傅里叶是法国数学家&#xff0…

【集成学习】对已训练好的模型进行投票

在不同的数据预处理情况下训练得到了三个SVM模型&#xff0c;结果都差不多&#xff0c;对这三个模型的分类结果进行投票 1、三个模型的model_path # 最终model的path self.model_path log_path/model_name_model.gz self.time_log log_path/model_name_time_log.csv# 模型1…

无涯教程-JavaScript - EXP函数

描述 EXP函数返回e升至数字的幂。常数e等于自然对数的底数2.71828182845904。 语法 EXP (number)争论 Argument描述Required/OptionalNumberThe exponent applied to the base e.Required Notes 要计算其他碱基的幂,请使用幂运算符(^) EXP是LN的倒数,LN是数字的自然对数…

免费:CAD批量转PDF工具,附下载地址

分享一款CAD 批量转PDF、打印的工具插件。能自动识别图框大小、自动识别比例、自动编号命名。重点&#xff01;重点&#xff01;重点&#xff01;自动将CAD的多张图纸一次性地、批量地转为PDF&#xff0c;或者打印。效果看下图&#xff1a; 适用环境&#xff1a; 32位系统 Auto…

5-2 Pytorch中的模型层layers

深度学习模型一般由各种模型层组合而成。 torch.nn中内置了非常丰富的各种模型层。它们都属于nn.Module的子类&#xff0c;具备参数管理功能。 例如&#xff1a; nn.Linear, nn.Flatten, nn.Dropout, nn.BatchNorm2d, nn.Embedding nn.Conv2d,nn.AvgPool2d,nn.Conv1d,nn.ConvTr…

layui框架学习(45: 工具集模块)

layui的工具集模块util支持固定条、倒计时等组件&#xff0c;同时提供辅助函数处理时间数据、字符转义、批量事件处理等操作。   util模块中的fixbar函数支持设置固定条&#xff08;2.7版本的帮助文档中叫固定块&#xff09;&#xff0c;是指固定在页面一侧的工具条元素&…

小程序引入vant-Weapp保姆级教程及安装过程的问题解决

小知识&#xff0c;大挑战&#xff01;本文正在参与“程序员必备小知识”创作活动。 本文同时参与 「掘力星计划」&#xff0c;赢取创作大礼包&#xff0c;挑战创作激励金 当你想在小程序里引入vant时&#xff0c;第一步&#xff1a;打开官方文档&#xff0c;第二步&#xff…

RK3399平台开发系列讲解(入门篇)VIM的基础命令

🚀返回专栏总目录 文章目录 一、Vim 命令速查二、其他命令三、Vim模式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍Vim相关命令。 一、Vim 命令速查 简单说明一下,这张图上展示了一个键盘。图中的“•”表示,单个字母不是完整的命令,必须再有进一步…

elasticsearch5-RestAPI操作

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

typeScript 类型推论

什么是类型推论&#xff1f; 类型推论是 TypeScript 中的一个特性&#xff0c;它允许开发人员不必显式地指定变量的类型。相反&#xff0c;开发人员可以根据变量的使用情况让 TypeScript 编译器自动推断出类型。例如&#xff0c;如果开发人员将一个字符串赋值给一个变量&#…

【大数据】Neo4j 图数据库使用详解

目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域 二、图数据库Neo4j简介 2.1 Neo4j特性 2.2 Neo4j优点 三、Neo4j数据模型 3.1 图论基础 3.2 属性图模型 3.3 Neo4j的构建元素 3.3.1 节点 3.3.2 属性 3.3.3 关系 3.3.4 标…

智囊AI-基于 ChatGPT 的 AI 工具产品 你的私人AI助手

智囊AI是一款基于 ChatGPT 的 AI 工具产品&#xff0c;主打免费、智能、方便&#xff0c;可以在此雇佣各种各样的免费智囊进行对话、自己创造和分享智囊、共享有趣有用的对话等。不过使用需要注册登录&#xff0c;可以使用自己的openai key或者使用网站提供的api key&#xff0…

常见的API

常见的 API Math 从 JDK 版本 1 开始的, 用来计算的一些方法 这里面定义了两个常量的 PI 和 E 这两个是最接近 pi 的值和最接近对数的值 Abs (int a ) 取绝对值Ceil (double a)向上取整Floor (double a )向下取整Round (float a)四舍五入Max (int a, int b) 取最大值Pow (dou…

yarn的资源优化的调整参数

yarn的资源优化的调整参数 官网&#xff1a; https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 没事多看官网哈 yarn.nodemanager.resource.memory-mb&#xff1a;用于设置NodeManager节点的总内存容量&#xff0c;单位为MB。根据集…