1. 程式人生 > >lr指令碼優化、關聯、引數

lr指令碼優化、關聯、引數

一、優化指令碼之刪減指令碼

1.檢查腳本里面跟我們目標網站不符的URL地址,刪除掉這些請求

2.腳本里面關於圖片和其他無關資源下載的請求,刪除掉jpg、jpeg、bmp、png、swf、fls

3.沒有ACTION 沒有URL地址的刪掉,因為沒有地址,資料沒有地方去

4.重複的請求刪掉

5.沒有提交資料的或者是沒有看到itemdata這個關鍵詞的註釋掉

6.再次回放,並檢視日誌

7.ctrl+alt+c 註釋指令碼

ctrl+alt+u 去掉註釋

 

二、關聯

1.什麼是關聯?

· 把指令碼中某些寫死的資料(硬編碼),轉變為伺服器傳送的、動態的、每次都不一樣的資料(以不變應萬變)

2.為什麼要使用關聯?

因為伺服器端在與客戶端的互動過程中,根據業務需求會產生每次不同的資料,為了讓固定的指令碼能夠適應這些資料,需要關聯

3.什麼時候使用關聯?

錄製時是正常的,但是回放時不成功,存在動態資料資訊(動態id),考慮關聯

4.一般關聯的操作步驟

(1)從伺服器返回的資料中選取需要進行關聯的資料(找資料)

(2)將該資料存入指令碼的一個引數中

變動的資料在指令碼中是引數,由於是變化的,所以叫動態ID(需要關聯的資料)

(3)將指令碼中需要使用資料的地方用該引數代替

5.怎麼做關聯?

(1)錄製兩次相同操作的指令碼

(2)兩次指令碼,做比較 Tools--Compare with Script..

(3)白底表示相同部分,黃底表示不同,黃色的大塊,不用太關注,因為和資料包的先後有關,找出動態ID(動態ID一般是一串無規律的字串)

(4)關聯型別;手動關聯(常用)

使用web_reg_save_param()函式(預註冊函式,需要寫在相應請求之前:尋找相應請求),在原始檔中找到需要關聯的字串(動態資料),存入一個引數中

把錄製時資料替換為該引數(動態資料)

(5)如何查詢到相應請求?(為了在之前寫關聯函式)

①拷貝動態ID適當長度,從下方的Generation Log的第一行開始查詢!!!

如果該動態ID查詢到的位置是在伺服器的應答包中(Response Body...),說明查詢正確。(第一次,是從伺服器發出的ID)

 

②查詢到之後,選取適當長度的左右邊界,拷貝下來,準備寫函式。

 

③先向下慢慢翻找,找到與當前應答id號相同的id號的請求,該請求即為相應請求。 (90%的情況都是在下方不遠處,Request 和 Event 都是請求)

