如何在腳本中做關聯 (Correlation)
當錄制腳本時,VuGen會攔截client端(瀏覽器)與server端(網站服務器)之間的對話,并且通通記錄下來,產生腳本。在VuGen的Recording Log中,您可以找到瀏覽器與服務器之間所有的對話,包含通訊內容、日期、時間、瀏覽器的請求、服務器的響應內容等等。腳本和Recording Log最大的差別在于,腳本只記錄了client端要對server端所說的話,而Recording Log則是完整紀錄二者的對話。
當執行腳本時,您可以把VuGen想象成是一個演員,它偽裝成瀏覽器,然后根據腳本,把當初真的瀏覽器所說過的話,再對網站伺服器重新說一遍,VuGen企圖騙過服務器,讓服務器以為它就是當初的瀏覽器,然后把網站內容傳送給VuGen。
所以紀錄在腳本中要跟服務器所說的話,完全與當初錄制時所說的一樣,是寫死的(hard-coded)。這樣的作法在遇到有些比較聰明的服務器時,還是會失效。這時就需要透過「關聯(correlation)」的做法來讓VuGen可以再次成功地騙過服務器。
何謂關聯(correlation)?
所謂的關聯(correlation)就是把腳本中某些寫死的(hard-coded)數據,轉變成是擷取自服務器所送的、動態的、每次都不一樣的數據。
舉一個常見的例子,剛剛提到有些比較聰明的服務器,這些服務器在每個瀏覽器第一次跟它要數據時,都會在數據中夾帶一個唯一的辨識碼,接下來就會利用這個辨識碼來辨識跟它要數據的是不是同一個瀏覽器。一般稱這個辨識碼為Session ID。對于每個新的交易,服務器都會產生新的Session ID給瀏覽器。這也就是為什么執行腳本會失敗的原因,因為VuGen還是用舊的Session ID向服務器要數據,服務器會發現這個Session ID是失效的或是它根本不認識這個Session ID,當然就不會傳送正確的網頁數據給VuGen了。
下面的圖示說明了這樣的情形:
當錄制腳本時,瀏覽器送出網頁A的請求,服務器將網頁A的內容傳送給瀏覽器,并且夾帶了一個ID=123的數據,當瀏覽器再送出網頁B的情求時,這時就要用到ID=123的數據,服務器才會認為這是合法的請求,并且把網頁B的內容送回給瀏覽器。
在執行腳本時會發生什么狀況?瀏覽器再送出網頁B的請求時,用的還是當初錄制的ID=123的數據,而不是用服務器新給的ID=456,整個腳本的執行就會失敗。
要對付這種服務器,我們必須想辦法找出這個Session ID到底是什么、位于何處,然后把它擷取下來,放到某個參數中,并且取代掉腳本中有用到Session ID的部份,這樣就可以成功騙過服務器,正確地完成整個交易了。
哪些錯誤代表著我應該做關聯(correlation)?
假如腳本需要關聯(correlation),在還沒做之前是不會執行通過的,也就是說會有錯誤訊息發生。不過,很不幸地,并沒有任何特定的錯誤訊息是和關聯(correlation)有關系的。會出現什么錯誤訊息,與系統實做的錯誤處理機制有關。錯誤訊息有可能會提醒您要重新登入,但是也有可能直接就顯示HTTP 404的錯誤訊息。
要如何做關聯(correlation)?
關聯(correlation)函數
關聯(correlation)會用到下列的函數:
• web_reg_save_param:這是最新版,也是最常用來做關聯(correlation)的函數。
語法:
web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST );
• web_create_html_param、web_create_html_param_ex:這二個函數主要是保留作為向前兼容的目的的。建議使用 web_reg_save_param 函數。
詳細用法請參考使用手冊。在VuGen中點選【Help】>【Function reference】>【Contexts】>【Web and Wireless Vuser Functions】>【Correlation Functions】。
如何找出要關聯(correlation)數據
簡單的說,每一次執行時都會變動的值,就有可能需要做關聯(correlation)。
VuGen提供二種方式幫助您找出需要做關聯(correlation)的值:
1. 自動關聯
2. 手動關聯
自動關聯
VuGen內建自動關聯引擎(auto-correlation engine),可以自動找出需要關聯的值,并且自動使用關聯函數建立關聯。
自動關聯提供下列二種機制:
• Rules Correlation:在錄制過程中VuGen會根據訂定的規則,實時自動找出要關聯的值。規則來源有兩種:
o 內建(Built-in Correlation):
VuGen已經針對常用的一些應用系統,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,內建關聯規則,這些應用系統可能會有一種以上的關聯規則。您可以在【Recording Options】>【Inte.net Protocol】>【Correlation】中啟用關聯規則,則當錄制這些應用系統的腳本時,VuGen會在腳本中自動建立關聯。
您也可以在【Recording Options】>【Internet Protocol】>【Correlation】檢視每個關聯規則的定義。
o 使用者自訂(User-defined Rules Correlation):
除了內建的關聯規則之外,使用者也可以自訂關聯規則。您可以在【Recording Options】>【Internet Protocol】>【Correlation】建立新的關聯規則。
• Correlation Studio:有別于Rules Correlation,Correlation Studio則是在執行腳本后才會建立關聯,也就是說當錄制完腳本后,腳本至少須被執行過一次,Correlation Studio才會作用。Correlation Studio會嘗試找出錄制時與執行時,服務器響應內容的差異部分,藉以找出需要關聯的數據,并建立關聯。
Rule Correlation
請依照以下步驟使用Rule Correlation:
1. 啟用auto-correlation
1. 點選VuGen的【Tools】>【Recording Options】,開啟【Recording Options】對話窗口,選取【Internet Protocol】>【Correlation】,勾選【Enable correlation during recording】,以啟用自動關聯。
2. 假如錄制的應用系統屬于內建關聯規則的系統,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,請勾選相對應的應用系統。
3. 或者也可以針對錄制的應用系統加入新的關聯規則,此即為使用者自訂的關聯規則。
4. 設定當VuGen偵測到符合關聯規則的數據時,要如何處理:
【Issue a pop-up message and let me decide online】:跳出一個訊息對話窗口,詢問您是否要建立關聯。
【Perform correlation in sceipt】:直接自動建立關聯
文章來源于領測軟件測試網 http://www.kjueaiud.com/