快速掌握jmeter(一)——实现自动登录与动态变量

网友投稿 1264 2022-08-30

快速掌握jmeter(一)——实现自动登录与动态变量

快速掌握jmeter(一)——实现自动登录与动态变量

jmeter作为性能测试中最常见的一种工具,如果接口数量不在很多的情况下,通过在jmeter中直接进行录入即可。

当遇到需要对许多接口处理的场景,想要做到简单高效,往往就需要借助jmeter中提供的组件来进行配合使用。

这里根据我这几天遇到的一些场景,对jmeter中比较常用的几个使用组件进行一个记录。

自动登录

有时可能需要在jmeter中模拟多个用户进行访问,所访问的接口中也需要带上登录后的token信息。

举个例子: 输入用户名和密码后,返回一个token,之后每个接口调用时需要将此token放到请求的header中。

知识点

​​HTTP_Header_Manager​​​​Functions and Variables​​​​jsON_Extractor​​

实现方式

这里以一个登录接口和一个获取用户信息接口为例

登录接口:

​​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​​

对于复杂流程,登录部分也可以使用控制器中的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 fileCheck : use GUI mode for load testing !, only for Test creation and Test debugging.

主要是说:不要在GUI模式下进行压力测试,GUI模式下仅仅用于测试用例的创建和调试

当在命令行模式下运行jemter时,由于没有界面,想要让某些信息在每次运行jmeter命令时进行传入,如果传入的参数不多,则可以用-J参数来进行处理。

知识点

​​__P​​​​-J​​​​How to reference variables and functions​​

实现方式

这里以动态设置线程数为例,想要做到线程数量由运行时输入,我们可以这样操作:

先在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次,说明变量信息生效了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:力扣刷题之求两数之和
下一篇:Golang六款优秀Web框架对比(golang web 框架)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~