天天看點

(十三)參數化(File Parameter Types)

詳情:Vugen User Guide > VuGen > Working with VuGen > Parameters > Parameter Types

在data file中,資料以表格形式存儲,一個檔案中可以有多個列,以逗号隔開

id,first_name
120,John
121,Bill
122,Tom      

一、将每個參數值寫在單獨檔案中操作步驟:

  • 錄制腳本
  • 在要參數化的文本處選中,然後右鍵選擇”Replace with a Parameter”
  • 添加參數化的資料,在工具欄”Open Parameter List”中,進行設定.Add Column、Add Row、Edit with Notepad、File format中可以選擇用回放用哪行的資料。

    清單内容

一個參數化的内容可以在多個地方使用,選擇要參數化内容—右擊選擇”Use Existing Parameter”

參數池中有的資料:

userName
jojo
qq
-------------
pwd
bean
1      

在Parameter List中設定 File format為:First data=1

Action中是登入腳本,疊代次數為2

這樣就能讓兩次疊代的使用者名、密碼不同。

二、将每個參數值寫在相同檔案中操作步驟:

  • 将要參數化的資料寫在一個文本文檔中,為了友善以後這個檔案容易找到,最好寫在與第一種方式錄制的相同目錄下。userDat.dat
userName,pwd
jojo,bean
qq,1
      
  • File:在Browse中選擇userDat.dat
  • Select column中 有兩種方式選擇參數列

    ①By number:username為第一列

    ②By name:根據名稱選擇列。

其餘的操作與一同

  • 開啟Run-time Settings中的Log—>extended log—>Parameter substitution。在回放中可以看到參數替代log
Action.c(22): Notify: Parameter Substitution: parameter "userName" =  "jojo"
Action.c(22): Notify: Parameter Substitution: parameter "pwd" =  "bean"      

三、參數池的政策

①select next row:[how]

Vugen User Guide > VuGen > Working with VuGen > Parameters > Data Assignment Methods for File/Table/XML Parameters

  • sequential:Assigns data to a Vuser sequentially

    每個Vu都是從第一行開始,順序的向下取值

    特點:每個VU取值序列相同

    若資料不夠,則再從第一行讀取,直到結束

  • unique:Assigns a unique sequential value to the parameter for each Vuser.(每個使用者要唯一的向下取值,第一個使用者從第一行開始取)

    比如:20個虛拟使用者,5次疊代,則至少要準備100個唯一的值。

    若沒有資料可取,則根據When out of values:Continue with last value 、Abort Vuser、Continue in a cyclic manner政策繼續執行。

  • random:所有VU随機取值
  • 有時,可能多個參數化對應的取值設定的 政策相同,則可以在”Select next row”選擇”Same line as xxx”,
  • 單使用者時,順序和唯一相同。

②update value on:[when]

  • 每次疊代(each iteration):每次疊代(循環、action的循環)
  • 每次遇到:當腳本執行過程遇到該參數(比如name)即更新這個參數。

    舉例:如果腳本的action中password參數出現兩次,那麼在腳本循環一次中,遇到該參數2次。循環n次,則遇到該參數2n次,即更新2n次(在參數表中取2n次資料)

    實際場景不多,實際應用較少

  • 一次(once):腳本執行過程中,隻去一次。(不更新值)

    Updates the parameter value only once during the scenario run. The Vuser uses the same parameter value for all occurrences and all iterations of the parameter. This type may be useful when working with dates and times.(一個虛拟使用者在整個)

    【控制台檢視日志的方式:

    ①要進行的設定:控制台中run-time setting–>Log–>Always send messages (現在要通過日志檢視參數化後不同的取值方式、取值時間疊代過程中,參數取值問題,是以要選總發送日志,隻為學習目的。在實際的場景測試中,選擇出錯發送日志即可)

    ②日志位置:在腳本檔案夾下的mdrvxxx.xxx.log中】

(十三)參數化(File Parameter Types)

有些人會問:每次循環時更新和每次發生更新有差別嗎?答案是肯定的。

假設在腳本中,一個參數需要在多個地方進行參數化。那麼當回放腳本時,參數的更新政策為Each iteration,腳本中每個被參數化的地方取值是一樣的,而當更新政策為Each occurrence時,腳本中每出現一個參數化的地方,都會取下一條資料。具體取的值是什麼,可以用lr_output_message輸出看一下。

當Select next row為unique時,存在分塊和when out of values情況,其他的random、sequential的不用考慮這些(他們都有自己的政策,不會出現資料不夠用情況)。

一、分塊方法(若要了解分塊,就先不要管塊内資料不夠怎麼辦?塊内資料不夠是when out of values需要解決的問題):

  • 自動分塊

    按照循環次數先配置設定第一個VU(例如設定的循環次數為3,則配置設定給第一個VU 3個參數值),然後将接下來的3個參數值配置設定給第二個VU,依次類推…..

    (十三)參數化(File Parameter Types)
    可以看出配置設定給Vuser N的塊,已經不夠4塊,則此時将剩下的都給Vuser N即可。Vuser n+1沒有可用的了
  • 手動分塊
    (十三)參數化(File Parameter Types)

為何要分塊?

在控制台中,避免多使用者打架。讓每個VU都有自己的一塊,取值(unique方式)時隻能在自己的塊中取值。

何時使用分塊?

取值方式為unique。

當取值方式為unique,更新方式為each iteration,選擇自動分塊方式,則每個VU的塊大小設定為疊代次數。

二、when out of values

  • 當unique+each iteration時,可以選擇手動和自動。為什麼可以自動?因為自動的機制時按照疊代次數(是使用者設定好的),來設定塊大小的。
  • 當unique+each occurrence時,隻能選擇手動。因為each occurrence中用到參數個數,不能依據疊代次數來确定。
  • 當unique+once時,按照使用者數分别配置設定一個,分塊比較簡單,是以就不讓使用者選了。

有時需要輸出目前循環的次數,則可以定義一個變量(計數器)放在action函數上面,則這個值不會每次都初始化,而是保留上次的值

int i=1;
Action()
{
    lr_output_message("目前疊代次數為:%d,使用者名為:%s,密碼是:%s",
                      i++,
                      lr_eval_string("{name}"),
                      lr_eval_string("{password}"));
    return 0;
}