一、JMeter下载及配置

下载JMeter压缩包

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

jmeter添加mysql驱动_参数化


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

jmeter添加mysql驱动_JMeter_02


下载地址: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测试脚本;

首先,我们看接口信息:

jmeter添加mysql驱动_性能测试_03


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

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

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

切换中文显示:

jmeter添加mysql驱动_性能测试_04


1.如何发送HTTP请求?1)首先添加线程组

jmeter添加mysql驱动_JMeter_05


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

jmeter添加mysql驱动_jmeter添加mysql驱动_06


jmeter添加mysql驱动_集合点_07


3)添加HTTP请求

jmeter添加mysql驱动_jmeter添加mysql驱动_08


jmeter添加mysql驱动_JMeter_09


注意:部分接口有请求头header。

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

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

二、如何分析结果?

添加监听器,常用的监听器有:

查看结果数、聚合报告、汇总报告、用表格查看结果等。

1)添加查看结果树

jmeter添加mysql驱动_集合点_10


2)添加聚合报告

jmeter添加mysql驱动_参数化_11


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

jmeter添加mysql驱动_jmeter添加mysql驱动_12


jmeter添加mysql驱动_jmeter添加mysql驱动_13


jmeter添加mysql驱动_性能测试_14


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

jmeter添加mysql驱动_jmeter添加mysql驱动_15


jmeter添加mysql驱动_性能测试_16


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

1)添加CSV数据文件设置

jmeter添加mysql驱动_参数化_17


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

jmeter添加mysql驱动_集合点_18


3)配置元件

jmeter添加mysql驱动_jmeter添加mysql驱动_19


4)在请求中引用该参数引用方法是${},{}内写入参数化中的变量名称。

jmeter添加mysql驱动_性能测试_20


五、如何设置运行场景?对线程组进行设置如下:

jmeter添加mysql驱动_性能测试_21


其它场景中, 可能还需要考虑每个请求之间的时间间隔,称为“思考时间”。可以通过固定定时器来实现。

定时器的作用域:定时器是在每个sampler之前执行的,而不是之后(无论位置在sampler之前还是下面);当执行一个sampler之前,所有当前作用域内的定时器都会被执行;如果希望定时器仅应用于其中一个sampler,把定时器作为子节点加入。

jmeter添加mysql驱动_性能测试_22


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

jmeter添加mysql驱动_参数化_23


jmeter添加mysql驱动_jmeter添加mysql驱动_24


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

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

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

1)添加集合点

jmeter添加mysql驱动_集合点_25


2)设置模拟用户组的数量:一般设置为线程租中的线程数,确保设置的值小于等于它所在线程组包含的用户数。

超时时间:即多少毫秒后同时释放已集结的的线程,发送测试请求。

jmeter添加mysql驱动_集合点_26


如果此处设置为11和0,则永远无法满足集合条件,因为前面线程组中设置的线程数为10,最大集合数就是10。

但是如果设置了超时时间,则不管是否够数,超过设置时间后都会发送已经准备好的请求;比如设置为11和100,则100毫秒后会发送已经集合好的10次请求,不再等候。

超时时间可以理解为“过期不候”,没有及时报名参加比赛的选手取消比赛资格,已报名的选手在报名时间截至后直接开始比赛不用再等待。

七、执行测试计划

通过上面的一顿操作,就实现了一个并发数为10的设备注册场景。

查看测试结果吧!

jmeter添加mysql驱动_JMeter_27


jmeter添加mysql驱动_参数化_28

本文结束~

写在最后

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