距離上次使用loadrunner 已經有一年多的時間了。初做測試時在項目中用過,後面項目中用不到,自己把重點放在了工具之外的東西上,認爲性能測試不僅僅是會用工具,最近又想有一把好的利器畢竟可以幫助自己更好的完成性能測試工作。這算是一個認知的過程吧!
在次安裝打開loadrunner時,發現雖然自己的思想還在,但已經非常生疏了,好多設置都找不到了具體的位置。下面說參數化參數化是性能測試中時最常用的一種技巧吧!這裏需要說明的是,不是隻有loadrunner纔可以設置參數化,我以前所使用的JMeter同樣也有類似的設置。
我們知道性能測試工具是模擬多個用戶對系統的性能進行驗證(這種說法不完全正確),有些系統允許多個完全相同的用戶同時對完全相同的數據做完全相同的操作,有些則不允許。比如,郵箱一般允許同一個賬號在多處登陸。而我們的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對用戶名密碼參數化。標紅的內容就是登陸的用戶名和密碼。
參數化的方法
選中要參數化的內容。
方法一,右鍵---【Replace with a new parameter】
方法二,菜單【insert】----【new Parameter…】
Parameter Properties (參數屬性對話框)----我們的參數化設置就通過這個對話框完成。
參數化的方式:
其實參數化得方式有很多種,這裏簡述幾種比較常見人方式。其實方式略有不同,但其結果都是將數據添加進來。
1、 編輯數據
點擊Create Table 會出現表格,在表格,再次點擊Edit with Notepad ,然後會打開一個記事本,我們可以對記事本進行添加數據
2、 添加txt數據文件
點擊File輸入框後面的“Browse..”按鈕,找到本地的txt數據文件,進行添加就可以了。
需要注意的是,文件裏面的數據不要亂寫,每條數據一行,不然會讀取有誤。
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條相同數據 功能說明:每次都取參數文件中的第一條數據進行賦值 |
Ps:關於調用數據庫實現參數化的方式,放在後一篇細說。被一個蛋疼的問題和這篇文章折騰一天。