接口测试-Fidder及jmeter使用

一、接口测试的基础

1.接口的含义

        也叫做API,是一组定义、程序及协议的集合,提供访问一组例程的能力,无需访问源码获理解内部工作细节

2.接口的分类

        代码内部的接口,程序模块间的接口,对于程序接口测试,需要使用与开发接口相同编程语言,通过对方法和函数调用,验证返回结果是否准确。

        协议接口,系统与系统之间,测试是通过网络数据进行传递,将数据发送到接口,得到接口响应信息。

        接口测试的重点在于检查数据的交换、传递和控制管理以及系统间相互逻辑的依赖关系

2.1 协议接口分类

1.调用方式不同

        系统与系统之间的接口

        系统内部,服务与服务之间的调用

···     下层服务对上层服务的接口,分为应用层、service层为服务器提供数据处理、db(数据库 层)层用于存放数据,各层次之间调用

2.按协议不同

        webService接口,使用的是soap协议,通过HTTP传输,请求和返回报文都是xml格式

        http api接口,使用http协议,基于tcp/ip协议来传输数据,工作与客户端-服务器架构,通过url地址像服务器发送请求,最常用的get和post。

3.接口测试的概念

        模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客
户端返回应答,客户端再接收应答的一个过程。

4.接口测试的意义

        缩短产品研发周期, 接口测试可以更早的发现问题,使得在功能测试阶段被修改的bug变少

        发现更加底层的问题,接口测试可以更全面覆盖底层代码

        检查系统的安全性、稳定性

5.接口的组成

5.1 接口文档内容

        接口文档内容包含

         接口说明

        调用url

        请求方法(get/post)

        请求参数、参数类型、请求参数说明、请求头header

        返回参数说明、请求响应代码、响应内容

5.2 http请求方法

参数是客户端向服务器发送的数据

        get:发送指定参数的请求来取得服务器上的某个资源,提交数据会放在url之后以?分割url和数据,参数之间采用&进行连接。

        post请求:像指定资源提交数据,数据包含在请求中

get和post区别:

        get使用url或者cookie传参,post数据在body中

        post比get更安全,get请求能被浏览器缓存,post数据不能被缓存

        一般获取数据采用get,post请求用于发送数据

        get只支持ASCII类型,post请求数据类型没有限制

5.3header

        标头 (header)是服务器以 HTTP 协议传 HTML 资料到浏览器前所送出的字串,一般存放
cookie、token 等信息,header一般存放的是校验信息

        cookie,万维网站点使用cookie来跟踪用户信息,服务器与客户之间传递的状态信息,唯一识别码,可以跟踪用户在网站活动

        session,终端用户与系统交互的事件,保持状态

        请求头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息,常见的请求报头如下:

        Accept:浏览器可接受的 MIME 类型,MIME 用于设定某种扩展名的文件用哪种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
        Accept-Encoding:浏览器能够进行解码的数据编码方式
         Accept-Language:浏览器所希望的语言种类
        Connection:表示是否需要持久连接,默认都开启了 Keep-Alive,
        Host:初始 URL 中的主机和端口,它通常是从 HTTPURL 中提取出来的。
        User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器

        响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对 Request-URI 所标识的资源进行下一步访问的信息。
         常用的响应报头如下:
        Content-Type:表示后面的文档属于哪种 MIME 类型。
        Date:当前的 GMT国际时间
        Server:包含了服务器用来处理请求的软件信息

        X-Frame-Options:用来给浏览器指示允许一个页面可否在<frame>、<iframe>或者<object>中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,从而也避免了点击劫持(click jacking)的攻击。   

5.4 http 响应码

        1** :表示服务器收到请求,需要请求者继续执行操作。
        200: 2 开头的都表示这个请求发送成功,最常见的是 200,代表这个请求是 ok 的,服务器也返回了。
        300,3 开头的代表重定向,最常见的是 302,把这个请求重定向到别的地方了。

        400 ,400 代表客户端发送的请求有语法错误,401 代表访问的页面没有授权,403
表示没有权限访问这个页面,404 代表没有这个页面。
         500  5 开头的代表服务器有异常,500 代表服务器内部异常,503 代表由于超载或系统维护,服务器暂时无法处理客户端请求,504 代表服务器端超时,没返回结果。

