一、通過loadrunner錄制一個提交注冊信息的部分代碼
web_submit_data("member.php", "Action=http://192.168.241.141/bbs/member.php?mod=register&inajax=1", "Method=POST", "EncType=multipart/form-data", "TargetFrame=", "RecContentType=text/xml", "Referer=http://192.168.241.141/bbs/member.php?mod=register", "Snapshot=t7.inf", "Mode=HTML", ITEMDATA, "Name=regsubmit", "Value=yes", ENDITEM, "Name=formhash", "Value=d75056c8", ENDITEM, "Name=referer", "Value=http://192.168.241.141/bbs/forum.php", ENDITEM, "Name=activationauth", "Value=", ENDITEM, "Name=vzJm3c", "Value=zhouzheng", ENDITEM, "Name=EACfPx", "Value=123456", ENDITEM, "Name=L44Sod", "Value=123456", ENDITEM, "Name=C08V2d", "Value=zhouzheng@sina.com", ENDITEM, LAST)
二、參數化的設置方式
選中要參數化的內容。
方法一:右鍵---【Replace with a new parameter】
方法二:菜單【insert】----【new Parameter…】
Parameter Properties (參數屬性對話框)----我們的參數化設置就通過這個對話框完成。
三、參數化的方式:
其實參數化得方式有很多種,這里簡述幾種比較常見人方式。其實方式略有不同,但其結果都是將數據添加進來。
1、編輯數據
點擊Create Table 會出現表格,在表格,再次點擊Edit with Notepad ,然后會打開一個記事本,我們可以對記事本進行添加數據
2、 添加dat數據文件
點擊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):為每個虛擬用戶分配一條唯一的數據
same line as xxx(與參數xxx取同一行):這個選項是在同一個數據文件中有多列參數的時候才會出現,選擇之后此參數會取相應參數的同一行值
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條相同數據 功能說明:每次都取參數文件中的第一條數據進行賦值 |
注意:但是這里不止9中組合方式
如果看了這些還不清楚,那loadrunner自動了一個參數化模擬器
這個東西就是你把上面的都設置好啦,但是不知道具體到底用戶運行順序效果是怎么樣的,你就可以點擊這個按鈕進行模擬,就像這樣:
這就可以讓你直觀的看到每一次迭代時到底是使用的哪一個用戶名密碼啦。將這些都設置完成之后我們的參數化就結束了。
四、實際場景引用
Select next row(選擇下一行):
Sequential(順序)
Random(隨機)
Unique(唯一)
Updata value on(更新時的取值):
Each iteration(每次迭代)
Each occurrence(每次出現)
Once(只取一次)
1.單線程:Virtual User Generator中是單線程腳本調試。因此僅用第一種組合:順序+迭代
2.多線程下常用的四種:
- 順序+迭代 : 適用於多點登錄,【可以搜索、發帖、回帖,盡量避免使用】
- 隨機+迭代 : 適用於多點登錄,可以搜索、發帖、回帖
- 唯一+迭代 : 適用於單點登錄(不推薦),注冊
- 唯一+一次 : 適用於單點登錄