LoadRunner引數化詳解
效能測試工具是模擬多個使用者對系統的效能進行驗證(這種說法不完全正確),有些系統允許多個完全相同的使用者同時對完全相同的資料做完全相同的操作,有些則不允許。比如,郵箱一般允許同一個賬號在多處登陸。而我們的QQ賬號肯定是不允許的。再比如,你註冊某個系統時,使用者名稱是不能有重複。但密碼卻可以。所以,這麼多個情況都要用到引數化技巧。
我們這裡通過loadurnner錄製一個139郵箱的登陸。下面是擷取的一小段程式碼
........
web_submit_form("Login.ashx",
"Snapshot=t3.inf",
ITEMDATA,
"Name=UserName", "Value=chongshi", ENDITEM,
"Name=Password", "Value=123456", ENDITEM,
"Name=VerifyCode", "Value=", ENDITEM,
"Name=auto", "Value=<OFF>", ENDITEM,
EXTRARES,
......
下面看一下如何通過loadrunner對使用者名稱密碼引數化。標紅的內容就是登陸的使用者名稱和密碼。
引數化的方法
選中要引數化的內容。
方法一,右鍵---
方法二,選單【insert】----【new Parameter…】
Parameter Properties (引數屬性對話方塊)----我們的引數化設定就通過這個對話方塊完成。
引數化的方式:
其實引數化得方式有很多種,這裡簡述幾種比較常見人方式。其實方式略有不同,但其結果都是將資料新增進來。
1、 編輯資料
點選Create Table 會出現表格,在表格,再次點選Edit with Notepad ,然後會開啟一個記事本,我們可以對記事本進行新增資料
2、 新增dat資料檔案
點選File輸入框後面的“Browse..
需要注意的是,檔案裡面的資料不要亂寫,每條資料一行,不然會讀取有誤。
3、 資料庫新增資料
在很多情況下,我新增的資料不是十條二十條,也不是一百兩百,如果還通過上面的兩種方式新增,我想會是一件非常糾結的事情。所以我們可以通過資料庫將資料匯入。你是否疑慮資料庫的資料怎麼弄,資料庫的資料生成非常簡單,可以寫一段簡單的程式碼生成,也可以通過資料庫資料生成工具來完成
點選Date Wizard 開啟連線資料庫嚮導。
這裡先告訴你有這種方式,後面再介紹具體操作。^_^
4、 其他型別設定
如果我們要引數化的不是一個檔案,比如是特定的日期時間,可以從Parameter type 列表中進行選擇
這裡可以設定日期時間格式,迴圈迭代方式,不過除了file型別外,其他用的不多。其他型別用法我也不是十分了解。
引數化之間的關聯
前面我們已經對使用者名稱進行了引數化,或對密碼進行了引數化,這樣是不是指令碼就能正常跑了,不好說。因為使用者名稱和密碼不是一一對應關係,每次執行指令碼時取的使用者名稱和密碼沒有對應上的話肯定就會出問題。
假設,我們已經對使用者名稱已經進行了引數化,引數名為【username】,下面設定密碼引數化與使用者名稱關聯。
點選“Properites…”會開啟編輯使用者名稱引數化視窗。File列表框中,剛才儲存使用者名稱資訊的檔案"username.dat"。
點選“Add Column…”,新增新的一列資訊,用於放置密碼。
點選“Edit with Notepad”再次編輯引數化資料檔案,使使用者名稱密碼建立一一對應關係。
完成之後,我們已經成功對使用者名稱和密碼進行了引數化,並且讓使用者名稱和密碼形成了對應關係。
資料分配與更新方式
指令碼設定完引數化,指令碼執行的每一遍所取的引數化的值都不一樣,那麼這個值按照個什麼情況來取呢?會有很多種方式
Select next row【選擇下一行】:
順序(Sequential):按照引數化的資料順序,一個一個的來取。
隨機(Random):引數化中的資料,每次隨機的從中抽取資料。
唯一(Unique):為每個虛擬使用者分配一條唯一的資料
Update value on【更新時的值】:
每次迭代(Each iteration) :每次迭代時取新的值,假如50個使用者都取第一條資料,稱為一次迭代;完了50個使用者都取第二條資料,後面以此類推。
每次出現(Each occurrence):每次引數時取新的值,這裡強調前後兩次取值不能相同。
只取一次(once) :引數化中的資料,一條資料只能被抽取一次。(如果資料輪次完,指令碼還在執行將會報錯)
上面兩個選項都有三種情況,如果將他們進行組合,將產生九種取值方式。
Select Next Row 【選擇下一行】 |
Update Value On 【更新時的值】 |
Replay Result 【結果】 |
順序(Sequential) |
每次迭代(Each iteration) |
結果:分別將15條資料寫入資料表中 功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完後,再從第一行開始取 如:如果引數化檔案中有15條資料,而迭代設定為16次,那執行結果中,引數化檔案第一行的資料有兩條 |
順序(Sequential) |
每次出現(Each occurrence) |
結果:分別將15條資料寫入資料表中 功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完後,再從第一行開始取 如:如果引數化檔案中有15條資料,而迭代設定為16次,那執行結果中,引數化檔案第一行的資料有兩條 |
順序(Sequential) |
只取一次(once) |
結果:表中寫入15條一模一樣的資料。 功能說明:每次迭代都取引數化檔案中第一行的資料。 |
隨機(Random) |
每次迭代(Each iteration) |
結果:表中寫入15條資料,但可能有重複資料出現 功能說明:每次從引數化檔案中隨機選擇一行資料進行賦值 |
隨機(Random) |
每次出現(Each occurrence) |
結果:表中寫入15條資料,但可能有重複資料出現 功能說明:每次從引數化檔案中隨機選擇一行資料進行賦值 |
隨機(Random) |
只取一次(once) |
結果:表中寫入15條相同資料 功能說明:第一次迭代時隨機從引數化檔案中取一行資料,後面每次迭代都用第一次迭代的資料。 |
唯一(Unique) |
每次迭代(Each iteration) 自動分配塊大小 |
結果:分別將15條資料寫入資料表中 功能說明:第一次迭代取引數化檔案中的第一條資料,第二次迭代取第二條資料,以此類推。 注:如果設定迭代次數為16次。結果:在執行第16次迭代時會拋異常,異常日誌可在LoadRunner的回放日誌(replayLog)中看到。 |
唯一(Unique) |
每次出現(Each occurrence) 步長為1 |
結果:分別將15條資料寫入資料表中 功能說明:第一次迭代取引數化檔案中的第一條資料,第二次迭代取第二條資料,以此類推。 注:如果設定迭代次數為16次,而引數化檔案中只有15條資料,明顯資料不夠。此時可以設定“when out of values”屬性來判斷當資料不夠時的處理方式 Abort Vuser:中斷虛擬使用者 Countinue in a cylic manage:迴圈取引數化檔案中的值,即:當引數化檔案中的值取完後又從引數化檔案的第一行開始取值。 Countinue with last value:繼續用最後一條資料 |
唯一(Unique) |
只取一次(once) |
結果:表中寫入15條相同資料 功能說明:每次都取引數檔案中的第一條資料進行賦值 |