5.5 响应数据

当我们在请求一个页面的时候,会显示服务器返回的资源

json

6.怎么做接口测试

6.1 流程

熟悉业务和需求

分析接口文档

编写接口测试文档

开始测试

提交测试报告

6.2 设计测试用例

        通过性测试按照接口文档上的参数,正常传入,是否可以返回正确的结果。

        接口安全,绕过验证,绕过身份授权,参数是否加密,密码安全规则

        异常验证不按照接口文档上的要求输入参数,来验证接口对异常情况的校验

二、jmeter接口测试

1 流程

1.测试计划

2.线程组

4.添加取样器(http请求)

5.写入接口的URL,路径,请求方式,参数

6.添加监听器(查看结果树、图形结果、聚合报告等)

7.断言

8.调用接口,查看返回值

2 编写脚本

服务器名称或 IP  不要填 http://
端口号 根据实际需求添加

协议 http https

方法 get post

路径 目标 URL 路径(不包括服务器地址和端口),开头的/不能省略

自定义重定向 发送 HTTP 请求后得到的响应就是 302/301 时,JMeter,自动重定向到新的页面。跟随重定向 沿用之前的 sessionid

Use keep Alive 当该选项被选中时,JMeter 和目标服务器之间使用 Keep-Alive 方式进行
HTTP 通信,默认选中。

semultipart/from-data for HTTP POST 当发送 HTTP 的 POST 请求时,使用 Use multipart/from-data 方法发送,默认不选中。

参数  在请求中发送 URL 参数,对于带参数的 URL,JMeter 提供了一个简单的参数化方法,用户可以将 URL 中的所有参数都设置在该表格中,表格的每一行是一个参数值。

消息体数据   json可以使用

3.断言

根据业务需求编写脚本添加断言,可验证接口的正确性。

4.正则表达式提取

在响应中查找字符串,可以解决关联问题,后置处理器→正则表达式提取器

5.性能测试

一般设置为 1 个“线程数”,根据测试数据的个数设定“循环次数”。

接口性能测试,修改线程数

三、FIDDLER接口安全测试

1.Fiddler 的界面

1.1 会话区

#:顺序号,按照抓包的顺序从 1 递增
Result:HTTP 状态码
Protocol:请求使用的协议,如 HTTP/HTTPS/FTP 等
HOST:请求地址的主机名或域名
URL:请求资源的位置(路径)
Body:请求大小
 Caching:请求的缓存过期时间或者缓存控制值
Content-Type:请求响应的类型
Process:发送此请求的进程
Comments:备注
Custom:自定义值

1.2 Fiddler 的 HTTP 统计视图

请求总数、请求包大小、响应包大小。
请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP、传输时间。
HTTP 状态码统计。
返回的各种类型数据的大小统计以及饼图展现。

1.3监控面板

Headers:信息头,若用手机和电脑打开的页面不一样,与此设置有关。
TextView:以文本形式显示请求或响应的数据。
SyntaxView:同 TextView,但有语法着色。
WebForms:请求部分以表单形式显示所有的请求参数和参数值
 HEXView:十六进制形式的数据。
Auth:显示认证信息,如 Authorization。
Cookies:显示所有 cookies。
Raw:显示 Headers 和 Body 数据。

JSON:请求或响应数据是 json 格式时,json 形式显示请求或响应内容。
XML:请求或响应数据是 xml 格式,xml 形式显示请求或响应内容。

1.4  Request消息结构

POST:请求方式,HTTP/1.1 表示协议与版本
 Accept:浏览器端可接受的媒体类型
Referer:告诉服务器是从哪个页面链接过来的
Accept-Language:语言类型
Accept-Encoding:压缩方法
User-Agent:客户端使用的操作系统和浏览器的名称和版本
Connection:网页打开后,客户端和服务器之间用于传输数据的 TCP 连接是否关闭,
keep-alive 表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条
已经建立的连接
 COOKIE:将 cookie 值发送给服务器

1.5  Response 的消息结构

