使用Jmeter測試快速入門
一 創建執行緒組
1.1.2. 執行緒組主要包含三個參數:執行緒數、準備時長(Ramp-Up Period(in seconds))、循環次數。
1.1.3. 執行緒數:虛擬用戶數。一個虛擬用戶佔用一個進程或執行緒。設置多少虛擬用戶數在這裡也就是設置多少個執行緒數。
1.1.4. 準備時長(秒):設置的虛擬用戶數需要多長時間全部啟動。如果執行緒數為20 ,準備時長為10 ,那麼需要10秒鐘啟動20個執行緒。也就是每秒鐘啟動2個執行緒。
1.1.5. 循環次數:每個執行緒發送請求的次數。如果執行緒數為20 ,循環次數為100 ,那麼每個執行緒發送100次請求。總請求數為20*100=2000 。如果勾選了「永遠」,那麼所有執行緒會一直發送請求,一到選擇停止運行腳本。
1.1.6. . 調度器:設置執行緒組啟動的開始時間和結束時間(配置調度器時,需要勾選循環次數為永遠)
1.1.7. 持續時間(秒):測試持續時間,會覆蓋結束時間
1.1.8. 啟動延遲(秒):測試延遲啟動時間,會覆蓋啟動時間
1.1.9. 啟動時間:測試啟動時間,啟動延遲會覆蓋它。當啟動時間已過,手動只需測試時當前時間也會覆蓋它。
1.1.10. 結束時間:測試結束時間,持續時間會覆蓋它。
二.創建http請求
三.使用方法
3. 1指定請求域名,請求路徑
一個HTTP請求有著許多的配置參數,下面將詳細介紹:
|
名稱:本屬性用於標識一個取樣器,建議使用一個有意義的名稱。
|
注釋:對於測試沒有任何作用,僅用戶記錄用戶可讀的注釋資訊。
|
伺服器名稱或IP :HTTP請求發送的目標伺服器名稱或IP地址。
|
埠號:目標伺服器的埠號。
|
方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
|
Content encoding :內容的編碼方式,默認值為iso8859
|
路徑:目標URL路徑(不包括伺服器地址和埠)
|
3.2. 指定請求域名,請求路徑
3.3查看錶格資訊
Sample:每個請求的序號
|
Start Time:每個請求開始時間
|
Thread Name:每個執行緒的名稱
|
Label:Http請求名稱
|
Sample Time:每個請求所花時間,單位毫秒
|
Status:請求狀態,如果為勾則表示成功,如果為叉表示失敗。
|
Bytes:請求的位元組數
|
樣本數目:也就是上面所說的請求個數,成功的情況下等於你設定的並發數目乘以循環次數
|
平均:每個執行緒請求的平均時間
|
最新樣本:表示伺服器響應最後一個請求的時間
|
偏離:伺服器響應時間變化、離散程度測量值的大小,或者,換句話說,就是數據的分布。
|
3.4. 查看結果樹
響應的數據展示(響應碼,響應數據),
通過察看結果樹,我們可以看到每個請求的結果,其中紅色的是出錯的請求,綠色的為通過。
Thread Name:執行緒組名稱
Sample Start: 啟動開始時間
Load time:載入時長
Latency:等待時長
Size in bytes:發送的數據總大小
Headers size in bytes:發送數據的其餘部分大小
Sample Count:發送統計
Error Count:交互錯誤統計
Response code:返回碼
Response message:返回資訊
Response headers:返回的頭部資訊
3.5 聚合報告參數說明
lable:對應每一個http請求,顯示的是http請求的Name,如百度http請求name為baidu
|
#Samples:表示這一次的測試中一共發出了多少請求,如上圖所示,sougou和baidu的http請求每個都發出30個請求
|
Average:平均響應時間,指的是所有的請求的平均響應時間,如上圖的30個請求的總的響應時間除以30得出的平均響應時間,默認的情況下是單個請求的平均響應時間,但當使用了「事務控制器」時,則以事物為單位顯示平均響應時間
|
Median:中位數,也就是50%用戶的響應時間
|
90%Line:90%用戶的響應時間
|
Min:最小響應時間
|
Max:最大的響應時間
|
Error%:本次測試中出現錯誤的請求的數量/請求的總數,如上圖所示,本次的測試中,sougou的http請求66.6%的請求出錯,而baidu的請求則沒有出錯的請求
|
Throughput:吞吐量,默認情況下表示每秒完成的請求數,如上圖所示,每秒完成的請求數分別為6.6個每秒,6.2個每秒
|
Recived KB/Sec:每秒從伺服器端接收到的數據量,以kb為計算的單位
|
3.6 圖形結果
樣本數目:總共發送到伺服器的請求數。
最新樣本:代表時間的數字,是伺服器響應最後一個請求的時間。
吞吐量:伺服器每分鐘處理的請求數。
平均值:總運行時間除以發送到伺服器的請求數。
中間值:有一半的伺服器響應時間低於該值而另一半高於該值。
偏離:表示伺服器響應時間變化、離散程度測量值的大小。
四.Jmeter主要組件介紹
4.2 取樣器(Http請求)
4.3 監聽器
監聽器(Listener)負責收集測試結果,同時也被告知了結果顯示的方式。我們常用的包括:聚合報告、查看結果樹、用表格查看結果,都支援將結果數據寫入文件。其他的添加上去看看就行。聚合報告前面我們介紹過,後面是查看結果樹和用表格查看結果的截圖
4.4.查看本地資料庫裡面的數據
4.4.1打開JDBC Connection Configuration
然後一次填入一下數據
Database URL:數據鏈接url,格式:jdbc:mysql://localhost:3306/host
注釋:資料庫的ip地址+埠/資料庫名(查詢資料庫埠號show global variables like ‘port’)
jdbc:mysql://127.0.0.1:3306/mydb2?serverTimezone=UTC& allowMultiQueries=true
JDBC Driver Class:驅動器名稱。固定:com.mysql.jdbc.Driver
Username:用戶名
Passowrd:密碼
添加一個JDBC Request。
4.4.2 然後在添加一個JDBC Request
輸入sql語句
最後的結果是
4.5 斷言—檢查點
斷言(Assertions)可以用來判斷請求響應的結果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執行壓力測試。這個限制對於有效的測試是非常有用的
填寫響應段言
添加JSON Assertion
效果如下
4.6. 前置處理器和後置處理器
4.7.定時器
定時器(Timer)負責定義請求之間的延遲間隔
4.8事務控制器
作用: 事務控制器會生產一個額外的取樣器,用來統計該控制器子結點的所有時間。
在執行緒組下創建事務控制器
參數:
· Generate parent sample:(選中這個參數結果展示如下圖紅框,否則顯示為下圖藍框)
· Include duration of timer and pre-post processors in generated sample:選中這一項會統計定時器(timer)的時間,否則只統計取樣器(sample)的時間
先添加一個事務控制器
勾選化框的地方
查看結果
循環控制器
創建循環控制器
添加要循環的次數
結果如下
五 Jmeter組件參數化
5.1參數化是什麼
動態的獲取並設置數據
5.2. 為什麼使用參數化
執行批量操作,批量添加批量刪除,人工效率太低
運用程式代替人工獲取並設置數據,安全高效
比如:對被測系統的用戶名和密碼進行參數化,來模擬多個用戶同時登錄系統
5.3. 參數化實現之CSV Data Set Config
通過這個組件可以動態獲取並設置數據,實現批量添加操作
5.4創建一個http請求
效果如下
5.5使用Jmeter 函數助手
1、點擊 選項–>函數助手 調出函數助手對話框
2、選擇 _CSVRead 函數(下圖第一個框)
3、函數參數:
1)第一個參數:填寫文件路徑。
2)第二個參數:文件列號是從0開始的,第一列0、第二列1、第三列2、依次類推,然後點擊【生成】按鈕,則會自動生成我們需要的參數化函數。
3) 複製生成的參數化函數, copy過程需要使用的地方即可。
4) _Random函數是從某數據段隨機讀取數據替換參數,當需要添加多條數據記錄且某些欄位需要唯一性時使用。
運行及運行結果
5.6 正則參數化
先添加兩個http請求
一個是成語詞典一個是新華字典
然後在成語詞典里添加一個正則表達式提取器
在正則表達式提取器中添加數據
說明:
(1)引用名稱:下一個請求要引用的參數名稱,如填寫title,則可用${title}引用它。
(2)正則表達式:
():括起來的部分就是要提取的。
.:匹配任何字元串。
+:一次或多次。
?:不要太貪婪,在找到第一個匹配項後停止。
(3)模板:用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值
(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0
(5)預設值:如果參數沒有取得到值,那默認給一個值讓它取。
修改新華字典里的參數
然後運行及效果圖展示
六 Jmeter腳本錄製
6.1. 什麼是腳本錄製
在進行測試的時候,可能有好多腳本或者介面需要操作測試,並且有些測試鏈接需要重複多執行緒高並發進行測試,我們一般會針對這一些操作,進行一個腳本錄製,錄製好之後,之後測試就可以在這個基礎上進行測試。
6.2. Jemeter腳本錄製方式
BadBoy腳本錄製
使用Jmeter自帶的代理伺服器進行腳本錄製
安裝badbay
打開badbay
最後完畢之後點擊小紅點
然後點擊文件Export to Jmeter
然後在jmeter里文件打開剛剛保存的腳本