压力测试 - Apache JMeter使用教程

1. 下载

  • 官网下载:https://jmeter.apache.org/download_jmeter.cgi
  • 本人云存储下载:https://linta0.lanzout.com/imMvp05q3ing
    密码:cyp1

下载完后,直接解压
压力测试 - Apache JMeter使用教程_第1张图片

2. 修改配置

因为JMeter默认是英文的界面,本人英文水平不好,所以将其修改为中文界面
找到图片中的文件:jmeter.properties
压力测试 - Apache JMeter使用教程_第2张图片


修改下面两个地方:

language=zh_CN

中文

sampleresult.default.encoding=UTF-8

在这里插入图片描述

3. 启动

找到 bin 目录下的 ApacheJMeter.jar
再此目录下进入 cmd 模式
输入:

java -jar ApacheJMeter.jar

此时会先出现一个小黑屏,然后再出现可视化界面,可视化界面如下:

压力测试 - Apache JMeter使用教程_第3张图片

在没有修改主题的情况下,首次启动时,界面应该是黑色背景的。大家可以通过修改下图的地方来选择自己喜欢的主题
压力测试 - Apache JMeter使用教程_第4张图片


注意:启动时,小黑屏会出现“Don’t use GUI mode for load testing !, only for Test creation and Test debugging”的提示,无需理会,文章下面会进行说明。能看到上述的可视化界面即为启动成功

4. 可视化界面 - 使用教程

4.1 添加线程组

压力测试 - Apache JMeter使用教程_第5张图片


对上述添加的线程组进行配置:
压力测试 - Apache JMeter使用教程_第6张图片

  • 如果后续不进行保存的话,名称和注释可以不用管
  • 线程数:1000,表示在启动时会开启1000个线程,分别向每一个接口进行请求
  • Ramp-Up时间(秒):表示每一个线程启动之间的间隔时间,设置为0意味着并发请求
  • 循环次数:表示将上述的1000次并发请求循环3次

4.2 新建HTTP请求

压力测试 - Apache JMeter使用教程_第7张图片


配置上述新添加的HTTP请求:
压力测试 - Apache JMeter使用教程_第8张图片
根据个人的项目,配置本次HTTP请求的:

  • 服务器名称或IP
  • 端口号
  • 请求类型
  • 请求路径
  • 参数的名称和相对应的值

4.3 添加结果树

压力测试 - Apache JMeter使用教程_第9张图片
结果树用于查看发出请求后,响应的数据和结果
压力测试 - Apache JMeter使用教程_第10张图片

4.4 添加汇总报告

汇总报告和结果树的添加在同一处,此处不在以图片的形式说明

在每一个HTTP请求中添加汇总报告,此时汇总的是这一个HTTP请求的统计数据
在线程组中添加汇总报告,则是查看线程组下所有HTTP请求中的统计数据

此处展示单个HHTP请求的汇总报告
压力测试 - Apache JMeter使用教程_第11张图片

5. 命令行模式 - 使用教程

5.1 介绍

在启动JMeter时,出现”Don’t use GUI mode for load testing !, only for Test creation and Test debugging“提示。是提示我们不要在在可视化界面下进行压力测试

因为压力测试时,会消耗大量的内存,而可视化界面本身就需要占用较多的内存。所以在启动时,JMeter会提示我们不要在可视化模式下进行压力测试

真正的压力测试,应该是在可视化模式下添加好相关的线程组和所需测试的HTTP请求。然后转到命令行模式进行测试

5.2 使用

当添加好线程组和对应的HTTP请求后,将其另存为**.jmx**文件
进入bin目录,打开cmd窗口,输入如下命令:

jmeter -n -t A -l B -e -o C

解释:

  • A:.jmx 文件所在路径
  • B:生成 .jtl 测试报告文件所存放的路径
  • C:生成HTML测试报告文件所存放的路径

注意:.jtl 报告和HTML报告的存放路径必须为空

5.3 HTML报告简要分析

下面以本人一个项目中的测试报告来举例分析
在本次测试中,以并发的方式(Ramp-Up为0),给项目的57个接口分别发送了1000个请求,并循环了3次
生成后的HTML报告,目录如下:
压力测试 - Apache JMeter使用教程_第12张图片


打开上图中的index.html,首页如下:
压力测试 - Apache JMeter使用教程_第13张图片
Apdex:性能指标;取值范围为0~1;0.8表示在并发请求下,有80%的请求响应时间是满足JMeter中所设置的用户需求

Requests Summary:请求总结;表示成功与失败请求之间的占比。PASS表示请求成功,FAIL表示请求失败。图中显示在压力测试下,有99.76%的请求是成功的,只有0.24%的请求是失败的

Statistics:数据分析

  • Samples:总共发送的请求数在循环3次后为171000次
  • FAIL:失败的请求次数为413
  • Error:请求失败率为0.24%
  • Average:平均响应时间为460.72ms
  • Min:最小响应时间为3ms
  • Max:最大响应时间为6740ms
  • Median:每次请求的平均响应时间为173ms
  • 90th pct:90%用户响应不超过527ms
  • 95th pct:95%用户响应不超过700.95ms
  • 99th pct:99%用户响应不超过1251.99ms
  • Throughput:吞吐量;每秒完成请求数为1935.88次
  • Received:每秒接收到的数据量为1090.62KB
  • Sent:每秒发送的请求数为342.8

注意:在测试前,设置给每个接口1秒内发送1000个请求。但是由于服务器的资源有限,无法同时向所有的接口同时发出这么多次的请求。所以在上述测试报告的分析中,Sent的值才是每秒实际的请求量

在报告中,还存在许多图表,大家可以去该网站详细了解每个图表的意思:

https://cloud.tencent.com/developer/article/1635133

你可能感兴趣的:(第三方,压力测试,apache,java)