jmeter是设计成作负载测试和性能评估的java应用。它可以测试的类型包括html
Web - HTTP,HTTPSjava
SOAP / REST 服务git
FTPgithub
经过JDBC的数据库shell
LDAP数据库
基于JMS的面向消息的中间件apache
邮件 - SMTP(s),POP3(s)以及IMAP(s)bash
shell脚本服务器
TCP性能
java对象
如下以TCP为主
下载完jmeter以后,进入jmeter源码目录
⇒ ls
LICENSE NOTICE README.md bin docs extras lib licenses printable_docs
复制代码
在当前目录下执行命令 ./bin/jmeter
即可以看到图形化的界面
线程组是是全部测试计划的起点。一切的controller和sampler都必须在线程组下面,其它的元素,好比listener,可能直接放在了测试计划下面,这种状况下它就适用于全部的线程组。线程组控制着
线程的数量
线程所有启动的时间
执行测试的次数
在sampler请求以前执行,通常它用来修改设置或者更新一些变量
用来发送请求给服务器,而且等待结果,Jmeter的sampler包括
FTP request
HTTP request
JDBC request
java object request
JMS request
JUnit Test request
Mail request
OS Process request
TCP request
用来校验请求的返回结果
它会被添加到请求,或者是修改请求
在sampler执行以后执行
自定义jmeter在发送请求时的一些处理逻辑
用来获取jmeter运行时搜集的信息,好比 Graph Result listener用来绘制返回时间
在每一个sampler执行前,延迟一段时间执行
JMeter的Properties定义在了 jmeter.properties,它是全局的
它对于每一个线程来讲都是本地的,若是在一个线程里面改变了,仅影响这个线程
jmeter的测试结构既是分层的又是顺序的,一些元素是严格按照层次来的,好比(Listeners, Config Elements, Post-Processors, Pre-Processors, Assertions, Timers),一些是按照顺序来的,好比(controllers, samplers)
一个典型的按照顺序执行的测试树以下,它的请求顺序是 One Two Three Four。
受层次影响的测试树,Assertion #1 仅用于 One,而 Assertion #2则是用于 TWO和Three
加上timer以后, Timer #1 会用于 Two/Three/Four,Assertion # 1则仅会用于Three,而 Timer #2则会影响全部的请求
能够简要的理解成 子集功能只能给当和他同一级目录和他的子集使用,其它的是按照顺序执行
总的来看,执行顺序是
Configuration elements
Pre-Processors
Timers
Sampler
Post-Processors (除非SampleResult 是 null)
Assertions (除非SampleResult 是 null)
Listeners (除非SampleResult 是 null)
好比如下的测试计划
Controller
Post-Processor 1
Sampler 1
Sampler 2
Timer 1
Assertion 1
Pre-Processor 1
Timer 2
Post-Processor 2
它的执行顺序就是
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1
Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1
复制代码
经过图形界面配置好的结果,保存下来后,能够再经过./bin/jmeter -t xxx.jmx
的方式打开。
保存配置的方式为 找到应用目录 File -> save test plan as 便可
启动测试操做以下
若是想经过非图形界面的方式启动,则可使用 ./bin/jmeter-server 来执行,远程测试能够经过添加 -Jremote_hosts 的方式来添加服务列表 远程测试详情戳这里
若是须要测试完成后自动产生图形界面的结果,能够执行
./jmeter -n -t ~/Desktop/MyServerHandler.jmx -l ~/Desktop/MyServerHandlerLog.txt -e -o ~/Desktop/MyserverHandlerReport
复制代码
~/Desktop/MyServerHandlerLog.txt是一个存储结果的空文件
~/Desktop/MyserverHandlerReport 是一个存储监控结果的空
~/Desktop/MyServerHandler.jmx 经过界面配置生成的压测计划
若是已经执行完了,日志放在了 MyServerHandlerLog.txt 中,能够经过命令直接产生
/bin/jmeter -g MyServerHandlerLog.txt -o ./MyserverHandlerReport
复制代码
能够在 bin/user.properties 文件定制相关的内容
nettyServer长链接服务提供了简单的心跳和echo服务,经过启动配置好的jmx
就能够看到对应的界面,而后开始压测