一、环境搭建
1、安装java
安装jdk1.8:默认安装
配置环境变量:
新建系统变量JAVA_HOME 值:jdk的安装路径
jmeter性能测试 - 图1
在path变量中新增两个值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
jmeter性能测试 - 图2
验证java安装成功
jmeter性能测试 - 图3
2、安装jmeter
解压jmeter压缩包到指定路径
jmeter性能测试 - 图4
双击jemeter.bat打开jmeter
jmeter性能测试 - 图5
性能测试流程:
性能测试流程分为五个阶段,分别是【需求调研阶段】→【测试准备阶段】→【脚本开发】→【测试执行阶段】→【测试报告阶段】→【测试总结阶段】。

二、创建线程组执行测试
1、修改语言为中文
jmeter性能测试 - 图6

2、添加一个线程组
后续我们要添加的请求都是要放在线程组下的。线程组,也是进行性能测的基本组成单位。
jmeter性能测试 - 图7

3、为线程组添加请求
jmeter性能测试 - 图8
jmeter性能测试 - 图9
4、添加一个查看结果树
用来观察测试结果
jmeter性能测试 - 图10
jmeter性能测试 - 图11
5、添加一个聚合报告
聚合报告中,可以看到当前线程组执行的汇总情况
jmeter性能测试 - 图12
Label :当前测试的各个请求
Average:当前请求平均响应时间
Median:当前请求中位值,排在50%个请求的响应时间
90%:当前请求中位值,排在90%个请求的响应时间
95%:当前请求中位值,排在95%个请求的响应时间
99% :当前请求中位值,排在99%个请求的响应时间
Min : 最小响应时间
MAX:最大响应时间
Error:错误率
Throughput:tps,每秒事务处理数
Recive:接收到的字节
Sent:发送的字节

三、性能测试中需要重点关注的指标
Ø 响应时间
Ø 并发用户数
Ø 吞吐量
Ø TPS(每秒事物处理数)
系统吞吐量几个重要参数:TPS、并发数、响应时间(TPS = 并发数 / 平均响应时间)
Ø 资源利用率(cpu、内存)
jmeter性能测试 - 图13
jmeter性能测试 - 图14
jmeter性能测试 - 图15
响应时间:是指应用系统从发出请求开始到客户端接收到所有数据所消耗的时间,该定义强调的是所有数据都已经被呈现到客户端所花费的时间
TPS:Transactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可以一个接口、多个接口、一个业务流程等等。一个事务是指事务内第一个请求发送到接收到最后一个请求的响应的过程,以此来计算使用的时间和完成的事务个数。
以单接口定义为事务为例,每个事务包括了如下3个过程:
  a.向服务器发请求
  b.服务器自己的内部处理(包含应用服务器、数据库服务器等)
  c.服务器返回结果给客户端
  如果每秒能够完成N次这三个过程,tps就是N;
如果多个接口定义为一个事务,那么,会重复执行abc,完成一次这几个请求,算做一个tps。
Ø

四、jmeter性能测试常用的插件
1、下载jmeter-plugins-manager-1.4.jar,然后将该文件放到..\apache-jmeter-5.0\lib\ext路径下,然后重启jmeter
jmeter性能测试 - 图16
重启后,就可以使用第三方插件了
jmeter性能测试 - 图17

jmeter性能测试 - 图18
常用的插件如下:
Custom Thread Groups
该插件组可以提供额外模式的线程组,比如阶梯增加的线程组,做负载测试和压力测试是不错的选择。
PerfMon
该插件可以监听服务器的硬件性能,包括cpu、内存、网络情况等,但该插件需要配合服
务器端的ServerAgent使用。
3 Basic Graphs
该插件组中的插件可以将测试数据生成对应的图形。















Active Threads Over Time
监听单位时间内活动的线程数。其中横坐标是单位时间(单位是毫秒),纵坐标是活动线程数(也就是并发数)
jmeter性能测试 - 图19
Response Times Over Time
监听整个事物运行期间的响应时间。其中横坐标是运行时间,纵坐标是响应时间(单位是毫秒)
jmeter性能测试 - 图20
Transactions per Second
jmeter性能测试 - 图21
5 Additonal Graphs
jmeter性能测试 - 图22

Hits per Second


动态监听单位时间的点击率,也就是触发的请求数。其中横坐标是运行时间,纵坐标是HPS值。
点击率波动较大,且不能持续上升。说明性能很不稳定
jmeter性能测试 - 图23

2、监听服务器的性能
首先添加PrefMon监听器
jmeter性能测试 - 图24

jmeter性能测试 - 图25
java -jar ./CMDRunner.jar —tool PerfMonAgent —tcp-port 9000 —udp-port 9000
jmeter性能测试 - 图26

然后去服务器里打开监听用的软件。
jmeter性能测试 - 图27
jmeter性能测试 - 图28
jmeter性能测试 - 图29

3、Concurrency Thread Group
利用该线程组可以实现阶梯增压。
jmeter性能测试 - 图30
4、登录场景下的压力测试
jmeter性能测试 - 图31
jmeter性能测试 - 图32

五、jmeter分布式环境搭建
1 调度机和slave机要在同一个局域网下。
2 在调度机和slave机上都要安装相同版本的java和相同版本的jmeter
建议,直接将调度机上配置好的jmeter复制到slave机上
3 修改调度机的配置文件jmeter.properties(该文件在jmeter安装目录的bin目录下)
remote_hosts=Slave机器IP:端口(多台Slave机器则用英文逗号隔开)
server.rmi.ssl.disable=true
mode=Standard(开启标准模式可查看日志)
jmeter性能测试 - 图33
jmeter性能测试 - 图34
jmeter性能测试 - 图35
5、配置slave机
配置slave机,修改jmeter.properties:
server_port=端口
server.rmi.port=端口
server.rmi.ssl.disable=true

6、执行测试
测试之前,要开启所有的slave机
在jmeter路径的bin目录下,执行下列命名
./jmeter-server -Djava.rmi.server.hostname=当前slave机的IP地址
jmeter性能测试 - 图36

jmeter性能测试 - 图37
jmeter性能测试 - 图38

六、命令行执行性能测试
jmeter -n -t 待测脚本.jmx -R slave机IP,slave2IP -l 测试结果.jtl

-n:使用命令行模式运行
-t:指定要运行的jmx脚本
-R:指定使用那些slave节点压测
-l:保存测试结果数据到指定文件
例:jmeter -n -t C:\Users\ZC\Desktop\test.jmx -l report.jtl -e -o C:\Users\ZC\Desktop\result
参数说明:
)n:非GUI模式执行JMeter;)t: 脚本文件(.jmx文件)的路径;)l: 指定生成测试结果的保存文件(.jtl格式),此文件必须不存在;)e:测试结束后,生成测试报告;)o:用于存放测试报告的路径;