loadrunner參數化九種模式 loadrunner參數化策略詳解



文章插圖
loadrunner參數化九種模式 loadrunner參數化策略詳解

文章插圖
為什么要對腳本進行參數化?一個原因是因為腳本中有些值是唯一的不能重復的,如果用相同的值進行回放的話,會導致回放失敗,比如說我們新增一個賬號,賬號名肯定是不能重復的;另一個原因就是為了模擬真實的操作場景,畢竟在生產環境中不可能只是同一個用戶登錄,操作時也不可能都錄入相同的參數 。參數化的目的就是盡可能的模擬真實的操作場景 。
下面我們拿一個購買商品的操作來演示下整個流程
首先我們先用loadrunner錄制一個購買商品操作流程的腳本,找到選擇商品屬性的請求,如下圖
這里我們看到,商品的id,顏色,數量,尺碼等,都是可以進行參數化的,下面我們選擇商品id來對其進行參數化講解
首先將商品ID全部選中,右鍵點擊Replace with Parameter-Create New Parameter
點擊后,彈出如下輸入框
這里填寫參數名,點擊“OK”彈出下面提示框 。意思是你是否想用該參數替換腳本中其他地方的相同值 。
舉個例子,一個腳本中,有兩處2019blue-Tshirt01,如果我們點Yes,會將腳本中的兩處2019blue-Tshirt01都替換成我們的參數名{productId};如果點No,就只是替換我們選中的2019blue-Tshirt01 。替換完成后的效果如下
替換完成后,我們再選中我們的參數名,右鍵選擇Parameter Properties,來設計我們要替換成的參數值,如下圖所示
點擊Add Row添加一行;或者點擊Browse選擇一個我們已經編輯好的文檔,直接導入 。或者點擊Edit with Notepad在文本編輯器里錄入我們的參數值 。如下圖
下面我們再來說一下取值策略
Select next row:下次取值怎么取
(1)Sequential:從第一行開始按順序一個一個取值
(2)Random:每次迭代都從所有值中隨機取一個值
(3)Unique :唯一值,列表中的值只能取一次
除此之外還有一種特殊情況,就是Same line as xxx
這種情況主要用于有兩個參數需要使用同一行數據的情況 。舉個例子,我們在購買商品的時候,要選擇商品,要選擇商品的顏色,但是有些顏色只有指定商品才有,所以我們在參數化的時候,要注意在取顏色的時候一定要與商品匹配 。
【loadrunner參數化九種模式 loadrunner參數化策略詳解】接著上面的例子,我們參數化了商品id,接著再用同樣的方式參數化商品顏色
這個時候,我們在選擇下一行的策略時,就會出現一個新的選項,Same line as productId,這里的意思就是執行腳本的時候,productId選擇的是哪一行數據,color就選擇哪一行數據 。
這里假如說我們在參數化productId的時候,選擇的策略是Random隨機取值,那么我們選擇顏色的時候,如果選擇的顏色與選擇的商品不匹配,就會導致腳本回放失敗,因為選擇的商品可能沒有該顏色,所以我們在選擇color的參數化策略的時候,就要選成Same line as productId,這樣就保證了顏色與商品匹配 。從而避免了因為數據原因導致的腳本回放失敗 。
Update value on:遇到什么情況去更新參數數據
(1)Each iteration :每次迭代取一次值 。
(2)Each occurrence :每次遇到參數名時更新值 。如果一次迭代中,參數名出現了兩次,則兩次的取值是不同的 。
(3)Once :只第一次迭代的時候取值,之后的迭代都用第一次的取值 。
這兩種取值策略,不同的組合也會產生不同的取值方法,下面我們來結合上面的例子來詳細說一下這幾種策略的組合會產生怎樣的結果 。
Sequential+Each iteration:每次迭代時取一次值,從第一行開始按照順序取值,當所有值取完后,再從第一行開始重新取值 。我們從第一行的2019blue-Tshirt01開始取值,當取值到2019blue-Tshirt04時,下一次再取值就再從2019blue-Tshirt01開始循環取值 。如果腳本里出現了兩次{productId}這個參數,則兩次取同樣的值 。
Sequential+Each occurrence:每次遇到參數就取值,從第一行開始按順序開始取值,當所有值取完后,再從第一行開始重新取值 。比如說腳本中{productId}出現了兩次,那么出現第一次的時候取值2019blue-Tshirt01,出現第二次的時候取值2019blue-Tshirt02,以此類推 。
Sequential+Once:每次迭代都取第一次取到的數據 。第一次取到的是2019blue-Tshirt01,以后所有使用到參數的地方和之后所有的迭代都取得是2019blue-Tshirt01 。
Random+Each iteration:每次迭代時都隨機從列表中取一行值 。一次迭代中,第一次出現參數名的地方取了一個隨機的值2019blue-Tshirt01,那么該迭代中再遇到參數名,都取2019blue-Tshirt01,等下一次迭代再重新隨機取值 。
Random+Each occurrence:每次遇到參數就隨機取值,一次迭代中,第一次出現參數名的地方取了一個隨機的值2019blue-Tshirt02,那么該迭代中再遇到參數名,就再重新取一下值,可能是2019blue-Tshirt04 。
Random+Once:第一次迭代隨機取一行值,如第一次取了2019blue-Tshirt03,以后本次迭代中遇到的參數名以及之后的每次迭代都使用第一次迭代的值2019blue-Tshirt03 。
Unique+Each iteration:每次迭代時取一行值,從第一行按照順序開始取值 。
Unique+Each occurrence:每次遇到參數就取值,從第一行開始按順序開始取值 。
Unique+Once:第一次迭代取一行值,以后每次迭代都取第一次迭代的值 。
因為Unique這種方式比較特殊,參數取值是唯一的,那么我們就要設置一下當值全部取完的時候,我們該怎么處理 。
有三種處理方式
(1)Abort Vuser:停止測試,如果值已經全部被使用過了,則停止測試
(2)Continue in a cyclic manner:循環取值,再從第一行開始重新取值
(3)Continue with last value:如果全部的值都被使用過,則之后都使用最后一行的值
設置完取值策略后,關閉當前頁面,我們再去設置一下回放時的日志,能更清楚的看到我們的參數化是否成功Replay-Runtime Setting-Log-選擇Extended Log,勾選Parameter substitution,如下圖
這個時候,再去回放腳本,在回放日志里就能清楚的看到每次迭代我們這個參數的取值,如下圖