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
就能夠看到對應的界面,而後開始壓測