用Jmeter进行接口测试

news2024/11/26 21:32:15

web接口测试工具:

     手工测试的话可以用postman ,自动化测试多是用到 Jmeter(开源)、soupUI(开源&商业版)。

下面将对前一篇Postman做接口测试中的接口用Jmeter来实现。

一、Jmeter 的使用步骤

打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可。

在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”, 建立线程组。

右键“线程组” -> “添加” -> “Sample” -> “HTTP请求”, 输入“服务器名称或IP”,对应的端口号,http默认端口号80,可以不写。

以下请求为GET, 所有“方法”那选择“GET”, 输入对应的路径,添加参数及值。

注意: “服务器名称或IP”中不用输入http://, 请求时会自动加入(eg, 输入api.test.cn).

右键“线程组” -> “添加” -> “监听器” -> “察看结果数”, 添加“察看结果数”, 以察看运行后的结果,如果所示。

这是一个简单的接口请求例子。

二、接口请求实例

1. “用户定义的变量” 的应用

以获取学生信息接口(stu_info) 为例,添加一个“用户定义的变量”,设置变量"host" 以及值,这样在获取学生信息接口(stu_info)就可以通过"${host}"取得“服务器名称或IP”的值。

登陆接口(login)接口也可以应用“用户定义的变量”的方法,如上图所示,在“用户定义的变量”中添加"username", "password" 变量及对应的值, 应用到登陆接口(login)接口请求中即可。

 2. "HTTP Cookie 管理器"的应用

以金币充值接口(gold_add)为例,建立一个HTTP请求改名“金币充值”,选取请求方式POST, 输入对应的host, path以及同请求一起发送的参数和值。

由于此接口有权限验证,需要admin用户才可以做操作,需要添加cookie, 因此需要添加"HTTP Cookie 管理器"以传递Cookie。

添加"HTTP Cookie 管理器" 方法如下图所示, 右键“金币充值” -> “添加” -> “配置元件” -> "HTTP Cookie 管理器" 

设置Cookie 的名称(即username 的值),值(即login Response 中的sign 值),域(已在“用户定义的变量”中设置,只需输入变量即可,格式为${host})

最后可以通过“察看结果数”的响应数据查看结果。

3. 建立接口间的关联

以下以登陆接口(login)和金币充值接口(gold_add)为例,在这两个接口间建立关联,让金币充值接口(gold_add)可以实时取得登陆接口(login)的"sign" 值,不必再“HTTP Cookie 管理器”中手动输入最新的sign 值。

从“察看结果树”可以看出,登陆接口(login)的Response 结构为Json格式, sign 在 login_info 里面一层。

3.1 应用"jp@gc - JSON Path Extractor" 来实现

右键“登陆” -> “后置处理器 -> "jp@gc - JSON Path Extractor" 

通过“察看结果数”得到Response 的结果后, 将“JSONPath Expression” 输入"$.login_info.sign", 设置变量"sign2", 给金币充值接口(gold_add)用

因此需要在“HTTP Cookie 管理器”中将${username}的值输入${sign2},代替之前手动输入的那一串码。

3.2 右键“登陆” -> “后置处理器 -> "正则表达式提取器" 

输入对应的值, "jp@gc - JSON Path Extractor" 中类似,将“引用名称”输入"sign2",以保证和“HTTP Cookie 管理器”的一致。将正则表达式中的式用login 接口返回的 "sign": "cd2b43f1688e472e3a516b5a2c6831e8",  中的一串码用(.*) 替换即可。

各参数的含义参考下表:

参数

释义

引用名称

在HTTP等请求中,引用此数据,需要用到的名称

正则表达式

用于将需要的数据提取出来

模板

表示使用提取到的第几个值:
$-1$:表示取所有值
$0$:表示随机取值
$1$:表示取第1个
$2$:表示取第二个
以此类推:$n$:表示取第n个

匹配数字(0代表随机)

0 代表随机取值,1 代表全部取值

缺省值

如果正则表达式没有搜找到值,则使用此缺省值

4. 设置断言

以“增加学生”接口(add_stu)为例,增加响应断言,以验证添加的数据是否成功。如下图所示设置

