目录
0、JMeter简介
-
Apache JMeter是Apache软件基金会的基于java开发的压力测试工具。
- 用于对软件做压力测试,最初被设计用于web应用测试,但是后来扩展到其他测试领域
-
Apache JMeter可用于对静态的和动态的资源(文件、servlet、perl脚本、java对象、数据库和查询、ftp服务器等)的性能进行测试。
- 可用于对服务器、网络或者对象模拟繁重的负载来测试应用的强度
-
或者分析不同压力下的整体性能
-
JMeter的特点
- 1)能够对http和ftp服务器进行压力和性能测试,也可以对数据进行性能测试(通过jdbc, 当然通过专业的db工具会更好,但是jmeter也能做这件事情)
-
2)完全的可移植性和100%的纯java
-
3)完全Swing和轻量组件支持(预编译的jar使用 javax.swing.*)包
-
4)完全多线程,框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样
-
5)精心设计的GUI设计允许快速操作和更精确的计时
-
6)离线分析/回放测试结果
-
7)支持远程控制模式,即分布负载模式(多客户端 - 当单台负载不够时,多加几台客户机,一起加压/加负载)
-
JMeter支持的协议
- web应用:http、https
-
web service服务:soap/xml-rpc/rest service
-
数据库:通过jdbc驱动程序对数据库进行性能测试
-
LDAP目录服务
-
通过jms的面向消息的服务
-
pop3、smtp邮件服务
-
ftp服务
-
JMeter5.0新特性概述
- Restful增强【比如支持了put、delete等方法;可以支持用附文件的方式来发送json请求体(Body)】
-
分布式测试,对线程名的增强
-
Xpath2.0的支持
-
Scripts/debug增强【搜索替换功能的增强】
-
录制功能增强,增加了弹窗提示窗口,在录制过程中允许用户命名事务
-
Jmeter增加了restart功能
-
报表功能的增加和Bug修复等
-
。。。
-
JMeter如何运作?
- JMeter模拟一组向目标服务器【或者说被测应用】发送请求的用户
-
接受服务响应,通过图表、图形等返回统计信息,显示目标服务器/应用程序的性能/功能
-
JMeter组件
- 取样器、逻辑控制器、前置处理器、后置处理器等这些都叫组件
-
说白了,组件就是包含了一组元件
-
JMeter八大组件的概念
- 1)取样器
-
2)逻辑控制器
-
3)前置处理器
-
4)后置处理器
-
5)断言
-
6)定时器
-
7)配置元件
-
8)监听器
-
JMeter元件执行的顺序
- JMeter测试计划脚本呈树形结构排列
-
元件的执行顺序是先执行根节点,再执行子节点
-
在同一层次中,各个元件的执行顺序逻辑如下:
- 1)配置元件
-
2)前置处理器
-
3)定时器
-
4)取样器
-
5)后置处理器
-
6)断言
-
7)监听器
-
元件执行顺序注意:
- 定时器、断言、前置处理器、后置处理器只有在适用于有取样器的情况下才会按照顺序进行处理
- 如果你取样器都没有,何谈上面这些操作呢?
-
控制器和取样器按照在测试计划树中的顺序进行处理
-
其他测试元件根据其范围和测试元素的类型进行处理
-
如测试元件是同一种类型,则元件按照在树中出现的顺序进行处理
- 定时器、断言、前置处理器、后置处理器只有在适用于有取样器的情况下才会按照顺序进行处理
-
1、安装
-
JMeter要运行必须先配置jdk环境
# MacOS # xx @ xxdeMacBook-Pro in ~ [21:34:37] $ java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) # xx @ xxdeMacBook-Pro in ~ [21:34:40] $ which jmeter /Users/xx/Software/apache-jmeter-5.4.1/bin/jmeter # xx @ xxdeMacBook-Pro in ~ [21:34:56] $
2、JMeter目录
-
backups
- 脚本备份目录,存放.jmx的脚本文件
-
当然不建议你把脚本放这里咯
-
bin目录
- 可执行文件
- jmeter.bat, windows双击可以启动
- 这种是带终端的启动方式,如果你想看jmeter后台运行的一些日志(比如错误,异常等),可以选择这种
-
jmeter.cmd, 不带终端的启动方式
-
jmeter.sh, linux下启动脚本
-
jmeter-server.bat, windows分布式测试要用到的服务器配置
-
jmeter-server,linux分布式测试要用到的服务器配置
- jmeter.bat, windows双击可以启动
-
配置文件
- examples, 目录中有csv样例
-
jmeter.log, jmeter运行日志文件
-
jmeter.properties, 系统配置文件
-
- examples, 目录中有csv样例
- 可执行文件
-
docs
- 里面有个api目录,包括jmeter官方文档的API文档,主要用于二次开发
-
extras
- 扩展插件目录。
-
提供了对Ant的支持,可以使用Ant来实现自动化测试。
-
例如批量脚本执行,产生html格式的报表,测试运行时,可以把测试数据记录下来,
-
jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,
-
运行"ant -Dtest=文件名 report",就可以生成测试统计报表。
-
lib
- lib下存放有jmeter所依赖的外部jar包
-
ext子目录:
- 存放有jmeter的核心jar包
-
存放jmeter的第三方库的
-
junit子目录:
- 存放junit测试脚本
-
jmeter会自动在~JMETER_HOME/lib和ext目录下寻找需要的类
-
比如你要配置jdbc,那么你所依赖的.jar 包最好放进来
-
printable_docs
- 该目录存放的是jmeter官方提供的帮助文档
-
其他不用管了
-
JMeter改中文
- 1)临时生效, option ---> choose language ---> 选择中文即可。
-
2)改配置文件 bin/jmeter.properties
3、基本界面
4、常用的组件
-
线程组
-
配置元件
-
监听器
-
定时器
-
前置处理器
-
后置处理器
-
断言
-
取样器
-
控制器
-
测试片段
-
非测试元件
5、JMeter插件安装
-
下载插件:
-
放入~jmeter/lib/ext目录下后,重启jmeter,打开选项后,已经有了Plugins Manager
-
然后安装第三方的插件
- redis
-
websocket
-
json
-
Merge Results
-
PerfMon
-
装好插件后
6、server-agent
-
插件是客户端用的,服务器端得装个代理监控哈
-
下载地址:GitHub - undera/perfmon-agent: Server metrics fetching agent, based on SIGAR
-
下载好zip包后,上传到服务器,解压,然后直接启动 startAgent.sh即可
[root@ksie5mpd1rte5e2b ServerAgent-2.2.3]# ls
CMDRunner.jar lib LICENSE ServerAgent.jar startAgent.bat startAgent.sh
[root@ksie5mpd1rte5e2b ServerAgent-2.2.3]# ./startAgent.sh
INFO 2022-09-18 08:35:35.157 [kg.apc.p] (): Binding UDP to 4444
INFO 2022-09-18 08:35:36.157 [kg.apc.p] (): Binding TCP to 4444
INFO 2022-09-18 08:35:36.161 [kg.apc.p] (): JP@GC Agent v2.2.3 started
...
-
注意:
- 1)如果默认的启动后连接不上
- 检查防火墙,端口是否放开等
-
2)如果都没问题,换个端口,不要默认的4444,因为有些云服务器可能不放开这种端口
- ./startAgent.sh --udp-port 7879 --tcp-port 7879
- 1)如果默认的启动后连接不上
7、setenv配置
-
win下面以setenv.bat存在
-
linux下面以setenv.sh存在
-
主要用于一些jmeter启动的jvm配置,它是可以被命令行运行的时候的启动参数覆盖的
- 这里根据需要进行自定义,默认为1024m, 建议运行4G内存
rem This is the content of bin/setenv.sh
rem it will be called by bin/jmeter.sh
set JVA_ARGS=Xms2g -Xmx2g -Dpropname=your_name