当前位置:网站首页>快速掌握jmeter(一)——实现自动登录与动态变量
快速掌握jmeter(一)——实现自动登录与动态变量
2022-08-02 18:41:00 【水中加点糖】
jmeter作为性能测试中最常见的一种工具,如果接口数量不在很多的情况下,通过在jmeter中直接进行录入即可。
当遇到需要对许多接口处理的场景,想要做到简单高效,往往就需要借助jmeter中提供的组件来进行配合使用。
这里根据我这几天遇到的一些场景,对jmeter中比较常用的几个使用组件进行一个记录。
自动登录
有时可能需要在jmeter中模拟多个用户进行访问,所访问的接口中也需要带上登录后的token信息。
举个例子:
输入用户名和密码后,返回一个token,之后每个接口调用时需要将此token放到请求的header中。
知识点
实现方式
这里以一个登录接口和一个获取用户信息接口为例
登录接口:
http://localhost:8080/user/login
其参数为username和password,当用户名和密码匹配成功后,会返回一个token。访问其他接口时需要带着这个token传入到请求的header中

获取用户信息接口:
http://localhost:8080/user/info

在jmeter中想要做到登录后自动获取出token信息,可利用jmeter中的变量和json_extractor来进行搭配,做到自动提取出token信息。
具体操作如下图:
JSON Extractor后置处理
在登录接口中添加一个后置处理器(post processor)中的JSON Extractor,在JSON Path expressions中填写对应的提取语句
以下面这个返回json结构为例
{
"code": "200",
"data": {
"token": "thisistoken"
}
}
其对应的json路径(详细语法说明可以参考JsonPath)表达式则为:$.data.token
同时在Name of created variables中输入一个变量名称,名称可以随便取,如这里将它命名为token
这样处理好了之后,当执行完了登录接口后,后置处理器就会将服务端返回的token定义为变量token了,之后便可以在其他地方使用这个变量
变量使用
在需要用到变量的地方,使用系统中的变量,如在获取用户信息接口中需要传入token信息,则在对应的请求头管理器中传入使用即可。如上图中的${token}
变量详细使用方式可参考:Functions and Variables
当完成操作后,点击运行,便可看到最终的运行结果情况了。从上图的步骤3中可以看出,自动登录到接口访问一气呵成了。
对于复杂流程,登录部分也可以使用控制器中的Only Once Controller包装一下再进行使用。
变量信息由用户启动时传入
如果是在GUI界面中打开jmeter,我们仔细观察的话,是可以看到有这么一段话的:
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
主要注意这句话:Don’t use GUI mode for load testing !, only for Test creation and Test debugging.
主要是说:
不要在GUI模式下进行压力测试,GUI模式下仅仅用于测试用例的创建和调试
当在命令行模式下运行jemter时,由于没有界面,想要让某些信息在每次运行jmeter命令时进行传入,如果传入的参数不多,则可以用-J参数来进行处理。
知识点
实现方式
这里以动态设置线程数为例,想要做到线程数量由运行时输入,我们可以这样操作:

先在jmeter中添加一个Config Element中的User Defined Variables,在其中对变量信息进行管理。如上图中定义了一个名为threadNum的变量,其值为:
${__P(threadNum,1)}
它的意思是指threadNum的值通过用户传入,默认值为1。
随后在使用到需要使用到它的地方直接使用用户变量即可。
这里仍然以前面用户登录和获取用户信息的实例,来测试一下。

输入jmeter的运行命令:
.\jmeter -n -t C:\Users\ping\Desktop\temp\jmeterTest.jmx -l C:\Users\ping\Desktop\temp\report\result.txt -e -o C:\Users\ping\Desktop\temp\report -JthreadNum=3
其中-t后面为jmeter的测试用例jmx文件的路径,-l为本次测试的日志文件输出路径,-o后为测试报告生成的路径。
具体参数信息可以查看官方的说明文档:options
-JthreadNum=3为变量threadNum的值,这里指定为3。对应上面的实例,对应的每个接口所运行的线程数也为3个。
执行结果
运行完后,打开jmeter生成的测试报告看一下运行结果:

从报告中也可以看出每个测试接口也都执行了3次,说明变量信息生效了。
边栏推荐
猜你喜欢

selenium installation and environment configuration firefox

mongodb的游标

Win11主题下载一直转圈怎么办?Win11主题下载一直转圈的解决方法

AtomicInteger详解

阿里测试8年经验,靠着这份理解,我才得以生存下来

From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"

LeetCode 2343. 裁剪数字后查询第 K 小的数字

「日志」深度学习 CUDA环境配置

EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?

Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)
随机推荐
安装Mac版Mysql卡在Installation阶段,彻底清理mysql并重装mysql
What skills are the most practical for college students in communications?
通信大学生走向岗位,哪些技能最实用?
为何国内年轻人都抢购iPhone,因为它更实惠也更亲民
Win11主题下载一直转圈怎么办?Win11主题下载一直转圈的解决方法
共享平台如何提高财务的分账记账效率?
【C语言刷题】Leetcode203——移除链表元素
Boyun Selected as Gartner China DevOps Representative Vendor
力扣 622. 设计循环队列
TSF微服务治理实战系列(一)——治理蓝图
MYSQL关键字执行顺序?
深入理解IO流(第一篇)
论文阅读_胶囊网络CapsNet
Mppt photovoltaic maximum power point tracking control matlab simulation
视频隐写一
Electronic Industry Inventory Management Pain Points and WMS Warehouse Management System Solutions
元旦快乐(2022)
情景剧《重走长征路》上演
香农与信息论三大定律
【C语言刷题】牛客网刷题——替换空格