jmeter是设计成做负载测试和性能评估的java应用。它能够测试的类型包括
-
Web - HTTP,HTTPS
-
SOAP / REST 服务
-
FTP
-
通过JDBC的数据库
-
LDAP
-
基于JMS的面向消息的中间件
-
邮件 - SMTP(s),POP3(s)以及IMAP(s)
-
shell脚本
-
TCP
-
java对象
以下以TCP为主
GUI界面简介
下载 完jmeter之后,进入jmeter源码目录
⇒ ls
LICENSE NOTICE README.md bin docs extras lib licenses printable_docs
复制代码
在当前目录下执行命令
./bin/jmeter
便可以看到图形化的界面
jmeter概念
ThreadGroup
线程组是是所有测试计划的起点。一切的controller和sampler都必须在线程组下面,其它的元素,比如listener,可能直接放在了测试计划下面,这种情况下它就适用于所有的线程组。线程组控制着
-
线程的数量
-
线程全部启动的时间
-
执行测试的次数
Pre-Processor
在sampler请求之前执行,一般它用来修改设置或者更新一些变量
Samplers
用来发送请求给服务器,并且等待结果,Jmeter的sampler包括
-
FTP request
-
HTTP request
-
JDBC request
-
java object request
-
JMS request
-
JUnit Test request
-
Mail request
-
OS Process request
-
TCP request
Assertion
用来校验请求的返回结果
configuration
它会被添加到请求,或者是修改请求
Post-Processor
在sampler执行之后执行
logic controller
自定义jmeter在发送请求时的一些处理逻辑
Listener
用来获取jmeter运行时搜集的信息,比如 Graph Result listener用来绘制返回时间
Timer
在每个sampler执行前,延迟一段时间执行
Properties
JMeter的Properties定义在了 jmeter.properties,它是全局的
variables
它对于每个线程来说都是本地的,如果在一个线程里面改变了,仅影响这个线程
Jmeter的scope
jmeter的测试结构既是分层的又是顺序的,一些元素是严格按照层次来的,比如(Listeners, Config Elements, Post-Processors, Pre-Processors, Assertions, Timers),一些是按照顺序来的,比如(controllers, samplers)
-
一个典型的按照顺序执行的测试树如下,它的请求顺序是 One Two Three Four。
-
受层次影响的测试树,Assertion #1 仅用于 One,而 Assertion #2则是用于 TWO和Three