通过“察看结果数”可以看到“增加学生” 金币结果为绿色,同时响应数据里的确有断言中的设置的"1000"。

 5. “HTTP信息头管理器”的使用

以下图中的“获取所有学生信息” 为例,右键“获取所有学生信息” -> “添加” -> “配置元件” -> "HTTP Cookie 管理器" , 输入对应的名称和值即可。

注意:  这里的值需要输入完整的url, 包括http:// (eg, 输入http://api.test.cn)

6. POST 文件的使用方法

与其他POST请求中添加key-value, json 数据不同的是,这个需要在HTTP 请求中点击“Flies Upload” tab, 点击“添加”, 然后通过“浏览”上传本地的文件。

注意: 参数名称必须为"file"。

7. "CSV Data Set Config" 和 “函数助手对话框”的使用

以增加学生接口(add_stu)为例,在本地创建一个文件,添加name 和sex的值,对脚本设置5个线程或者循环5次,以加入这5个用户。 

右键“线程组” -> “添加” -> “配置元件” -> "CSV Data Set Config",如果仅应用于“增加学生”接口的话,可以直接在“增加学生”接口下面创建"CSV Data Set Config"。

根据下图添加对应的,"Variable Names" 输入"name" 和"sex", 以逗号隔开,为避免插入的数据乱码,将file encoding 设置为utf-8。

由于"CSV Data Set Config"中的变量名为name 和sex,因此在“增加学生”接口的"Body Data" 中将值分别替换为${name}, ${sex}。

由于“phone”的唯一性,每次插入一条学生信息时phone 都要求不一样,所以对后面8位用随机函数来实现。

8. 数据库的应用

以下是JMeter 驱动数据库列表:

数据库

驱动

数据库url

mysql

com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}?allowMultiQueries=true

oracle

org.postgresql.Driver

jdbc:postgresql:{dbname}

PostgreSQL

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:user/pass@//host:port/service

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

jdbc:sqlserver://IP:1433;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

以下以mysql 数据库为例。

添加一个"JDBC Connection Configuration", 根据上表中对mysql的要求设置下图的值。 

添加一个"JDBC Request", 由于在Query 中有insert 和select, 所以Query Type 需要选择"Callable Statement", 如果是单个的select 或者insert,可以选取对应的Select Statement 和Update Statement。

通过察看结果数看到"JDBC Request" 请求成功,响应数据里返回insert 和select 的结果。

登陆mysql 数据库,查询发现和Jmeter 中通过察看结果数看到的结果一致。

 **注意点:修改Jmeter 中的中文乱码要将"\bin" 路径下的"jmeter.properties" 文件中设置为 "sampleresult.default.encoding=utf-8",如下所示。

对于Jmeter 里中文显示不出来的问题,可以打开"\bin" 路径下的"jmeter.properties" 文件,如下图所示,将这几个JS开头的注释去掉。

对于以上两个问题,修改后,需将Jmeter 重启才能起效。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

【vscode】windows11在vscode终端控制台中打印console.log()出现中文乱码问题解决

1. 问题描述 在前端开发过程中使用vscode编写node.js,需要在控制台中打印一些中文信息,但是一直出现中文乱码问题,英文和数字都显示正常。在网上试了很多设置的办法,最终找到windos11设置中解决。 2. 原因 首先打开控制台&…

通过html2canvas和jsPDF将网页内容导出成pdf

jsPDF参考:https://github.com/parallax/jsPDF html2canvas参考:https://github.com/niklasvh/html2canvas 或者 https://html2canvas.hertzen.com 思路 使用html2canvas将选中DOM生成截图对象将截图对象借助jsPDF导出为PDF文件 代码 这是一个示例&a…

《幻兽帕鲁》解锁基地和工作帕鲁数量上限

帕鲁私服的游戏参数通常可通过配置文件 PalWorldSettings.ini 来进行修改,然而这个配置文件有个别参数对游戏不生效,让人很是头疼。没错!我说的就是终端最大的帕鲁数量! 其实还有另外一种更加高级的参数修改方式,那就…

C#实现坐标系转换

已知坐标系的向量线段AB,旋转指定角度后平移到达坐标AB 获取旋转角度以及新的其他坐标转换。 新建窗体应用程序CoordinateTransDemo,将默认的Form1重命名为FormCoordinateTrans,窗体设计如图: 窗体设计代码如下: 部分…

