定義:將腳本中的特定值用變量替代,該變量值是變化的(注意:這個值是咱們本身建立的,不是服務器返回的)。 html
參數化的緣由,並非網上說的真實模擬不一樣用戶,真實反應服務器性能,而是:sql
數據惟一性(好比註冊名不能同樣)數據庫
避免數據庫查詢緩存緩存
思考:模擬1000個用戶登陸論壇,1000個相同的用戶名相同的密碼與1000個不一樣的用戶名不一樣的密碼的區別? 服務器
File參數類型--文本參數顯示問題,參考:http://www.javashuo.com/article/p-kcwipbkm-kq.html併發
進行參數化前,咱們要先把須要用到的參數設計好,這裏以建立「File類型參數」爲例dom
點擊下面的圖標ide
點擊左下角【New】性能
默認是File類型測試
點擊Create Table,默認生成一個NewParam.dat文件
單擊
編輯數據文件,第一行默認名稱是NewParam,重命名爲具備含義的字段名,由於是用戶名,這裏就改成name,最後一個參數下面最多隻能一個空行
保存後
修改參數名稱爲name
修改完成,注意:下面兩個name含義不同,第一個是在腳本中引用的變量名,第二個是爲了方便咱們識別列,取的列名
參數設計好後,咱們選擇要替換的常量,而後右鍵選擇使用已有的參數替換
對loadrunner自帶的訂票網站登陸的用戶名作參數化,上面已經將參數name建立好了
參數更新方式總共3X3=9種方式
/* Sequential:順序,全部虛擬用戶按照順序讀取數據表(都從第一行開始); Random:隨機,全部虛擬用戶隨機形式讀取數據表; Unique:惟一,全部虛擬用戶每次各取一值(不重複); 何時訪問數據表完成數據更新? Each iteration:每次迭代之後; Each occurrence:每次出現參數; Once:每出現一個虛擬用戶; */
下面驗證這9種方式
3個參數值(a,b,c),迭代4次,看是如何取值的。
測試腳本爲:
Action() { lr_output_message("第一個參數取值:%s",lr_eval_string("{paramtest}")); lr_output_message("第二個參數取值:%s",lr_eval_string("{paramtest}")); lr_output_message("第三個參數取值:%s",lr_eval_string("{paramtest}")); return 0; }
日誌級別設置爲標準
另外,運行的日誌會存放到output.txt文件中,這個文件放到腳本目錄下
一次迭代過程當中,相同參數值不發生變化,即只取一次值。每次迭代,是將全部的Action都執行。
從頭開始按順序取值,當值不夠用時又從頭開始。
和每次迭代-順序相似,從頭開始按順序取值,當值不夠用時按照設置的方式處理。
此時能夠自動分配,也能夠自定義分配value數,(「每次發生--惟一」只能自定義分配value數)
當值不夠用時,有3種狀況,默認狀況下,使用最後一個值繼續;中止腳本;從頭再來(相似每次迭代,順序取值)
Error: Parameter 'paramtest': No more unique values for this parameter in table 'paramtest.dat' [unique range is 1-3].The parameter continues with last value of the range according to "When Out Of Values" policy.
默認自動分配
自定義分配,
運行結果依舊和上圖同樣,由於在vuser中,就只有一個vuser,單獨一個用戶分享全部參數值。
每次發生,相同參數取不一樣值,也能夠取相同值<隨機或者惟一不夠時>
和每次迭代-順序相似,從頭開始按順序取值,當值不夠用時又從頭開始。
不必定從頭開始按順序取值,且值也可能相同。(不管參數多少)
和每次迭代-順序、每次迭代-惟一相似,從頭開始按順序取值,當值不夠用時按照設置的方式處理。
此時自定義分配value數必填,(「每次迭代-惟一」能夠自動分配,也能夠自定義分配value數)
填入上面框中的數字不管爲多少(1至X),在vuser中,運行結果都同樣。(在虛擬用戶腳本中只有一個用戶,不管Allocate處填多少都無用,單獨一個用戶分享全部參數值)
完整Error信息:Error: Parameter 'paramtest': No more unique values for this parameter in table 'paramtest.dat' [unique range is 1-3].The parameter continues with last value of the range according to "When Out Of Values" policy.
填1或者任意值,在vug中,都是以下結果:
只取一個值。
只取第一個值。
始終第一個值
隨機取一個值。
只取第一個值。
(下面這種狀況是衝突的,Unique是每一個數據惟一,只使用一次,Once是隻更新一次,可是隻認Once,若是隻有2個數據,迭代>2次,也不會報錯,所有是用第一個數據。)
始終第一個值
【3個值(a,b,c),腳本中參數出現3次,選擇迭代4次,5個vuser】
Action() { lr_output_message("第一個參數取值:%s",lr_eval_string("{paramtest}")); lr_output_message("第二個參數取值:%s",lr_eval_string("{paramtest}")); lr_output_message("第三個參數取值:%s",lr_eval_string("{paramtest}")); return 0; } /* Sequential:順序,全部虛擬用戶按照順序讀取數據表(都從第一行開始); Random:隨機,全部虛擬用戶隨機形式讀取數據表; Unique:惟一,全部虛擬用戶每次各取一值(不重複); 何時訪問數據表完成數據更新? Each iteration:每次迭代之後; Each occurrence:每次出現參數; Once:每出現一個虛擬用戶; */
場景中,先設置一直髮消息:
能夠查看每一個vuser的log:
Vuser1:aaa→bbb→ccc→aaa
Vuser2:aaa→bbb→ccc→aaa
Vuser3:aaa→bbb→ccc→aaa
Vuser4:aaa→bbb→ccc→aaa
Vuser5:aaa→bbb→ccc→aaa
Vuser1:aaa→ccc→aaa→bbb
Vuser2:aaa→bbb→aaa→aaa
Vuser3:aaa→aaa→aaa→aaa
Vuser4:ccc→aaa→aaa→ccc
Vuser5:ccc→aaa→ccc→bbb
系統自動分配,三個參數,系統都分配給了第一個vuser,其他的vuser無參數而失敗,因此成功1個,失敗4個,成功的一個還報警,第四次迭代由於沒有值而用的最後一個值;
且C:\Users\wgy\AppData\Local\Temp\res3\log中只生成了一個log文件;
Insufficient records for parameter 'paramtest' in table to provide the Vuser with unique data
Error: Parameter 'paramtest': No more unique values for this parameter in table 'paramtest.dat' [unique range is 1-3].The parameter continues with last value of the range according to "When Out Of Values" policy.
Vuser1:aaa→bbb→ccc→ccc
手動分配,
若是設置爲2,則生成2個log文件;
Vuser1:aaa→bbb→bbb→bbb
Vuser2:ccc→ccc→ccc→ccc
Vuser1:abc→abc→abc→abc
Vuser2:abc→abc→abc→abc
Vuser3:abc→abc→abc→abc
Vuser4:abc→abc→abc→abc
Vuser5:abc→abc→abc→abc
Vuser1:abc→cbc→cca→cba
Vuser2:bac→bbb→bca→abb
Vuser3:cbb→bba→abc→aab
Vuser4:abb→ccb→cca→bcc
Vuser5:cac→bbc→abc→cbc
每一個用戶分1個值,分給了3個用戶;2個用戶無值;
Vuser1:aaa→aaa→aaa→aaa
Vuser2:bbb→bbb→bbb→bbb
Vuser3:ccc→ccc→ccc→ccc
每一個用戶分2個值,分給了2個用戶;3個用戶無值;
Vuser1:abb→bbb→bbb→bbb
Vuser2:ccc→ccc→ccc→ccc
全取值a
Vuser1:aaa→aaa→aaa→aaa
Vuser2:aaa→aaa→aaa→aaa
Vuser3:aaa→aaa→aaa→aaa
Vuser4:aaa→aaa→aaa→aaa
Vuser5:aaa→aaa→aaa→aaa
都隨機只取一個值
Vuser1:bbb→bbb→bbb→bbb
Vuser2:bbb→bbb→bbb→bbb
Vuser3:ccc→ccc→ccc→ccc
Vuser4:aaa→aaa→aaa→aaa
Vuser5:ccc→ccc→ccc→ccc
都隨機只取一個值;
Vuser1:aaa→aaa→aaa→aaa
Vuser2:bbb→bbb→bbb→bbb
Vuser3:ccc→ccc→ccc→ccc
點擊【Data Wizard】
點擊【肯定】
如圖選擇,點擊【下一步】
點擊【Data Wizard】
點擊【肯定】
點擊【Create】
從下拉列表選擇一個數據庫鏈接
更改默認數據庫爲須要用的數據庫
點擊測試數據源
略。
用於構造不一樣的用戶數據
造1萬個數據,如手機號碼
13588880000--13588889999
常量跟上一個unique number類型變量。
不足位數,左側補零