web_url("... "Snapshot=t7.inf", ); 快照名是唯一的,作為線索

尋找指令碼中t7.inf對應的請求位置。將拷貝的串資訊貼上到請求之前

 

④找到相應請求之後,在請求之前寫關聯函式,並將後續指令碼中用到動態ID的位置用函式中的引數名替代。

web_reg_save_param("uid", //引數名稱

         "LB=name=userSession value=", //左邊界

         "RB=>", //右邊界

          LAST);

相應請求;

 

⑤之後,將指令碼中的ID值,用引數uid代替:

"Name=userSession", "Value=121571.58890239zcfDDDipzAtVzzzHDHfcApADVzcf", ENDITEM,

改為:

"Name=userSession", "Value={uid}", ENDITEM,

即可。{uid} 取得LR的變數值,LR語法範圍內有效的。

⑥再次回放購票指令碼,購票成功

 

三、引數化設定步驟

1.目的:模擬真實場景,例如,登入操作,不可能所有的使用者名稱都一致

2.開啟引數設定,兩種方式

(1)工具欄中的倒數第二按鈕,<p>--Open Parameter List(Ctrl+L)

(2)Vuser--Parameter List..

3.新建引數(以飛機票為例,註冊使用者)

(1)new三個引數,命名為username、pwd1、pwd2

三種方式:手動增加行增加列,輸入、可通過筆記本匯入、連線資料庫匯入

(2)呼叫引數取值的方式

①手動填寫 {引數名},如{username}

②選中值,右擊,Replace with a Parameter,用引數替換,選擇引數,ok

4.指令碼只實現註冊一次的功能,5個引數,所以需要註冊5次,即指令碼執行5次

Run-tine Settings---Run logc,設定5次

5.執行指令碼,最後驗證是否註冊成功,用註冊的這些值去登入,看是否可以登入

 

四、引數池策略

1.select next row(取值方式)

(1)Sequential 順序:對於每個VU,都是從第一行開始,順序依次向下取值

(2)Random 隨機:對於每個VU,取值隨機,值可以重複

(3)Unique 只用一次:對於每個VU,從第一行開始,唯一依次向下取值

(4)和xx一樣:同行步調一致,具備一定關係

 

2.Update value on(何時取?when?)

(1)Each iteration 每次迭代:每次指令碼迴圈(預設Action)時更新引數的值

(2)Each occurrence 每次遇到就更新:指令碼執行時,只要遇到該引數即更新

(3)Once 僅取一次:從頭到尾只用這個值

 

3.Out of value(越界方式===引數池資料不夠時,Unique)

(1)放棄VU:直接放棄該虛擬使用者,

(2)以迴圈方式繼續:迴圈從第一行繼續取

(3)以最後一個值繼續:一直使用最後一個值

 

4.以兩個輸出函式為例,test為3個引數,依次為ABC

(1)Sequential +Each iteration

迭代第一次,輸出:AA

迭代第二次,輸出:BB

迭代第三次,輸出:CC

 

(2)Sequential+Each occurrence

迭代第一次,輸出:AB

迭代第二次,輸出:CD

 

(3)Sequential+Once

迭代N次,輸出:A A

 

(4)Random+Each iteration

迭代N次,輸出:A or B or C

 

(5)Random +Each occurrence

迭代N次,輸出:A or B or C

 

(6)Random+Once

迭代N次,輸出:A or B or C

 

(7)Unique +Each iteration

迭代第一次,輸出:AA

迭代第二次,輸出:BB

 

(8)Unique +Each occurrence

迭代第一次,輸出:AB

迭代第二次,輸出:C D

 

(9)Unique+Once

迭代N次,輸出:A A

 

五、控制檯

1.設定場景

(1)Start Vusers 雙擊-->設定一個小的遞增

(2)Duration雙擊(Action指令碼)

 

六、分析結果

1.報告講解

(1)Transcation Name 事務名稱

(2)最小值、平均值、最大值

(3)Std.Deviation 標準方差值,越小越好,越趨近於0,表示所有使用者執行該事務的響應時間越接近,表示系統越穩定

(4)90 Percent 90%響應時間:表示該組中90%的使用者在0.XX秒內完成操作

(5)網路頻寬充足的情況下,當吞吐量(Throughput)隨著點選率(Hits per second)的升高而升高,說明AUT的伺服器處理能力充足

 

2.效能測試分析

(1)如發現某些事務響應時間超長(最普遍)該怎麼處理?

①通過分析報告中幾個比較重要的圖表進行檢視,初步定位問題,再通過網頁細分圖(網頁診斷圖)去確定響應時間長在系統的哪個部分,大多情況,時間長在伺服器端

(響應時間=客戶端時間+網路時間+伺服器時間)

②如果是應用伺服器發生問題,調整伺服器配置引數即可

③大多數情況是資料庫伺服器

 

(2)Web Page Breakdown網頁診斷圖

①DNS: 域名解析系統,將伺服器的域名和伺服器的IP地址對應起來的系統,可以將域名解析為IP地址

②Connection時間:

③First Buffer:第一次緩衝(第一個資料包,可以細分為網路及伺服器處理時間+資料庫時間,發請求到收到第一個緩衝)

④Receive:獲取到所有資料包的接收時間,該時間可以衡量網路質量情況。如果時間較長,一般說明網路不好,如果確定測試環境是內網,網路不是問題,則可能是客戶端,也可能是伺服器的問題