HTTP/1.1:协议,200:状态码,OK 响应消息文本
Cache-Control:private 的消息不能被共享缓存处理,对于其他用户的请求无效
Content-Type:charset:告知客户端服务器本身响应的对象的类型和字符集
Expires:浏览器会在指定过期时间内使用本地缓存
Last-Modified:客户端请求的资源文件在服务器端最后被修改的时间
Date:生成消息的具体时间和日期

Content-Length:正文长度
Set-Cookie:把 cookie 发送到客户端

2.使用 Fiddler 实现接口测试

2.1 使用流程

1.选中需要测试的 url,找到并在浏览器打开

2.重新启动 Fiddler

3.抓包

2.2 过滤器

可以使用过滤器过滤所需要的ip或者域名,

1.点击filters

2.点击user Filters

3.输入ip地址和域名

4.点击actions中的 run filterset now

2.3 get和post

修改参数为非法数据,使用此方式伪造或篡改数据

1.选择Composer

2.选择get或者post方法

3.输入 url

post方法需添加 Content-Type,可在Headers查看

get 方法直接在 url/后写?参数名 1=值 1&参数名 2=值 2

post 方法在 RequestBody 中写

4,点击Execute,查看响应数据或后台数据

2.4 拦截

在 Fiddler 中设置抓包和拦截请求
返回软件操作,给服务器发送数据
拦截完成,篡改将要发送的数据,点击 Break on Response,点击 Run to Completion

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据集】医学常见9种皮肤疾病检测数据集11294张YOLO+VOC格式(已增强)

数据集格式&#xff1a;VOC格式YOLO格式 压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计&#xff1a;11294 Annotations文件夹中xml文件总计&#xff1a;11294 labels文件夹中txt文件总计&#xff1a;11294 标签种类数…

JavaSE——绘图入门

一、Java绘图坐标体系 下图说明了Java坐标系&#xff0c;坐标原地位于左上角&#xff0c;以像素为单位。在Java坐标系中&#xff0c;第一个是x坐标&#xff0c;表示当前位置为水平方向&#xff0c;距离坐标原点x个像素&#xff1b;第二个是y坐标&#xff0c;表示当前位置为垂直…

探索 Seaborn Palette 的奥秘:为数据可视化增色添彩

一、引言 在数据科学的世界里&#xff0c;视觉传达是不可或缺的一环。一个好的数据可视化不仅能传递信息&#xff0c;还能引发共鸣。Seaborn 是 Python 中一款广受欢迎的可视化库&#xff0c;而它的调色板&#xff08;palette&#xff09;功能&#xff0c;则为我们提供了调配绚…

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

数据分析实战—玻璃类别分类

1.实战内容 (1) 加载玻璃类别数据集&#xff0c;划分训练集、测试集 import pandas as pd import numpy as np pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None) # 读取数据集 glass pd.read_csv(glass.csv, encodinggbk, headerNone) glas…

Hive是什么,Hive介绍

官方网站&#xff1a;Apache Hive Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和查询存储在HDSF上的大规模数据‌。Hive通过将结构化的数据文件映射为数据库表&#xff0c;并提供类SQL的查询功能&#xff0c;使得用户可以使用SQL语句来执行复杂的​MapReduce任…

GIN

gin是什么 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API&#xff0c;但性能比 Martini 快 40 倍。如果你需要极好的性能&#xff0c;使用 Gin 吧。 特点&#xff1a;gin是golang的net/http库封装的web框架&#xff0c;api友好&#xff0c;注…

初始Python篇(13)—— 模块以及Python中常用的内置模块

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 模块的概念 模块的导入 包的概念以及使用 主程序运行 Python中常用的内置模块 random模块 time模块 datetime模块 …

时间序列异常值检测方法

文章目录 一、基于统计的方法1.1、标准差1.2、箱线图1.3、Z-Score法 二、基于机器学习算法的方法2.1、K-NN2.2、孤立森林 三、基于密度的方法3.1、LOF3.2、DBSCAN密度聚类 时间序列相关参考文章&#xff1a; 时间序列预测算法—ARIMA 时间序列预测算法—Prophet 时间序列分类任…

8K+Red+Raw+ProRes422分享5个影视级视频素材网站

