天天看點

loadrunner 腳本優化-關聯設定

腳本優化-關聯設定

by:授客 QQ:1033553122

關聯的原理

關聯也屬于一鐘特殊的參數化。一般參數化的參數來源于一個檔案、一個定義的table、通過sql寫的一個結果集等,但關聯所獲得的參數是伺服器響應請求所傳回的一個符合條件的、動态的值。

例子:常見系統中的登陸功能,在登陸後伺服器會傳回SessionID,登陸後的操作都需要送出該SessionID确認身份。使用VuGen錄制腳本時,Vugen将會記錄伺服器傳回的SessionID,并且原封不動地在下一個請求中發送給伺服器。

loadrunner 腳本優化-關聯設定

伺服器每次接收到使用者名和密碼的登入請求後傳回新的SessionID,但是回放腳本時,仍然發送舊的SessionID給伺服器,最終因新的SessionID和舊的SessionID不一緻,導緻腳本回放失敗。

也就是說,錄制的腳本中的SessionID是固定不變的,而伺服器傳回的SessionID是根據登入請求動态變化的。由此産生了問題。為了確定腳本回放的成功,我們需要獲得伺服器每次傳回的動态SessionID,再将這個動态參數發回給伺服器。而關聯則可以做到這點。關聯通過web_reg_save_param()函數來實作,這個函數可以幫助我們完成對伺服器傳回的儲存操作。

注意:

關聯函數是一個注冊型函數,需要告訴VuGen下一個請求傳回是需要被處理的。是以該函數必須要寫在請求前,如下,否則就會提示無法獲得關聯結果的錯誤。這時絕大多數使用關聯的新手最容易犯錯的錯誤。

Action()

