效能測試學習筆記:Loadrunner如何進行引數化?

博為峰網校發表於2021-05-13

為什麼要對指令碼進行引數化?一個原因是因為指令碼中有些值是唯一的不能重複的,如果用相同的值進行回放的話,會導致回放失敗,比如說我們新增一個賬號,賬號名肯定是不能重複的;另一個原因就是為了模擬真實的操作場景,畢竟在生產環境中不可能只是同一個使用者登入,操作時也不可能都錄入相同的引數。引數化的目的就是儘可能的模擬真實的操作場景。加我VX:atstudy-js 回覆“測試”,進入軟體測試學習交流裙~~

下面我們拿一個購買商品的操作來演示下整個流程

首先我們先用loadrunner錄製一個購買商品操作流程的指令碼,找到選擇商品屬性的請求,如下圖

這裡我們看到,商品的id,顏色,數量,尺碼等,都是可以進行引數化的,下面我們選擇商品id來對其進行引數化講解

首先將商品ID全部選中,右鍵點選Replace with Parameter-Create New Parameter

點選後,彈出如下輸入框

這裡填寫引數名,點選“OK”彈出下面提示框。意思是你是否想用該引數替換指令碼中其他地方的相同值。加我VX:atstudy-js 回覆“測試”,進入軟體測試學習交流裙~~

舉個例子,一個指令碼中,有兩處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

這種情況主要用於有兩個引數需要使用同一行資料的情況。舉個例子,我們在購買商品的時候,要選擇商品,要選擇商品的顏色,但是有些顏色只有指定商品才有,所以我們在引數化的時候,要注意在取顏色的時候一定要與商品匹配。接著上面的例子,我們引數化了商品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,如下圖

這個時候,再去回放指令碼,在回放日誌裡就能清楚的看到每次迭代我們這個引數的取值,如下圖

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2772178/,如需轉載,請註明出處,否則將追究法律責任。

相關文章