Jmeter的簡介
- Jmeter是一款開源桌面應用軟件,可用於模擬用戶負載完成性能測試工作。Jmeter可對Web應用進行測試或錄製,可實現接口的測試。
- Jmeter的基本原理是建立一個線程池,多線程運行取樣器產生大量負載,在運行過程中通過斷言來判定結果的正確性,通過監聽器來記錄執行測試的結果。
- Jmeter由線程組、取樣器、前置/後置處理器、配置元件、控制器、定時器以及監聽器組成。
- Jmeter開源庫起於2000年,它能夠對HTTP和FTP服務器進行壓力和性能測試,也可以對任何數據庫進行測試(通過JDBC控件)。
- Jmeter是java工程,100%的可移植性,完全Swing和輕量組件支持包,完全多線程框架允許通過多個線程併發取樣和通過單獨線程組對不同功能同時取樣。
- Jmeter具備高擴展性,支持腳本編程(BeanShell)。
Jmeter–採樣器(Samplers)
- 採樣器告訴Jmeter發送請求給服務器同時等待服務器的response響應。採樣器是按照出現在腳本樹的順序進行執行,控制器可用於修改採樣器的重複次數。
- Jmeter-採樣器包含:
1、FTP請求
2、HTTP請求
3、JDBC(Java DataBase Connectivity)請求
4、Java Object請求
5、JMS(Java Message Service)請求
6、Junit Test請求
7、LDAP(Lightweight Directory Access Protocol 輕量目錄訪問協議)請求
8、Mail請求
9、OS Process請求
10、TCP請求
11、JSR223
12、BeanShell
13、WebSocket請求(需要導入第三方庫)
採樣器(Samplers) – FTP請求
FTP請求控件是提供我們實現發送一個FTP下載文件或上傳文件請求到FTP服務器。但如果想實現發送多個相同請求到同一個FTP服務,我們可 以採用【FTP Request Defaults】控件配置相同屬性值,這樣在FTP 請求控件裏就無需每一次都填寫相同的內容。
創建一個FTP測試計劃:需要用到的控件 – Thread Group、FTP Request、FTP Request Defaults、View Results in Table、View Results in Tree
.
1、添加線程組(Thread Group):創建你需要的虛擬用戶數、所需要的多少用戶發送所需頻率的請求以及所需的發送請求數。選擇【測試計劃】-【添加】-【線程(用戶)】-【線程組】
[注]:在線程組控件中Ramp-Up Period屬性值保留默認值爲0秒,這個屬性實現在啓動每個用戶之間延遲多少秒。比如:你在Ramp-Up Period處設置了5秒,則Jmeter完成所有虛擬用戶啓動的時間爲5秒。若你設置的虛擬用戶爲10和Ramp-Up Period處設置了5秒,那麼每個用戶啓動延遲時間爲 10 users / 5s = 2users per second。若Ramp-Up Period設置爲0秒,那麼Jmeter就會立即啓動所有的虛擬用戶。
2、添加FTP默認請求(FTP Request Defaults)控件:創建FTP默認請求控件設置FTP請求的默認屬性值。選擇【線程組】—【添加】—【配置元件】—【FTP默認請求(FTP Request Defaults)】,如下圖
其中Remote File屬性是從FTP服務器下載的文件路徑。Local File屬性是下載保存到本地的絕對路徑。
get(RETR)實現下載功能;put(STOR)實現上傳功能。
3、添加FTP請求控件(FTP Request):選擇【線程組】—【添加】—【採樣器(Samplers)】—【FTP 請求(FTP Request)】。
在FTP請求控件中需輸入FTP服務的登陸賬戶及密碼。
4、添加監聽控件—用表格察看結果控件、察看結果樹控件
其中用表格察看結果控件負責將FTP請求的所有結果存儲在文件中,並顯示數據的可視化模型。選擇【線程組】—【添加】—【監聽器】—【用表格察看結果】。
察看結果樹控件顯示所有的採樣請求的響應結果。
採樣器(Samplers)–HTTP請求
HTTP請求支持我們發送一個HTTP/HTTPS
請求到後臺服務,通過察看結果樹檢測請求的response響應結果。
HTTP請求包括以下配置元件:HTTP Request Defaults(請求默認值)、HTTP Authorization Manager(HTTP授權管理器)、HTTP Cache Manager(HTTP緩存管理器)、HTTP Cookie Manager(HTTP Cookie 管理器)、HTTP Header Manager(HTTP信息頭管理器)
。
1、HTTP Request Defaults(請求默認值)
:用於設置HTTP Request中所有的默認值,可設置的內容有HTTP請求的host、端口、請求路徑、協議、請求參數以及客戶端的實現值等;
2、HTTP Authorization Manager(HTTP授權管理器)
:設置用戶登陸信息用於需認證頁面做登陸認證;
3、HTTP Cache Manager(HTTP緩存管理器)
:管理HTTP請求中添加的緩存,實現模擬瀏覽器緩存特性。HTTP Cache Manager中最多可緩存5000個;
4、HTTP Cookie Manager(HTTP Cookie 管理器)
:Cookie管理器有兩個功能—像web瀏覽器一樣存儲和發送Cookie信息、在Cookie管理器中添加Cookie,這樣Cookie將可被Jmeter的線程共享使用;
5、HTTP Header Manager(HTTP信息頭管理器)
:用於創建Header信息,在觸發HTTP Request的時候,Jmeter會自動將HTTP Header Manager創建的頭信息和HTTP請求一起發送到請求服務器。
HTTP請求採樣器控件如下圖
在HTTP請求控件裏協議默認爲HTTP,可支持HTTP、HTTPS以及FILE三種。其中Jmeter默認的SSL協議級別是TLS,如果後臺服務需要用到SSLv3的話,需要在Jmeter Property配置文件裏修改:
https.default.protocol=SSLv3
HTTP請求方法支持GET、POST、 HEAD、 TRACE、 OPTIONS、 PUT、 DELETE、PATCH、COPY、 LOCK、 MKCOL、 MOVE、 PROPFIND、 PROPPATCH、 UNLOCK、REPORT、MKCALENDAR、SEARCH
。
GET、POST、DELETE、PUT、PATCH請求方法的工作原理相似,其中只有POST方法支持多部件請求(multipart/form-data)和文件上傳。
在POST有使用multipart/form-data
或application/x-www-form-urlencoded
post請求。
multipart/form-data和post方法的不同於請求頭和請求體。
multipart/form-data的請求頭必須包含一個特殊Content-Tpye,且其值必須爲multipart/form-data。
multipart/form-data的請求體是字符串,與post不同的是multipart/form-data的請求體是一個構造體。
在HTTP請求中有三種傳參方式:1、新增參數;2、創建消息體數據;3、文件上傳
。
在HTTP請求中Jmeter提供了HTTP請求重試的設置
,默認重試次數爲0
.在bin/jmeter.properties
文件裏通過修改httpclient4.retrycount
的值。如果需要設置所有的請求都有重試,可修改
httpclient4.request_sent_retry_enabled=true
採樣器(Samplers)–JDBC請求
JDBC請求採樣器提供了我們發送一個SQL 查詢到數據庫獲取結果。在創建JDBC Request之前,要創建一個JDBC Connection Confuguration 的配置器。JDBC Connection Confuguration配置器的主要作用是提供連接數據庫的設置項。在使用JDBC採樣器之前要在/lib/路徑下導入mysql-connector-java的jar包。
關於BDCP的相關參數設置,可以參考鏈接
https://commons.apache.org/proper/commons-dbcp/configuration.html
Variable Name for created pool:設置用於連接綁定的變量名稱
Max Number of Connections:設置在連接池中的允許最大連接數。一般默認值爲0,表示每個線程擁有自己的池且只有一個連接數。要注意的是線程之間的連接不是共享的。如果需要設置共享,那麼將值設置爲與線程數相同,這樣每個線程之間就不會等待。
Max Wait (ms):設置連接過程中的超時時間。
Time Between Eviction Runs (ms):設置池中線程閒置等待時間,超過等待時間自動回收。
Validation Query:根據不同的db選擇對應的類型。
hsqldb: select 1 from \ INFORMATION_SCHEMA.SYSTEM_USERS
Oracle: select 1 from dual
DB2: select 1 from sysibm.sysdummy1
MySQL: select 1
Microsoft SQL Server: select 1
PostgreSQL: select 1
…
Database URL:輸入數據庫連接字符串。如mysql連接輸入爲
Jdbc:mysql://ipoftheserver:3306/databasename
JDBC Driver class
Hsqldb: org.hsqldb.jdbc.JDBCDriver
Oracle: oracle.jdbc.OracleDriver
DB2: com.ibm.db2.jcc.DB2Driver
MySQL: com.mysql.jdbc.Driver
Microsoft SQL Server: com.microdoft.sqlserver.jdbc.SQLServerDriver \ com.microdoft.jdbc.sqlserver.SQLServerDriver
JDBC Request採樣器
其中Pool Name爲JDBC Configuration裏設置的Pool Name。
後續持續更新