性能测试(01)-jmeter元件-线程组、调试取样器
1.線程組
線程組是一個測試計劃的開始點。在一個測試計劃中的所有元件都必須在某個線程組下。線程組控制 JMeter 執行你的測試計劃中的線程數量。每個線程組都會獨立的運行測試計劃,互不干擾。1.1.基礎線程組
Ramp up:jmeter 啟動所有線程需要的時間。
說明:如果設置了 100 個線程,并且 ramp-up period 是 1 秒,那么 JMeter 預計將在 1 秒鐘之內啟動 100 個線程.如果循環次數是 2,那么 jmeter 預期每秒將發送 200 個請求(100*2)。
如果循環次數設置為永遠,那么 jmeter 將以最大可能去發送請求。?1.2.階梯加壓線程組
點擊后,創建一個階梯加壓線程組
下面是對上圖的參數說明:?
this group will start:一共需要啟動的線程數,如圖表示一共會啟動 200 個線程。 first wait for:點擊執行之后多久開始啟動線程。設置 0 秒表示點擊立即啟動。 next add:每個階梯加載多少線程。設置為 20 個,表示每個梯次加載 20 個線程。 threads every:每個階梯之間的間隔時間。設置 5 秒表示當前階梯的線程加載完成之后運行 5 秒再次加載新的線程。 ramp-up:啟動線程需要的時間,設置 0 秒表示每個階梯的線程加載瞬時完成。 then hold load for:線程全部加載完之后持續運行的時間。設置為 50 秒表示 200個線程加載完之后再持續 50 秒。 finally,stop/threads every:運行結束之后每個階梯釋放的線程數。設置 20 個和 5 秒,表示線程持續運行結束之后每 5 秒鐘釋放 20 個線程。1.3.Arrivals Thread Group
這個線程組可以通過我們設計的 tps 需求,動態計算出需要的線程總數。 例如下圖,預期 tps 是 20,那么需要啟動多少線程才能滿足要求?jmeter會自動計算。?
參數說明: Target rate?:表示的是預期的 tps。 Ramp up time: 表示的是達到預期 tps 所需要的時間。 Ramp up step?:表示的是分幾步達到預期 tps。 Hold target rate time?:表示的是達到預期 tps 之后的線程持續運行時間。 Time unit: 表示的是選擇時間單位。分或者秒。 Jmeter 會根據預期的業務量與業務時間,動態計算需要多少線程。如果從業務角度考量,這個線程數就是單位時間的平均并發數。2.多協議
2.1.Debug Sampler(調試取樣器)
自定義的變量輸出在 response data 中,方便調試腳本。 jmeter 在場景設計和腳本調試的過程中間少不了需要調試,Debug Samopler 可以用來調試請求中間參數是否正確。線程組右鍵-->添加--->Sampler -->Debug Sampler
1、JMeter properties和System properties:通常都選false。
這兩個就是JMeter和系統的屬性,在Jmeter的bin的jmeter.properties中定義,一般都不會變。
2、JMeter variables:這個是我們自已定義的變量,定義的方式有如下這些:
a) 在右邊的面板上添加User Defined Variables(用戶參數)。
設置用戶參數:
從察看結果樹中的響應數據,我們可以查看到test=1111的參數。?
b) 選中線程組,右鍵選擇 配置元件( config element)-->User Defined Variables。
?
c) 通過后置處理器生成的變量
在HTTP請求中,右鍵-->添加-->后置處理器-->選擇需要的關聯方式(如下圖有很多種方法可以提取動態變化數據)?
解決響應結果亂碼問題:Jmeter之響應結果亂碼解決【圖文】_Ye_Kwii_51CTO博客?
實現一個簡單的例子:
提取如下響應文本中的 “<title>百度一下,你就知道</title>” 里面的 “百度一下,你就知道”1. 設置正則表達式提取器
參數說明:
引用名稱:下一個請求要引用的參數名稱,如填寫title,則可用${title}引用它。?
正則表達式:
():括起來的部分就是要提取的。 . :匹配任何字符串。 + :一次或多次。 ? :不要太貪婪,在找到第一個匹配項后停止。模板:
用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等, 表示解析到的第幾個值給title。如:$1$表示解析到的第1個值。匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0。
缺省值:如果參數沒有取得到值,那默認給一個值讓它取。
思考一下,如果是要使用正則表達式提取多個字符串該如何實現?2.接著我們在第二個請求中,使用我們在第一個請求中獲取的title變量。
?在獲取第一個請求參數title的時候,就因為有中文,導致在第二個參數里就有亂碼的情況。
??????解決的方法:Jmeter請求參數顯示中文亂碼問題,我的小小總結_倘注定有份無緣的博客-CSDN博客_jmeter請求參數中文亂碼
?
d)使用csv參數化的變量
使用的場景:一般批量插數據的時候,可以通過這樣的方式進行。
1.添加CSV Data Set Config
通過Test Plan 或者Thread Group添加CSV Data Set Config。
2.準備數據文件,一般以 .csv,.dat 等結尾的文件,數據之間的分隔符可用 ,或者 tab。
.csv是一種文件格式(如.txt、.doc等),也可理解.csv文件就是一種特殊格式的純文本文件。 即是一組字符序列,字符之間已英文字符的逗號或制表符(Tab)分隔。csv配置中的各項參數,其他就是字面意思。?
3.使用變量
?導入數據后,在取樣器中使用這些變量。
做一個對比:
我們在使用參數化之前(寫死參數),設置是這樣,然后得出的結果是這樣。
?結果:
?接下來使用參數后設置,步驟如下:
1.先準備csv文件參數。2.在請求http上設置對應的參數。3.在結果樹上查看請求體。這里要注意一下,多個請求的時候,需要在線程組那里設置多次請求。1.先準備csv文件參數。
2.在請求http上設置對應的參數。
?需要注意的地方:參數需要使用${xxxx}包起來。
3.在結果樹上查看請求體。這里要注意一下,多個請求的時候,需要在線程組那里設置多次請求。
總結:
1、Debug Sampler采樣器會把我們自定義的變量輸出在響應數據中,方便我們調試的時候使用。
2、腳本調試完成記得刪除Debug Sample采樣器,避免Debug Sample 采樣器占用客戶端資源。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的性能测试(01)-jmeter元件-线程组、调试取样器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: prometheus接入mysqld_e
- 下一篇: Quartz分布式实现