使用Jmeter測試快速入門

  • 2020 年 12 月 5 日
  • 筆記
一 創建執行緒組

 

 

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.1 執行緒組
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. 前置處理器和後置處理器

前置處理器(Pre Processors)和後置處理器(Post Processors)負責在生成請求之前和之後完成工作。前置處理器常常用來修改請求的設置,後置處理器則常常用來處理響應的數據。我們主要在動態關聯中用到後置處理器的正則表達式提取器

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里文件打開剛剛保存的腳本