jmeter使用教程

weixin_34308389發表於2017-11-02

測試計劃:是使用jmeter進行測試的起點,是其他測試元件的容器,一個完整的測試計劃

包括一個或多個執行緒組,邏輯控制器,取樣器,監聽器,配置元件


3117824-5c41ee50dd2fd7aa.png

圖中標紅的是在使用JDBC request時使用的MySQL驅動的檔案路徑

下載mysql-connector-java-5.1.40檔案,下載後解壓

點選“瀏覽”找到mysql-connector-java-5.1.40檔案中的mysql-connector-java-5.1.40-bin.jar檔案


3117824-83122301f799c37b.png

執行緒組:執行緒組是每個任務都要執行緒去處理,所有任務必須線上程組下面建立

執行緒數:設定傳送請求的使用者數目,即併發數

Ramp-Up Period(in second):建立完所有執行緒的時間,防止對伺服器有太大的負載

迴圈次數:請求得重複次數(所有請求數=併發數*迴圈次數)

啟動時間:測試計劃的啟動時間

結束時間:測試計劃的結束時間

持續時間:測試計劃持續時間

配置元件:配置元件維護Sampler需要的配置資訊,配置元件並不傳送請求(除了HTTP代理伺服器例外),並根據實際的需要會新增或修改請求的內容

配置元件“使用者定義的變數”會在測試的初始階段執行(無論它處於測試樹的那個位置)

配置元件對其所在的測試樹分支有效


3117824-8b75101708e0b1c7.png

HTTP Cookie Manager

該屬性管理器用於管理Test Plan執行時的所有cookie。HTTP Cookie Manager可以自動儲存伺服器傳送給客戶端的所有Cookie,並在傳送請求時附加合適的Cookie

同時,也可以在HTTP Cookie Manager中手動新增一些cookie,這些手工新增的cookie會在傳送請求時被自動附加到請求

如果在一個測試計劃內有多個Cookie Manager,Jmeter目前無法指定哪個被使用。所以,一個測試計劃內最好只有一個cookie manager。並且,一個manager裡的cookie並不能被其它manager所引用。所以在使用多個Cookie Managers時要謹慎。

如果選中紅框中的選項,意味著執行緒在每次迭代時清除自己會話中的所有Cookie.

HTTP Header Manager


3117824-ea264bb95d18abeb.png

該屬性管理器用於定製Sampler發出的HTTP請求的請求頭的內容。不同的瀏覽器發出的HTTP請求具有不同的Agent,訪問某些有防盜鏈的頁面時需要正確的Refer...這些情況下都需要通過HTTP Header Manager來保證傳送的HTTP請求是正確的

HTTP Cache Manager

該屬性管理器用於模擬瀏覽器的Cache行為。為Test Plan增加該屬性管理器後,Test Plan執行過程中會使用Last-Modified、ETag和Expired等決定是否從Cache中獲取相應的元素。

注意:如果Test Plan中的某個Sampler請求的元素是被Cache的元素,則Test Plan在執行過程中會直接從Cache中讀取該元素,這樣Sampler得到的返回值就會是空。在這種情況下,如果為該Sampler設定了Assertion檢查響應體中的制定內容是否存在,該Assertion就會失敗。

HTTP請求預設值


3117824-56bfe51199d2c581.png

這個元件可以為我們的請求設定預設值,比如測試計劃裡的所有請求都是傳送到同一個伺服器,這時我們就可以用這個元件配置好紅框內標記引數就可以啦,這些請求就會使用元件裡的值,在其他的請求中只需要配置請求的具體路徑就ok

HTTP請求


3117824-b4b8fba096eed631.png

http請求是傳送請求的元件,因為在HTTP請求預設值中已經配置好伺服器和埠號所以這裡不需要配置,如果未使用http請求預設值那就需要在這裡配置

紅框1:這個是介面

紅框2:請求的方法(如果是get請求就不需要bodydata)

紅框3:這個是post請求的請求提,把要傳給伺服器的引數寫在這裡

正規表示式提取器


3117824-d01c11d93941ac1e.png

提取器作用:從請求的響應結果中取到需要的內容,從而實現關聯

要檢查的響應欄位:正規表示式提取內容的範圍

引用名稱:其他地方引用提取值的變數名稱,具體的引用方式是${變數名},eg:${token}

正規表示式:提取內容的正規表示式,()表示提取,對於要提取的內容需要用小括號括起來

模板:用$$引用起來,如果在正規表示式中有多個提取表示式(多個括號括起來的東西),則可以是$1$,$2$等等,表示解析到的第幾個值給變數,正規表示式提取模式,值從1開始

匹配數字:0代表隨機,-1代表所有,其餘正數代表將在已提取的內容中,第幾個匹配的內容

預設值:正則匹配失敗,取的值

響應斷言


3117824-ae3109701d4c9c42.png

斷言:對取樣器返回的請求結果給出判斷,是否正確

使用者可以使用斷言來檢查從伺服器獲得的響應內容,用來判斷請求響應的結果是否如使用者所期望的

斷言會影響作用域內的所有采樣器,如果要讓斷言隻影響某個取樣器,需要將斷言作為該取樣器的子項

斷言中設定要測試的模式,則會對響應的內容(如http請求後,伺服器返回的內容)進行與字串進行匹配,如果返回的內容包括了字串,則認為該次測試通過,否則就是失敗。一般通過監聽器來監聽響應斷言

關於連線資料庫進行資料查詢及使用的操作

JDBC Connection Configuration


3117824-b22ed39964df4b4c.png

Database URL:資料庫URL,jdbc:MySQL://主機ip或者伺服器名稱:mysql監聽的埠號/資料庫名稱

JDBC Driver Class:資料庫的驅動

username:資料庫登入的使用者名稱

password:資料庫登入的密碼


3117824-1334c8a40d485074.png


3117824-702ecb9192e1f114.png

Variable Name:資料庫連線池的名字,需要與JDBC Connection Configuration的連線池的名字保持一致

Query:填寫的sql語句末尾不要加“;”

Parameter valus:引數值

Parameter types:引數型別

Variable names:儲存sql語句返回結果的變數名

result Variable name:建立一個物件變數,儲存所有的結果

監聽器


3117824-177a2be70884bc5c.png

聚合報告:

label:取樣器名稱

Samples:執行過程中一共發出了多少個請求

Average:平均響應時間

median:響應時間中間值

90%Line:一組數從小到大排列,找到他的第90%個數,那麼這個陣列中有90%的數將小於這數

Min/Max:最小/最大響應時間

Error%:出錯率

Throughput:吞吐量,每秒/每分處理的Request數

KB/sec:每秒從伺服器接收到的資料

注意:關於總體值並不是各列的累加,

圖形結果:


3117824-bac1852f0084ff67.png

樣本數目:發出去的請求數

最新樣本:最近一個Request的響應時間

平均:所有request響應時間的平均值

偏離:所有request響應時間的便準差

吞吐量:單位時間處理request的個數

中值:所有request響應時間的中間值

檢視結果樹


3117824-4fc5df158fa1c491.png

在連線資料庫時可能遇到的問題

1.Cannot load JDBC driver class 'com.mysql.jdbc.Driver,jmeter中的JDBC request報這個錯

解決:因為沒有JDBC驅動,下載一個mysql-connector-java-5.1.40檔案,下載後解壓,然後將mysql-connector-java-5.1.40檔案中的mysql-connector-java-5.1.40-bin.jar檔案配置在測試計劃中就好啦


3117824-2e557b7c4dd6ff09.png

相關文章