在windows下安装docker部署环境运行项目----docker-compose.yml

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下! 也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习&…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(六)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 第十四章:使用卷积神经网络进行深度计算机视觉 尽管 IBM 的 Deep Blue 超级计算机在 1996 年击败了国际象棋世界冠军…

力扣 第 383 场周赛 解题报告 | 珂学家 | Z函数/StringHash

前言 谁言别后终无悔 寒月清宵绮梦回 深知身在情长在 前尘不共彩云飞 整体评价 T3是道模拟题,但是感觉题意有些晦涩,T4一眼Z函数,当然StringHash更通用些。 新年快乐, _. T1. 将单词恢复初始状态所需的最短时间 I 思路: 模拟 就是前缀和为…

AI助力农作物自动采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的&#xff0…

BUUCTF-Real-[PHPMYADMIN]CVE-2018-12613

目录 漏洞背景介绍 漏洞产生 漏洞利用 漏洞验证 漏洞背景介绍 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳…

GPT如何在一分钟内完成论文数据分析?

数据上传 PPMAN-AI 01 由于技术限制,目前InfinitePaper AI仅支持上传1份文件,且大小不超过10M。但是,在强大的代码解释器面前,这都是小问题。我们只需要将可能用到的文件打包成压缩文件上传即可,之后要求GPT直接解压…

计算机设计大赛 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …

财务数据处理问题及解决方案分享

一、平台介绍 财务自营计费主要承接京东自营数据在整个供应链中由C端转B端的功能实现,在整个供应链中属于靠后的阶段了,系统主要功能是计费和向B端的汇总。 二、问题描述 近年来自营计费数据量大增,有百亿的数据量,一天中汇总占…

Docker进阶篇-compose容器编排

一、描述 Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。需要定义 一个YAML格式的配置文件docker-compose.yml,配置好多个容器…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内

【UE Niagara】环绕在人物周围的闪电效果

效果 步骤 1. 首先下载一个螺旋形状的静态网格体并导入UE(地址:https://pan.baidu.com/s/1l9Bn5lQd7tDBu3CMs4c2aA?pwd7myr ) 2. 创建一个Niagara系统 使用Empty模板 这里命名为“NS_LightingAround” 打开“NS_LightingAround”&#xff0…

Matplotlib绘制炫酷柱状图的艺术与技巧【第60篇—python:Matplotlib绘制柱状图】

文章目录 Matplotlib绘制炫酷柱状图的艺术与技巧1. 簇状柱状图2. 堆积柱状图3. 横向柱状图4. 百分比柱状图5. 3D柱状图6. 堆积横向柱状图7. 多系列百分比柱状图8. 3D堆积柱状图9. 带有误差线的柱状图10. 分组百分比柱状图11. 水平堆积柱状图12. 多面板柱状图13. 自定义颜色和样…

STC系列单片机的中断系统

目录 一、中断系统的定义 二、STC15系列单片机的中断请求源及结构图 三、中断查询表以及触发方式 四、在keil c中如何声明中断函数 五、外部中断 六、基于STC15芯片实战中断系统的使用 (1)外部中断2/外部中断3来检测门的开关状态 (2&a…

Centos 内存和硬盘占用情况以及top作用

目录 只查看内存使用情况: 内存使用排序取前5个: 硬盘占用情况 定位占用空间最大目录 top查看cpu及内存使用信息 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…

RK3399平台开发系列讲解(内存篇)进程内存详解

🚀返回专栏总目录 文章目录 一、虚拟地址映射的物理内存1.1、物理内存1.2、虚拟内存1.2.1、用户态:低特权运行程序1.2.2、内核态:运行的程序需要访问操作系统内核数据二、PageCache三、指标查询命令沉淀、分享、成长,让自己和他人都能有所收获!😄 📢进程消耗的内存包…

车载充电器(OBC)氮化镓(GaN)驱动(高压高功率)设计(第四篇)

上图来自于网络 1、GaN FET概念 GaN FET,全称为Gallium Nitride Field-Effect Transistor(氮化镓场效应晶体管),是一种采用氮化镓(Gallium Nitride, GaN)材料制作的新型功率半导体器件。相较于传统的硅基…