Jmeter性能測試(10)--參數化

參數化是自動化測試腳本的一種常用技巧。簡單來說,參數化的一般用法就是將腳本中的某些輸入使用參數來代替,在腳本運行時指定參數的取值範圍和規則;

這樣,腳本在運行時就可以根據需要選取不同的參數值作爲輸入。這種方式通常被稱爲數據驅動測試(Data Driven Test),參數的取值範圍被稱爲數據池(Data Pool)。

jmeter的test plan中,支持如下4種參數化方式

函數助手:_CSVRead

CSV Data Set Config:CSV數據控件

User Defined Variables:用戶定義的變量

User Variables:用戶參數

首先新建一個測試腳本,可以通過工具(badboy)錄製或者自己手動編寫

登錄請求的界面如下:

這裏我們對登錄的用戶名密碼進行參數化,將用戶名密碼寫入txt文檔,保存爲.dat格式,編碼類型選擇UTF-8

因爲配置元件——CSV Data Set Config對參數化的格式要求比較嚴格,用戶名密碼一一對應,之間用半角英文逗號隔開

然後將保存的.dat文件放入計算機的某個盤裏,這裏我放入路徑爲:F:\jmeter\csvtest.dat

下面具體介紹參數化常用的的兩種方法:

一、函數助手:_CSVRead

點擊jmeter的界面,功能欄選項→ 函數助手對話框→ _CSVRead

CSV file to get values from | *alias:CSV文件取值路徑,即這裏需要寫入之前的需要參數化的參數的文件路徑

CSV文件列號| next|*alias:文件起始列號:CSV文件列號是從0開始的,第一列爲0,第二列爲1,以此類推。。。

函數字符串:即生成的參數化後的參數,可以直接在登陸請求中的參數中引用,第一列爲用戶名,函數字段號爲0,第二列爲密碼,函數字段號爲1,以此類推進行修改使用即可

替換參數化後的參數,然後修改線程數,執行腳本,通過監聽器裏結果樹的請求內容,可以看到請求的參數都是參數化後的數據

二、配置元件——CSV Data Set Config

點擊線程組添加配置元件→ CSV Data Set Config:

說明:

Filename:F:\jmeter\csvtest.dat文件名,保存參數化數據的文件目錄,可選擇相對或者絕對路徑(建議填寫相對路徑,避免腳本遷移時需要修改路徑);

File encoding:UTF-8,F:\jmeter\csvtest.dat文件的編碼格式,在保存時保存編碼格式爲UTF-8即可;

Variable Names(comma-delimited):對對應參數文件每列的變量名,類似excel文件的文件頭,起到標示作用,同時也是後續引用的標識符,建議採用有意義的英文標示;

                                (如:有幾列參數,在這裏面就寫幾個參數名稱,每個名稱中間用分隔符分割,這裏的 user,pwd,可以被利用變量名來引用:user,user,{pwd};

Delimitet:參數文件分隔符,用來在“Variable Names”中分隔參數,與參數文件中的分隔符保持一致即可;

Allow quote data:是否允許引用數據,默認false,選項選爲“true”的時候對全角字符的處理出現亂碼 ;

Recycle on EOF?:是否循環讀取參數文件內容;因爲CSV Data Set Config一次讀入一行,分割後存入若干變量中交給一個線程,如果線程數超過文本的記錄行數,那麼可以選擇從頭再次讀入;

△ Ture:爲true時,當已讀取完參數文件內的測試用例數據,還需繼續獲取用例數據時,此時會循環讀取參數文件數據(即:讀取文件到結尾時,再重頭讀取文件);

False:爲false時,若已至文件末尾,則不再繼續讀取測試數據;通常在“線程組線程數* 線程組循環次數>參數文件行數”時,選用false(即:讀取文件到結尾時,停止讀取文件);

Stop thread on EOF?:當Recycle on EOF爲False時(讀取文件到結尾),停止進程,當Recycle on EOF爲True時,此項無意義;

若爲ture,則在讀取到參數文件行末尾時,終止參數文件讀取線程;

若爲false,此時線程繼續讀取,但會請求錯誤,因此時讀取的數據爲EOF;

Sharing mode:共享模式,即參數文件的作用域,有以下幾種方式:

All threads:當前測試計劃中的所有線程中的所有的線程都有效,默認;

Current thread group:當前線程組中的線程有效;

Current thread:當前線程有效;

完成之後,將剛纔生成的參數寫入參數對應的值裏面:

以上兩種常見的參數化的方法,推薦使用CSV控件方法(因爲函數助手參數化功能相比其較弱)

 

三、配置元件——User Defined Variables

點擊線程組添加配置元件→ User Defined Variables(用戶定義的變量):

如上圖所示,在該參數組中已經定義了兩個參數,通過界面下方的添加、刪除按鈕可以向參數列表增加和刪除參數,Up和Down可以上下移動參數的位置;

PS:User Defined Variables中定義的參數值在test plan執行過程中不能發生取值的改變,因此一般僅將test plan中不需要隨迭代發生改變的參數(只取一次的參數)

    設置在此處;例如:被測應用的host和port值。

四、前置處理器——User Variables

點擊線程組添加前置處理器——User Variables(用戶參數):

如上圖所示,在該參數組中已經設置了兩個參數,username和password分別有2組不同的取值,通過頁面下方的四個按鈕,可以增加刪除參數的可能取值。

PS:User Variables中設置的參數可以在test plan執行過程中發生變化。

以上就是jmeter參數化的四種方式,其中:

1、函數助手_CSVRead的參數化功能相比CSV Data Set Config較弱;

2、CSV Data Set Config適用於參數取值範圍較大的時候使用,該方法具有更大的靈活性;

3、User Defined Variables一般用於test plan中不需要隨請求迭代的參數設置;

4、User Variables適用於參數取值範圍很小的時候使用;

PS:相比於loadrunner來說,jmeter參數化有以下不同:

1.jmeter參數文件第一行沒有列名稱

2.參數文件的編碼,儘量保存爲UTF-8(編碼問題在使用CSV Data Set Config參數化時要求的比較嚴格)

3.Jmeter的參數化沒有LoadRunner做的出色,它是依賴於線程設置的(只有CSV Data Set Config參數化方法纔有)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章