压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤。

工具—JMeter

JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境,本文就不讲不如安装JAVA环境了。.

可以直接从网上下载相关压缩包,解压后在bin目录下找到jmeter.bat文件打开使用。


打开后界面:

可在Options/ChooseLanguages里切换语言,方便使用。

使用流程

1、右键TestPlans选择添加/线程(用户)/线程组:


已创建好好线程组,进入线程组设置页面:

 

各参数意义:

1.线程数:并发数。
2.Ramp-Up Period (in seconds):并发用户加载时间。
3.循环次数:并发执行循环次数,一次测试下,总的请求数量=线程数 * 循环次数;“永远”勾选上后循环一直进行,直到手动选择停止。

Ctrl + S保存后会生成一个.jmx文件,方便存取。

2、右键线程组→添加→取样器→http请求。


选择后打开http请求设置窗口:


 

1.协议:请求协议类型,设置为http或https。如图为http。
2.服务器名称或ip:具体的ip地址(如:192.168.xx.xx)或域名(如:xx.com)
3.端口号:顾名思义,所用端口号(如:80)
4.方法:即请求方式,常用的如get post等
5.路径:所测试接口具体路径。
6.参数:请求具体的参数。(! ! 注:参数设置之后一定要 ctrl+s保存!)


以post类型json传参为例:在下方添加信息头,设置名称为:content-type;设置值为:application/json。

3、右键线程组→添加→监听器→查看结果树/汇总报告/聚合报告:

 

添加完成后,可看到左侧目录树结构:



之后可以点击上方工具栏绿色三角运行。

4、选择结果树查看各个请求信息。也可以查看汇总报告和聚合报告

聚合报告各个参数意义

Label----每个请求的名称,比如HTTP请求等

#Samples----发给服务器的请求数量

Average----单个请求的平均响应时间 毫秒ms

Median----50%请求的响应时间  毫秒ms

90%Line----90%请求响应时间 毫秒ms

95%Line----95%请求响应时间 毫秒ms

99%Line----99%请求的响应时间 毫秒ms

Min----最小的响应时间 毫秒ms

Max----最大的响应时间 毫秒ms

Error%----错误率=错误的请求的数量/请求的总数

Throughput----吞吐量即表示每秒完成的请求数

Received KB/sec----每秒从服务器端接收到的数据量

Sent KB/sec----每秒从客户端发送的请求的数量

90%Line的含义:

假如:

有10个数:

1、2、3、4、5、6、7、8、9、10    按由大到小将其排列。

求它的第90%百分位,也就是第9个数刚好是9 ,那么他的90%Line 就是9 。

另一组数:

2、2.1、2.5、3、3.4、3.4、4、4、4、4、5、5、5、5.9、5.91、6.8、8、12、24、24.1   按由大到小将其排列。

求它的第90%百分位,第18个数是12 么,他的90%Line 就是12。 

再来解释90%Line 

一组数由小到大进行排列,找到他的第90%个数(假如是12),那么这个数组中有90%的数将小于等于12 。

用在性能测试的响应时间也将非常有意义,也就是90%用户响应时间不会超过12 秒。

线程数量和循环次数将会影响最终的测试报告,请大家多多测试。