Jmeter接口测试和Jmeter接口自动化测试

news2024/9/23 1:36:00

一、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/1678497.html

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

相关文章

DBeaver如何csv导入数据

简言之先要创建任务,任务还需要去执行,只有执行之后才是执行真的导入了 那个保存任务真的很误导人啊 1.首先点击你要被导入的表,右键选择导入数据然后选择直接点击下一步,这个地方需要修改格式,否则会乱码 如果你导入的没有标题…

IO系列(四) - RandomAccessFile 类解读

一、摘要 RandomAccessFile 类,也被称为随机访问文件类。 RandomAccessFile 可以说是 Java 体系中功能最为丰富的文件操作类,相比之前介绍的通过字节流或者字符流接口方式读写文件,RandomAccessFile 类可以跳转到文件的任意位置处进行读写数…

买了个彩票,哈哈哈哈哈。

买了个彩票-双色球,发现挺有意思的。 索性把双色球的所有期的中奖号码的数据都爬了下来,03至今,21年了。txt文本,6.5MB大小。 大家有啥好的建议,分析一下数据呢。

字节跳动在2024年春季火山引擎Force原动力大会上隆重推出了“豆包大模型”家族

此次大会以AI为主题,聚焦大模型的应用与发展,旨在引领AI技术的落地和推动各行各业的数字化转型。 字节跳动官网:https://www.bytedance.com/zh/ 豆包官网:https://www.doubao.com/chat/ 更多消息:https://heehel.co…

洗衣洗鞋店做小程序有什么优势?

互联网洗衣洗鞋小程序闪亮登场,想知道这款小程序有何魅力吗? 如今,众多商家纷纷推出预约上门洗鞋服务,💁‍♀️并倾力打造洗鞋小程序,旨在拓展线上销售渠道。🌟那么,这款洗鞋小程序究…

2025秋招Java还是c++?

一、我的编程经 说说我的编程经历,在C和Java之间我经历了几个阶段: 大学期间,我浅尝辄止地学习了一段时间的Java,但后来放弃了,开始学习C/C。本科毕业后,我选择攻读硕士学位,并一直专注于C的学…

3种深拷贝实现,你都知道吗?

目录: 1、JSON.parse 2、structuredClone 3、cloneDeep

冒险岛vcruntime140_1.dll无法继续执行代码要怎么处理?教你一键修复vcruntime140_1.dll

当你在玩着冒险岛的时候,突然弹出一个vcruntime140_1.dll无法继续执行代码,这时候你是不是一脸懵逼?不知道怎么去解决?其实不需要担心,这是一个小问题,vcruntime140_1.dll文件是一个非常常用的dll文件&…

企业架构系统之-IT系统建设如何做好技术选型

背景 近日有幸与行业同仁交流工作心得,在讨论中,他们提到一个平时工作当中我们都会遇到和经历的一个问题:作为架构师,在日常工作中应如何进行技术选型?面对众多框架和组件中,我们又应如何选择,…

【更新公告】AirtestIDE更新至1.2.17版本

本次更新为AirtestIDE、Airtest-Selenium库更新。 AirtestIDE更新至1.2.17版本,AirtestIDE内置库Airtest更新为1.3.3.1版本,Poco更新为1.0.94版本,主要支持了selenium4.0以上版本,ADB更换为41版本,Airtest新增点击和滑…

“网络安全新纪元:等保2.0的详细解读与实践”

网络安全等级保护基本要求》(等保2.0)于2019年6月发布,是我国网络安全等级保护制度的一项重要标准。等保2.0主要针对关键信息基础设施的网络安全保护,对数据安全和个人信息保护提出了更高的要求。本文将对等保2.0进行详细解读&…

Pytorch入门实战 P10-使用pytorch实现车牌识别

目录 前言 一、MyDataset文件 二、完整代码: 三、结果展示: 四、添加accuracy值 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 本周的学习内容是&#xff0…

【永洪BI】管理系统

管理系统模块包括系统设置、认证授权、日志管理、监控预警、资源部署、VooltDB管理、数据库管理、企业应用配置、系统检查、应用管理模块。 系统设置界面: 可以进行清除系统缓存、配置系统主题、配置系统邮箱、配置门户主页、配置权限管理系统、配置密码策略、配置…

端午佳节,品尝食家巷传统面点与黄米粽子礼盒

端午佳节,品尝食家巷传统面点与黄米粽子礼盒 在这个端午节来临之际,食家巷倾情推出一款别具特色的端午礼盒,将甘肃的传统面点与地方特色黄米粽子完美融合,为您带来一场美味与传统的邂逅。 这款礼盒以甘肃传统面点一窝丝、油饼和烤…

Python 渗透测试:子域名查询.

什么是 子域名查询. 子域名查询是指通过域名系统(DNS)查找某个域名下的子域名信息。子域名是域名层级结构中的一部分,位于主域名的下一级。子域名查询是网络安全评估和渗透测试中的一个重要步骤,可以帮助安全研究人员更好地了解目标系统的架构和潜在的安全隐患。但在进行子域名…

svn批量解锁

问题 svn对文件进行checkout之后,先进行lock,之后再去更改,最后进行Commit操作; 上述为我们通过svn管理代码的正常方式,但总会有其他现象发生; 如果我们非正常操作,批量锁所有的svn文件&#x…

Pencils Protocol 宣布再获合作伙伴 Galxe 的投资

近日,Scroll生态项目Penpad将品牌进一步升级为Pencils Protocol,全新升级后其不仅对LaunchPad平台进行了功能上的升级,同时其也进一步引入了Staking、Vault以及Shop等玩法,这也让Pencils Protocol的叙事方向不再仅限于LaunchPad&a…

刘邦的创业团队是沛县人,朱元璋的则是凤阳;要创业,一个县人才就够了

当人们回顾刘邦和朱元璋的创业经历时,总是会感慨他们起于微末,都创下了偌大王朝,成就无上荣誉。 尤其是我们查阅史书时,发现这二人的崛起班底都是各自的家乡人,例如刘邦的班底就是沛县人,朱元璋的班底是凤…

openlayers 热力图 天地图

openlayers 实现热力图 样式可调 在https://blog.csdn.net/qq_36287830/article/details/131844745?spm1001.2014.3001.5501基础上改进来的 最终样式 关键代码 如果你有数据可以不使用for循环 var blurInput document.getElementById("blur");var rediusInput do…

sa-token权限认证框架,最简洁,最实用讲解

查看源码,可知,sa sa-token框架 测试代码源码配置自动装配SaTokenConfigSaTokenConfigFactory SaManager工具类SaFoxUtilStpUtilSaResult StpLogic持久层定时任务 会话登录生成token创建account-session事件驱动模型写入tokenSaSessionSaCookieSaTokenDa…