Hello&#xff0c;大家好&#xff0c;我是后期圈&#xff01; 在视频创作中&#xff0c;电影级的视频素材能够为作品增添专业质感&#xff0c;让画面更具冲击力。无论是广告、电影短片&#xff0c;还是品牌宣传&#xff0c;高质量的视频素材都是不可或缺的资源。然而&#xff…

顺序表的操作

注意位序和数组下标的关系 插入&#xff1a; 插入的时间复杂度&#xff1a; 最深层语句&#xff1a; 最好情况 最坏情况 平均情况 删除&#xff1a; 查找&#xff1a;

五、windows上vscode构建c/c++环境

1、安装vscode 官网下载界面&#xff1a;https://code.visualstudio.com/Download 请根据电脑系统安装所需版本点击下载链接&#xff08;一般情况下点击windows按钮即可&#xff09;鼠标左键双击&#xff0c;即可运行安装程序&#xff0c;点击【确认】&#xff1b;选择安装路径…

Spring实例化的基本流程和Bean处理器

目录 Spring实例化的基本流程 Bean的处理器 Bean工厂后处理器&#xff08;BeanFactoryPostProcessor&#xff09; 动态注册beanDefinition Bean后处理器&#xff08;BeanPostProcessor&#xff09; Spring实例化的基本流程 在了解处理器之前&#xff0c;要清除spring实例化…

【SH】Ubuntu Server 24搭建Web服务器访问Python程序研发笔记

文章目录 说个问题写个方案一、安装Ubuntu Server二、安装Web服务器采用Nginx服务器 三、安装Python及依赖创建项目虚拟环境 四、安装Python Web框架采用Flask框架创建和运行Flask应用&#xff08;以后的重点&#xff09; 五、安装WSGI服务器采用Gunicorn 六、配置Nginx七、验证…

109.【C语言】数据结构之求二叉树的高度

目录 1.知识回顾&#xff1a;高度&#xff08;也称深度&#xff09; 2.分析 设计代码框架 返回左右子树高度较大的那个的写法一:if语句 返回左右子树高度较大的那个的写法二:三目操作符 3.代码 4.反思 问题 出问题的代码 改进后的代码 执行结果 1.知识回顾&#xf…

瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现

瑞吉外卖项目学习笔记(一)准备工作、员工登录功能实现 文章目录 3 项目组件优化3.1 实现Swagger文档输出3.2 实现logback日志打印3.3 实现表单校验功能3.4 实现请求参数和响应参数的打印 3 项目组件优化 3.1 实现Swagger文档输出 1&#xff09;在application.yml中增加knife4…

OpenEuler 22.03 安装 flink-1.17.2 集群

零&#xff1a;规划 本次计划安装三台OpenEuler 22.03 版本操作系统的服务器&#xff0c;用于搭建 flink 集群。这里使用flink1.17.2 的原因&#xff0c;是便于后续与springboot的整合 服务器名IP地址作用其他应用flink01192.168.159.133主jdk11、flink-1.17.2flink02192.168.…

[数据结构] 链表

目录 1.链表的基本概念 2.链表的实现 -- 节点的构造和链接 节点如何构造? 如何将链表关联起来? 3.链表的方法(功能) 1).display() -- 链表的遍历 2).size() -- 求链表的长度 3).addFirst(int val) -- 头插法 4).addLast(int val) -- 尾插法 5).addIndex -- 在任意位置…

20241220在荣品开发板PRO-RK3566的buildroot下适配gc2093

20241220在荣品开发板PRO-RK3566的buildroot下适配gc2093 2024/12/20 16:00 余顺?PRO-RK3566开发板 挂 gc2093模块。刷 buildroot的预编译固件。 update-pro-rk3566-buildroot-hdmi-20231130-034633.img 1、现在发现 qcamera的 拍照Capture、Record录像模式都是640x480分辨率…

实习冲刺数据库练习-01 基础查询

原题链接&#xff1a;牛客网在线编程_SQL篇_非技术快速入门 数据表示例&#xff1a; 根据数据表示例要求我们完成以下查询&#xff1a; &#xff08;1&#xff09;获取用户信息表中所有的数据&#xff0c;请你取出相应结果 &#xff08;2&#xff09;获取用户的设备id对应的…