您的位置:首页 > 其它

JMeter学习(一)JMeter的基本使用

2020-02-02 14:31 531 查看

一、JMeter下载及配置

下载JMeter压缩包

下载地址:http://jmeter.apache.org/download_jmeter.cgi

下载安装JDK

根据下图JMeter要求的Java版本来下载对应的JDK:

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

环境变量配置

1.JDK设置:

系统变量新建JAVA_HOME,值为:jdk安装目录,如:C:\Program Files\Java\jdk1.8.0_152
系统变量新建CLASSPATH,值为: %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
修改系统变量“Path”的值,开始处加上:%JAVA_HOME%/bin

2.JMeter设置:

系统变量新建JMETER_HOME, 值为Jmeter路径,如:D:\apache-jmeter-4.0
修改CLASSPATH,添加:%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar

二、JMeter基本操作

JMeter解压后,直接打开bin目录下的jmeter.bat即可启用GUI模式。

接下来会通过实例,设计一个基本的JMeter测试脚本;

首先,我们看接口信息:

如图,接口文档中包含的内容有:

1.接口说明:设备注册;通过提交设备的三个信息,得到设备did的返回
2.调用URL:http://xxx/dev/devices
3.请求方法:POST
4.请求参数:passcode、mac、product_key
5.响应参数:did

下面以提问题的形式,一步一步学习JMeter的基本使用:

切换中文显示:

1.如何发送HTTP请求?

1)首先添加线程组

2)添加HTTP请求默认值

HTTP请求默认值可以设置其作用范围内的所有HTTP的默认值,包括HTTP请求的host、端口、协议等。


3)添加HTTP请求


注意:部分接口有请求头header。
标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,一般存放cookie、token等信息(本文的接口就是用于获取token)。

一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。

二、如何分析结果?

添加监听器,常用的监听器有:
查看结果数、聚合报告、汇总报告、用表格查看结果等。
1)添加查看结果树

2)添加聚合报告

3)启动测试计划,验证返回结果是否正确



三、如何进行断言?

接下来可以进一步完善测试计划,比如添加一个响应断言;


四、如何设置参数化?

如果要模拟多个设备并发注册的场景,需要修改请求参数中的mac地址(mac地址不可重复),可通过设置mac的参数化来实现(参数化的方式有很多,本文示范通过CSV数据文件设置实现参数化)。
1)添加CSV数据文件设置

2)在本地准备测试数据的文本文件

3)配置元件

4)在请求中引用该参数

引用方法是${},{}内写入参数化中的变量名称。

五、如何设置运行场景?

对线程组进行设置如下:

其它场景中, 可能还需要考虑每个请求之间的时间间隔,称为“思考时间”。可以通过固定定时器来实现。
定时器的作用域:定时器是在每个sampler之前执行的,而不是之后(无论位置在sampler之前还是下面);当执行一个sampler之前,所有当前作用域内的定时器都会被执行;如果希望定时器仅应用于其中一个sampler,把定时器作为子节点加入。

六、如何实现“绝对”并发?

大家在使用JMeter测试的时候应该能发现,绝对的并发是很难实现的,例如将线程组的运行场景设置如下:


虽然这种方式可以实现“绝对”并发,但是很消耗机器的性能,无法支持较大的并发数。

我们可以通过集合点的方式来解决。

集合点可以理解为跑道上的起跑线,比赛开始前大家都要在起跑线上一字排开,只有等裁判发号施令后,大家才能一起出发。集合点就是起跑线,先将所有线程(选手)阻塞,满足条件后再一起释放,达到并发的效果。

1)添加集合点

2)设置

模拟用户组的数量:一般设置为线程租中的线程数,确保设置的值小于等于它所在线程组包含的用户数。
超时时间:即多少毫秒后同时释放已集结的的线程,发送测试请求。

如果此处设置为11和0,则永远无法满足集合条件,因为前面线程组中设置的线程数为10,最大集合数就是10。
但是如果设置了超时时间,则不管是否够数,超过设置时间后都会发送已经准备好的请求;比如设置为11和100,则100毫秒后会发送已经集合好的10次请求,不再等候。
超时时间可以理解为“过期不候”,没有及时报名参加比赛的选手取消比赛资格,已报名的选手在报名时间截至后直接开始比赛不用再等待。

七、执行测试计划

通过上面的一顿操作,就实现了一个并发数为10的设备注册场景。
查看测试结果吧!

本文结束~

写在最后

本来这个模块想要命名为《性能测试学习(一)JMeter的基本使用》,但后来越发觉得性能测试并非简单的学会使用某个工具,或者说实现某个并发场景就能够拍着胸脯说自己学会了性能测试。
性能测试更多需要学习和掌握的是一种思维。
就好像去年看了几个用ipad+apple pencil作为工具画画的牛逼视频,就也买回来打算学画画,结果发现自己缺的不是牛逼的工具,是一双牛逼的手呀!

参考:https://blog.csdn.net/zhuxy604/article/details/81012477

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
娜么欢乐 发布了4 篇原创文章 · 获赞 1 · 访问量 111 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: