Jmeter 參數化的多種方式

搜狗測試2019-07-09 19:57:26

前言

在使用Jmeter進行性能測試時,需要併發多個用户,模擬真實用户行為,此時就需要模擬多個不同用户同時請求,每個用户請求中的imei或uuid動態變化。Jmeter提供了參數化的功能,配置元件、函數助手以及前置處理器中的用户參數,均能夠幫助我們解決這個問題。

配置元件-CSV Data Set Config

        配置元件是最常使用的一種方式,CSV Data Set Config 可以從指定的文本文件或csv文件一行一行的讀取文本內容,通過分隔符拆解每行內容,並把內容與變量名一一對應起來,每個請求取文件中不同行的值,實現併發多個用户的需求。我們可以在配置元件中找到它。CSV數據文件設置頁面如下:

其中,參數含義如下:

Filename:引用文件地址,可以填相對路徑或絕對路徑。相對路徑的根節點是Jmeter的啟動目錄,如果測試執行是分發到多台遠程負載機上的,使用相對路徑能夠避免因Jmeter安裝路徑不同導致的參數化文件無法取到的問題。另外,也可以利用Jmeter的變量來參數化參數文件的路徑,使用${paraUrl},同時在元件【User Defined Variables】中設置文件路徑。

File encoding:讀取參數文件時的編碼格式,建議填寫UTF-8,避免打開亂碼情況。

Variable Names(comma-delimited):即HTTP請求中希望隨請求變化的變量名稱。如果有多個變量,需使用符號隔開,該符號應與引用文件中變量之間的符號一致。若該處填寫的變量名稱多餘引用文件中的參數列數,則多餘的參數將無法取到值。

Ignore first line(only used if Variable Names is not empty):忽略首行,當引用文件中首行設置了變量名時,該項設為 true,此時每次請求讀取文件時會自動忽略首行,直接讀取第二行的數據。

Delimiter(use '\t' for tab):即用來分隔引用文件中的分隔符,如果引用文件中使用tab分隔,此處填寫'\t'。

Allow quoted data?:是否允許引用的數據,如果選擇true,則表示可以允許拆分完成的參數之間有分隔符出現。比如,引用文件中的值為:"31,celling",998d9e385a0c25b0e750,如果此處選擇true,則拆分後的參數為31,celling和998d9e385a0c25b0e750。

Recycle on EOF?:參數文件是否循環遍歷。

Stop thread on EOF?:當讀取到參數文件末尾時,是否停止讀取線程,默認為 false。當 Recycle on EOF?  設置為 true 時,此項不起任何作用。當且僅當 Recycle on EOF? 為 false 時,此項配置才生效。

Sharing mode:參數文件共享模式。主要有以下三種模式:

  • All threads:參數文件對所有線程共享,包括同一測試計劃中的不同線程組;

  • Current thread group:只對當前線程組中的線程共享;

  • Current thread:僅對當前線程獲取。

函數助手

        CSV Data Set Config元件可以動態替換指定數據的參數值,如果我們想讓某個值的內容是隨機生成的,可以使用函數來生成。位置在快捷工具欄的倒數第二位:

介紹一個生成隨機字符串的函數,__RandomString。Random string lengh:生成的字符串長度。

Chars to use for random string generation:指定用哪個字符作為種子進行隨機生成,可支持中文、數字、字母。

Name of variable in which to store the result (optional):可選項,填了之後,運行腳本後可以在Debug Sampler中看到這個變量的值。

填寫好參數之後,點擊Generate,會生成一串字符${__RandomString(30,abt2345函數kji助手,)},可直接作為請求中的參數化數據,如下圖所示。

運行結果可以看到,每次請求時攜帶imei參數均為隨機生成的字符串:

當然,函數助手中有很多強大的函數,在此不一一列舉。

訪問地址參數化

在實際測試過程中,有時測試地址會發生變化,將訪問地址參數化之後,只需改動參數對應的值就可以改變訪問地址。具體過程如下:

       -在HTTP請求中設置參數URL和PORT

        -在User Defined Variables中定義URL和PORT具體值

用户參數

在該元件中,可以看到有“Add Variable”、“Add User”、“Delete Variable”、“Delete User”,在進行參數化取值時,根據用户進行區分。

比如,有兩個線程,分別要取變量imei的值,則可以分別從此處取值,效果與其他方法相同。

結束語

參數化能夠幫助我們把固定數據動態化,更加貼合實際的模擬用户請求,利用好參數化功能可以有效提高測試效率,更加合理評估線上服務性能或進行性能調優。想了解更多Jmeter的知識,請持續關注吧~


https://hk.wxwenku.com/d/201106222