{

//在請求前添加關聯函數

web_url(“localhost:8081”,”URL=http://localhost:8081/”,LAST);

return

0;

}

關聯的方式

關聯就是對伺服器的傳回做處理的過程,而關聯方式有3種:

自動關聯

手動關聯

一邊錄制一邊關聯

VuGen提供的自動關聯處理政策,它的原理是對同一腳本運作和錄制時的所有伺服器傳回進行比較,來自動查找變化的部分,并且提示是否生成關聯。

注意:使用自動關聯前必須先運作一次腳本。

點選Vuser->Scan

Script for Correlations

loadrunner 腳本優化-關聯設定

彈出如下,

loadrunner 腳本優化-關聯設定

點選

Yes,進行關聯掃描

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

如上圖,如果有可關聯的對象則會顯示在上圖的關聯結果中

如有資料的情況下,單擊Correlate按鈕後,則生成一個關聯,關聯的前後内容和所屬Action也被列出來。自動關聯結束。腳本中會自動添加關聯函數web_reg_save_param_*函數并将被關聯的内容儲存到一個叫參數中去

回放腳本,如果還有其他關聯引起的錯誤,重複上述操作。

自動關聯是通過錄制和回放時的伺服器傳回值比較确定需要關聯的内容,然後再幫助生成對應的關聯函數,常用在非标準的動态資料進行中。如sessionid,在大多數情況下,腳本無法正常回放都可以通過自動掃描的方法來生成關聯,解決動态資料的問題。

但是自動關聯有很強的局限性,無法實作特殊的動态資料捕獲,例如文章的id,作者名等,這個時候就需要手動關聯來解決它了。

通過web_reg_save_param()将想要的字元串儲存到一個參數中。進而捕獲從伺服器傳回的标題或正文的文本内容,也可以用來捕獲伺服器傳回的超連結。

通常情況下,關聯的對象一般都是選擇連結位址而不是連結名,這樣可確定在以後的使用中比較簡單

打開錄制選項(Tools->Correlation選項),錄制選項時建議大家在初期都将Enable選項去掉。禁止這個功能的使用。

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

這裡Vugen提供了一些常見應用需要做的關聯規則,這些規則有效解決了錄制腳本後回放失敗的問題,但是同時也帶來弊端。例如:如果需要錄制的項目使用了和規則十分相似的資料傳回格式,而開發又在其中寫了一些自定義的不規範内容,就會導緻VuGen錯誤關聯資料,使本來能夠回放成功的腳本由于添加了錯誤的自動關聯而無法正常回放。

如何設定一個自定義的新規則

單擊New

Application按鈕,建立一個應用

點選剛建的應用,單擊New

Rule建立一個規則

填寫規則的左邊界,右邊界等

建立一個腳本,重新錄制,系統會自動按照規則生成關聯函數。

手動關聯舉例

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

将滑鼠移動到添加關聯的函數中的指定位置,然後選擇Insert->New

Step選項(或右鍵也可以),在系統彈出Add

Step視窗中查找關聯函數,如下圖

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

點選OK後,彈出如下圖

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

填寫如下

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

點選确定後,在腳本中光标所在的地方添加如下web_reg_save_param函數

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

關聯函數的作用,通過一種規則将伺服器的傳回儲存到一個參數中,是以為了看到參數的内容,應打開參數取值的日志選項

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

注意:每一句“Notify:Saving

Parameter temp=”後面都是被關聯到的伺服器傳回,我們會發現傳回不止一條。具體分析會發現,被關聯到的内容有以下幾種:

1.HTML

2.CSS

3.JavaScript

4.JPEG、PNG、GIF

也就是說,通過這個函數獲得了伺服器所有的傳回内容。

對于圖檔和CSS等内容其實一般都不是我們關心的,系統的動态資料需要關聯的伺服器傳回資訊一般都儲存在HTML正文中。是以接着修改一下關聯函數,将Search

In選項從ALL修改為Noresource,也就是隻要關聯HTML、XML等資源而不關聯附屬的資訊。

修改Search

In選項為Noresource

切換到Tree模式下,輕按兩下“Reg

Save Param”函數

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

改好了代碼自動變為如下

web_reg_save_param(”temp”,

“LB=”,

“RB=”,

“Ord=1”,

“Search=Noresource”,

LAST

);

可以看到被關聯内容隻有一個了,而且就是伺服器傳回的HTTP包中的正文内容,和通過VuGen看到的伺服器傳回内容完全相同,這個傳回是儲存在一個叫temp的參數中。

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

整個HTTP請求分為兩段,一段是開頭資料包,叫做header,另外一段是HTML頁面,叫做body。在“Search”選項中可以修改為Header或者body來更加精确地劃分關聯範圍。

通常,我們還是使用Noresource來處理關聯範圍,因為這樣可以得到最常用的傳回内容。得到了伺服器傳回的内容,接着就可以做任何想做的事情,如獲得頁面中的任意一個對象。

關聯函數提供了一個叫做左邊界、右邊界的政策,隻需要填寫這個規則,它會在整個被關聯範圍内查找符合該規則的内容。

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

如上,修改關聯函數。修改關聯函數方法:

1.直接在代碼上修改

2.切換到Tree模式下,輕按兩下關聯函數,在Lef

Boundary/Right Boundary中輸入條件,修改關聯函數。

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

點選OK後,如下

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

運作結果:

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

如下,定位Web

Tours

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

注意:輸出結果前後有空格

解決方法,在左邊界和右邊界都添加空格

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

輸出結果:

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

注意:關聯函數的結果需要請求結束後才能獲得,是以提取關聯結果參數的值必須在請求後,而關聯函數必須在請求前。

尋找關聯點

由于我們在通路請求前設定規則,伺服器傳回的動态内容都會被關聯函數捕獲并且儲存到參數中,這樣實作了對動态資料的捕獲,通過後期處理過程,即可完成對動态對象的操作。

以下字元串最可能需要關聯

*

登入字元串.一個帶有動态資料的登入字元串,比如session

ID或一個時間戳timestamp.

* Date/Time

Stamp.任何使用了日期或時間戳time

stamp,或者其他使用者憑證的字元串

* Common

Prefix.

帶有特征字元串的字首,如SessionID或CustomerID,。

#查找需要關聯的值

方法1:通過比較腳本

1.錄制并儲存腳本.

2.建立另一個腳本并錄制關鍵操作,儲存腳本。

3.選擇Tools

> Compare with Script來比較腳本

4.腳本中的不同點被高亮。重新審視不同點來判斷哪些需要關聯。

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定

方法2:回放日志查找

a

掃描腳本視圖中的腳本,查找可能需要管理的字元串,如哈希字元串,随機字元串,會話id等。

b

在腳本生成日志中,查找字元串(伺服器傳回的字元串)第一次出現的時間。

c

擴充回放日志中查找同樣的字元串。檢查同一個邊界上,伺服器傳回是否包含不同字元串。如果是則需要關聯。

作者:授客

QQ:1033553122

全國軟體測試QQ交流群:7156436

Git位址:https://gitee.com/ishouke

友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!

作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!

           微信打賞                       

支付寶打賞                  全國軟體測試交流QQ群  

loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定
loadrunner 腳本優化-關聯設定