JMeter四種引數化方式

自動化程式碼美學發表於2021-05-27

JMeter引數化是指把固定的資料動態化,這樣更貼合實際的模擬使用者請求,比如模擬多個不同賬號。JMeter一共有四種引數化方式,分別是:

  • CSV Data Set Config
  • Function Helper
  • User Defined Variables
  • User Parameters

CSV Data Set Config

所屬元件:Config Element。

image-20210516154859060

Name

帶業務含義的名字。

Comments

可以為空的註釋。

Configure the CSV Data Source

【Filename】檔名,可以是相對路徑也可以是絕對路徑。推薦使用相對路徑,好處是指令碼遷移或者分發到多臺遠端負載機,不改指令碼就能直接複用。相對路徑的根節點是%JMETER_HOME%\bin,把CSV檔案放到這個目錄或其子目錄下。

注意,開啟方式選擇bin目錄下jmeter.bat或快捷方式才會把bin作為相對路徑的根節點。如果把bin目錄加入系統環境變數後,用cmd執行jmeter命令開啟,那麼相對路徑的根節點是cmd的工作目錄,比如C:\Users\dongfanger\Desktop。

【File encoding】檔案編碼,推薦用UTF-8

【Variable Names (comma-delimited)】定義的變數名,用逗號隔開,與CSV檔案的列一一對應。變數比列多,多餘的變數取不到值;變數比列少,多餘的列不會被取值。此選項可以為空。

【Ignore first line (only used if Variable Names is not empty)】上一個選項的變數名為空時,此選項生效。它會把CSV檔案的第一行的列名作為變數名,並在取值時忽略第一行。

【Delimiter (use '\t' for tab)】CSV檔案分隔符,預設為逗號,也可以用製表符。

【Allow quoted data】是否允許引用資料,比如雙引號"dongfanger,pass",1111,允許後能拆分出dongfanger,pass1111

【Recycle on EOF】設定為True時,迴圈遍歷CSV檔案。

【Stop thread on EOF】設定為True時,遍歷完CSV檔案就結束執行緒。

EOF是End Of File縮寫,檔案結束符。JMeter在測試執行過程中每個執行緒每次迭代會從引數檔案中新取一行資料,從頭遍歷到尾。

【Sharing mode】有三種共享模式:預設為All threads,對所有執行緒共享;Current thread group只對當前執行緒組中的執行緒共享;Current thread僅當前執行緒獲取。

比如2個執行緒組,每個執行緒組2個執行緒,共享同一個csv檔案,那麼迭代1次這4個執行緒會分別取前4條資料,互不重複;迭代2次這4個執行緒會分別取前8條資料,互不重複。

User Defined Variables

所屬元件:Config Element。

image-20210516155134665

JMeter有兩個User Defined Variables,它們的區別是:Test Plan的User Defined Variables作用域是全域性的,配置元件的User Defined Variables作用域可以是全域性的也可以是區域性的

表格共三列,第一列是Name變數名,第二列是Value變數值,第三列是Description描述。表格下方的功能按鈕,用來對錶格進行增刪改查和上下移動,還能直接從剪貼簿新增。

定義好的變數通過${}格式來使用,比如變數a值為1,使用時寫作${a}。這個地方定義的實際上是字串常量,比如剛才已經定義了一個變數名a變數值1,再定義變數名b變數值${a} + 1b的實際值不是整型2而是字串"${a} + 1"

User Parameters

所屬元件:Pre Processors。由於User Parameters屬於前置處理器,所以它只會對當前Sampler生效。

image-20210516154935673

Name

帶業務含義的名字。

Comments

可以為空的註釋。

Update Once Per Iteration

經過反覆多次試驗,勾選與否沒看出區別。官方解釋如下:

A flag to indicate whether the User Parameters element should update its variables only once per iteration. if you embed functions into the UP, then you may need greater control over how often the values of the variables are updated. Keep this box checked to ensure the values are updated each time through the UP's parent controller. Uncheck the box, and the UP will update the parameters for every sample request made within its scope.

從各文章截圖總結,一般會勾選上這個選項。

Parameters

表格列Name指變數名,表格列User_x指某個使用者的變數值。下方有6個按鈕,分別是“新增變數”、“刪除變數”、“新增使用者”、“刪除使用者”、“上移”、“下移”。每個執行緒分配一個變數值;如果執行緒數大於User_x,那麼會迴圈取值。

User Parameters在引數較少的情況下使用。

Function Helper

image-20210516155237460

函式除了引數化,還可以用來做運算,字元編碼格式轉換,獲取執行時引數等,下篇文章專門來寫。

小結

本文介紹了配置元件裡面的CSV Data Set Config和User Defined Variables,作用域可全域性可區域性。接著介紹了前置處理器User Parameters,只對當前Sampler生效。但都有侷限性,為了幫助我們更好地進行引數化,JMeter提供了一組函式來幫我們生成需要的資料,這些函式在有個地方能夠進行編輯,它就是:Function Helper。

參考資料:

《全棧效能測試修煉寶典JMeter實戰》

http://tutorialjmeter.blogspot.com/2017/05/pre-processor-in-jmeter.html

https://jmeter.apache.org/usermanual/component_reference.html#User_Parameters

相關文章