赞
踩
在完成了对接口的unit test后,想着要对接口进行高并发测试,有两种方法:
这里选择了第二种,用JMeter去对接口进行压力测试,所以这篇文章会简单说一说如何使用JMeter进行压力测试。
要求JDK1.8及以上。
文章介绍是在windows环境下安装JMeter
打开Apache JMeter的官网
点击下载
选择下载JMeter的压缩包,可以看到要求是Java 8+
下载完后,对压缩文件进行解压
配置环境变量
对桌面我的电脑右键 – 属性 – 高级系统设置 – 环境变量
配置JMETER_HOME,点击系统变量的新建,变量名直接复制这个:JMETER_HOME
,变量值:输入我们解压后放置JMeter文件的位置,找到文件位置后点击一下路径栏直接复制过来就可以了
配置CLASSPATH,一样的位置,从系统变量中找到你的CLASSPATH,然后直接将这一段添加在你的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 文件
我们需要看到两个框框 -cmd窗口 -JMeter窗口
如果执行完上面的步骤都成功了,那么也就意味着可以真正开始JMeter之旅了。
首先对于和我一样的初学者来说,建议大家先把JMeter的语言切换成中文,主要目的是先熟悉一下软件,知道软件有哪些功能,熟悉一下就马上换回英文版的,在测试的时候使用英文版才是正道。这一块大家不需要跟着我一样设置,而是要根据自己想测试的接口,按照自己的思路设置,下面我会带领大家看一下会经常设置的地方。
切换JMeter语言的位置:
那么接下来我也会用中文的JMeter带大家设置一下,最后会换回英文版本。
首先我们点击添加线程组,建立线程组的目的是为了模拟高并发的场景,这边忽略两个图片中我已经建好的线程组。
创建好之后呢,我们看一下对于线程组我们能设置什么:
添加http请求是为了对接我们的要测试的接口,对我们的线程组点右键,创建一个http请求。
同样看一下我们能对http请求设置什么:
当我们使用post并且将数据写在body里面的时候,我们需要在http请求里面设置数据上传方式为 消息体数据
,并且需要添加一个Http信息头管理器的信息:
对我们的http请求右键 – 添加 – 配置元件 – HTTP信息头管理器
我们将json数据格式填入进去:
现在我们回到http请求,将请求方式设置为POST,传输数据方式设置为 消息体数据,并且将我们的body内容填充进去:
当我们测试完后,我们可以设置自己想要查看的结果展示报告。
如果不添加断言,那么我们所有的执行都会通过,这就无法分辨哪些线程执行成功了哪些失败了。
我们添加响应断言作为例子:
我们看看可以设置什么:
在测试模式里面我们点击了添加,然后根据我们接口的返回值格式,设定当success
为true
的时候,说明我们的测试时成功的。
我们可以通过添加同步定时器去模拟请求量激增的场景,类似秒杀业务。
对http请求右键 – 添加 – 定时器 – 同步定时器:
我们看看我们能对同步定时器设置什么:
模拟用户组数量:并发线程数,我们需要注意它和http请求里面我们设置的线程数的大小比较,最好别比http请求设置的大;
超时时间:当设置为0,定时器会一直等待到线程数量达到上面设置的模拟用户组数量后,才释放线程,所以如果你的http请求设置中线程的数量小于模拟用户组数量,并且超时时间设置为0,那么就会因为达不到线程数而一直等待,需要手动去停止测试;如果设置非0,那么当定时器等待到这个设置时间了,就不会继续等下去而是直接释放线程。
当我们去创建用户的时候,我们需要用户名不一样吧,我们有两种方式去做这种情况的测试,第一种我们有测试用的CSV文件,那么我们就可以直接添加CSV文件,做一个参数对应就完事了;第二种是试用JMeter的随机函数。这里我们先将用函数去处理。
我们有两种方式去打开函数助手:
点击tools – 函数助手对话框;
直接点击那个白色笔记本样的图标。
打开后,我们去找到Random函数:
这里有4种可以选择,大家可以去研究一下。
那么我们这里用随机一个字符串(__RandomString)举例:
我们可以设置随机出来的字符串长度、随机备选的字符串集、点击生成按钮查看一下随机出来的数据是什么样的。
在我们根据生成结果判断随机函数正确后,我们将它拷贝到我们的body中对应的用户账户account里,这里注意两边的双引号不能省略,要不会报错。
body中添加随机函数后:
{
"account":"${__RandomString(1,abcdefghijk,)}",
"title":"leo!"
}
如果我们有测试用的CSV文件,那么我们就可以更定制化的使用测试用例了。
对HTTP请求右键 – 配置元件 – CSV数据文件设置:
让我们来看看如何设置CSV文件:
点击浏览,找到我们的CSV文件位置。
设置文件编码格式。
设置变量名的匹配。
对body中我们对应的字段做匹配
假设我们在变量名称那一栏设定了2个变量 :account,title ,那么我们要在body中做对应的匹配,注意旁边的双引号哦。
匹配后的body:
{
"account":"${account}",
"title":"${title}"
}
在我们根据自己的接口定制化的设定好上面的步骤后,我们点击启动按钮进行启动:
启动后,我们点击之前设置的报告,就可以看到结果啦:
最后,我们将测试结果清除掉:
测试是不会一帆风顺的,当我们出现了错误,一般有两种方式去进行排查:
快,先将JMeter改回英文版本,熟悉完了就换回去啊喂!
这篇文章也是我在研究JMeter一天内写出来的,所以JMeter肯定不止于此,需要大家去多多发掘,根据自己遇到的问题和需要去搜索一下哈哈,可能我也有说的不对的地方,见谅~
不过这篇文章从头到尾大概把可能用到的地方都说了一下,应该能满足很多情况的测试了,大家要开动脑筋多去实际操练操练哈。
祝好!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。