接口测试-Fidder及jmeter使用

news2024/12/21 6:24:33

一、接口测试的基础

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

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

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

相关文章

postman设置cookie

postman发送请求的时候&#xff0c;如何顺带cookie? 示例&#xff1a; Cookie: locale_areazh; contryzh_cn;

Java-31 深入浅出 Spring - IoC 基础 启动IoC XML与注解结合的方式 配置改造 applicationContext.xml

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

jmeter连接mysql

查询mysql数据库版本 SELECT VERSION(); 下载jmeter mysql 驱动jar包&#xff0c;版本低于mysql版本&#xff0c;放在jmeter的lib 路径下 MySQL :: Download MySQL Connector/J (Archived Versions) 添加JDBC Connection Configuration 填写 variable name 及数据库信息 注意…

计算机网络基础(2):网络安全/ 网络通信介质

1. 网络安全威胁 网络安全&#xff1a;目的就是要让网络入侵者进不了网络系统&#xff0c;及时强行攻入网络&#xff0c;也拿不走信息&#xff0c;改不了数据&#xff0c;看不懂信息。 事发后能审查追踪到破坏者&#xff0c;让破坏者跑不掉。 网络威胁来自多方面&#xff1a…

数据分析实战—IMDB电影数据分析

1.实战内容 1.加载数据到movies_df&#xff0c;输出前5行&#xff0c;输出movies_df.info(),movies_df.describe() # &#xff08;1&#xff09;加载数据集&#xff0c;输出前5行 #导入库 import pandas as pd import numpy as np import matplotlib import matplotlib.pyplo…

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒&#xff0c;变成别人肉鸡&#xff0c;不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长&#xff0c;比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…

线性代数基础与应用:基底 (Basis) 与现金流及单期贷款模型(中英双语)

具体请参考&#xff1a;https://web.stanford.edu/~boyd/vmls/ 下面的例子来源于这本书。 线性代数基础与应用&#xff1a;基底 (Basis) 与现金流及单期贷款模型 在线性代数中&#xff0c;基底&#xff08;Basis&#xff09;是一个重要的概念&#xff0c;广泛应用于信号处理、…

微信小程序的消息头增加的字段不能有下滑线,字段大写字母自动转换消息字母

微信小程序的消息头增加的字段不能有下滑线&#xff0c;字段大写字母自动转换消息字母。这个是微信小程序的坑。 正式环境&#xff1a; 微信小程序的消息头增加了一个字段device_id,结果node.js打印出来的字段没有该字段。 [2024-12-20T09:45:54.476] [DEBUG] app - ctx.head…

【Java项目】基于SpringBoot的【旅游管理系统 】

【Java项目】基于SpringBoot的【旅游管理系统 】 技术简介&#xff1a;本系统使用JAVA语言开发&#xff0c;采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;&#xff08;1&#xff09;管理员功能&#xff1a;可以管理个人中心、用户管理、景区分…

游戏引擎学习第55天

仓库: https://gitee.com/mrxiao_com/2d_game 介绍 今天的主题是让世界存储真正实现稀疏化&#xff0c;即便当前效率可能并不高。我们计划花一些时间处理这个问题&#xff0c;并探讨相关的成本。稀疏化世界存储是接下来的重要步骤&#xff0c;为此需要逐步实施。 修复 SetCa…

每日十题八股-2024年12月19日

1.Bean注入和xml注入最终得到了相同的效果&#xff0c;它们在底层是怎样做的&#xff1f; 2.Spring给我们提供了很多扩展点&#xff0c;这些有了解吗&#xff1f; 3.MVC分层介绍一下&#xff1f; 4.了解SpringMVC的处理流程吗&#xff1f; 5.Handlermapping 和 handleradapter有…

Linux限制root 用户的远程登录(安全要求)

前言&#xff1a;现在基本用户主机都不允许使用root来操作&#xff0c;所以本文通过创建新用户&#xff0c;并限制root用户的ssh来解决这个问题 1. 创建新账户 aingo 首先&#xff0c;使用 root 账户登录系统。 sudo useradd aingo设置 aingo 账户密码&#xff1a; sudo pa…

mysql的事务和存储引擎+备份

mysql的事务和存储引擎备份 一. mysql的事务1.1 mysgl支持事务四种隔离级别1.2 事务控制语句1.3 行锁和死锁1.3.1 行锁1.3.2 死锁1.3.3 如何避免死锁的发生 二. msyql的备份和还原以及日志管理2.1 数据库备份的分类2.2 备份策略2.2.1 物理冷备份&#xff08;全量&#xff09;2.…

raid 状态查看 storcli64

场景 当磁盘报错的时候使用该命令排查 fdisk -l /dev/sdb fdisk: cannot open /dev/sdb: Input/output error进一步使用 smartctl 排查 smartctl -a /dev/sdb 输出 smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-144-generic] (local build) Copyright (C) 2002-19, B…

[搜广推]王树森推荐系统——双塔模型

内容概览 矩阵补充模型 矩阵补充模型输入用户ID 和 物品ID&#xff0c;利用embedding把 用户ID 和 物品ID 映射成向量&#xff0c;输出向量的内积&#xff08;一个实数&#xff09;&#xff0c;内积越大说明用户对这个物品越感兴趣 详见[搜广推]王树森推荐系统——矩阵补充&a…

96 vSystem

vSystem系统 1 技术背景 网络虚拟化旨在构建出一套与网络底层物理拓扑相互独立的逻辑网络环境&#xff0c;提供给不同需求的用户使用。基于这种思想&#xff0c;诞生出了 VLAN 技术和 VPN 技术。近年来&#xff0c; 随着以 VMM&#xff08;Virtual Machine Monitor&#xff0c…

低代码软件搭建自学的第一天——熟悉PyQt

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 学习计划第 1 步&#xff1a;环境搭建1.1 安装 Python1.2 安装 PyQt安装命令&#xff1a;验证安装&#xff1a; 第 2 步&#xff1a;PyQt 基础知识2.1 创建第一个窗…

【mac 终端美化】oh my zsh

快捷的mac终端美化方法。 以下是效果图&#xff0c;比较朴素&#xff0c;但是相比默认方案会好看一些&#xff0c;也能明显查看输入的命令&#xff0c;不会和输出混在一起。 下载主题 访问网址&#xff1a;https://iterm2colorschemes.com/&#xff0c;下载网页的压缩包并解…

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备 一、前提条件 确保路由器硬件支持&#xff1a; OpenWrt 路由器需要足够的存储空间和 CPU 性能来运行 Tailscale。确保设备架构支持 Tailscale 二进制文件&#xff0c;例…

【笔记】深度学习模型评估指标

推荐链接&#xff1a; &#xff08;0&#xff09;多分类器的评价指标 &#xff08;1&#xff09;泛化误差的评价方法&#xff1a;【机器学习】模型评估与选择&#xff08;留出法、交叉验证法、查全率、查准率、偏差、方差&#xff09; &#xff08;2&#xff09;机器学习&…